2012-03-16 9 views
10

Potrzebuję umieścić dynamiczny fragment tekstu w zlokalizowanym łańcuchu, ale musi on przejść do różnych lokalizacji w zależności od języka.Jak umieścić parametr w zlokalizowanym ciągu znaków w systemie Android?

Na przykład, muszę dwa ciągi typu:

angielskim: Obecny czas to HH: mm: ss innym języku: HH: mm: ss jest obecny czas

mogę myśleć o jednym podejście, które ma mieć preDate i postDate zlokalizowane ciągi, w których postDate jest puste w języku angielskim, a preDate jest puste w Other. To zadziała, ale nie wydaje się zbyt eleganckie ani skalowalne.

Czy jest lepszy sposób to zrobić?

Odpowiedz

33

Używam tego w moim zasobie napisów.

<string name="duration"><xliff:g id="minutes" example="42" >%s</xliff:g> mins <xliff:g id="seconds" example="28" >%s</xliff:g> secs</string> 

która drukuje xx minut yy sek kiedy zadzwonić:

getString(R.string.duration, minutes, seconds); 

w innym języku, można przełożyć go przez zmianę położenia minut i sekund. Należy wydrukować, na przykład: min xx sekund yy

Schemat powinien zawierać w nagłówku:

<resources xmlns:xliff="rn:oasis:names:tc:xliff:document:1.2"> 
+0

wygląda obiecująco, ale kiedy wklej to do mojego strings.xml, otrzymuję ten błąd: 'błędu: Błąd parsowania XML: Bez ograniczeń prefix' – brianestey

+3

Możesz chcieć obejmować xmlns: xliff w nagłówku. – Calvin

+0

To załatwiło sprawę. Przyjąłem już drugą odpowiedź, ale dałem wam także upomnienie. – brianestey

0

myślę robisz właściwą drogę.

Inny nie tak dobre roztw jest, jeśli można umieścić cały ciąg formatu w zasoby jak

angielskim: Obecny czas to% d:% d:% d innym języku:% d:% d:% d jest Bieżący czas

Generalnie nie podoba mi się to podejście, ponieważ teraz twój kod jest podzielony na dwa miejsca.

27

Prawidłowe android Format ciągi XML jest <string name="tst">string %1$s integer %2$d</string>

+2

Próbowałem tego i działało jak czar! Dzięki. – brianestey

+0

Działa idealnie, dziękuję bardzo za różnicę String i Integer –

Powiązane problemy