2016-01-25 15 views
16

Czy ktoś może wyjaśnić xliff:g dla ciągów/lokalizacji.Jak korzystać z Android xliff: g

Rozumiem, że xliff:g nie powinno tłumaczyć niczego wewnątrz rzeczy <>, ale nie rozumiem, jak dokładnie użyłbym tego w kodzie.

Przykładem mam w moim przypadku jest praktyka hiszpański tłumaczenia, że ​​mam posiada:

<string name="order_quantity">Cantidad: <xliff:g id="quantity" example="2">%d/xliff:g</string> 

Jestem teraz próbuje dostać zlokalizowane ciągi xliff:g do pracy. Co to jest id tutaj i co robi? I jak to się nazywa?

Co to jest %d i co robi? Jaki jest sens example? Ponadto, jak nazwałbym to w kodzie, jeśli w ogóle?

Dlaczego nie ktoś po prostu zrobić poniższy kod, aby wstawić następujące xml:

<string name="quant">Quantity: </string> 

do java tak:

getString(R.string.quant) + quantity 

tak, że droga to concactenates zmienną ilość do getString ?

Odpowiedz

24

Minor literówka w przykładzie, nie powinno być zamknięcie tag:

<string name="order_quantity">Cantidad: <xliff:g id="quantity" example="2">%d</xliff:g></string> 

Atrybut id jest tylko używana do określenia, co stanowi parametr substytucji (w Twoim przypadku, to reprezentuje ilość). Jest tak, jak powiedziałeś, notatką i nie jest używane programowo.

To powiedziawszy, w Androidzie Studio, jeśli masz włączone Składanie kodu dla ciągów znaków, zostanie ono zastąpione w ID, gdy pojawi się zwinięty ciąg znaków. Zobaczysz coś takiego:

// This... 
mTextView.setText(getString(R.string.order_quantity, 2)); 

// Will show as this when folded: 
mTextView.setText("Cantidad: {quantity}"); 

Jeśli chodzi o drugie pytanie, dlaczego nie po prostu użyć konkatenacji ciągów? W innych językach podstawienie może nie występować na końcu łańcucha. Można mieć coś takiego:

values/strings.xml 
    <string name="order_quantity">%d items</string> 

values-es/strings.xml 
    <string name="order_quantity">Cantidad: %d</string> 

Więc widać, że w tym przypadku po prostu dodanie sznurki razem nie daje poprawny wynik.

+0

Przepraszam za to. Ręcznie go napisałem. Jest to poprawne w rzeczywistych xml: p –

+0

Też miałem zamiar połączyć java, nie xml. Więc po prostu przetłumaczony ciąg w xml, a następnie połączyć wartość w java. –

+0

Znowu to nie zadziała, ponieważ w moim przykładzie parametr podstawienia znajduje się w innej pozycji (np. 3 elementy w porównaniu do pozycji: 3). – kcoppock

Powiązane problemy