Как я могу поместить параметр в локализованную строку в Android? - PullRequest
9 голосов
/ 16 марта 2012

Мне нужно поместить динамический фрагмент текста в локализованную строку, но он должен располагаться в разных местах в зависимости от языка.

Например, мне нужны две строки, такие как:

Английский: текущее время - ЧЧ: мм: сс. Другой язык: ЧЧ: мм: сс - текущее время.

Я могу придумать один подход: использовать локализованную строку preDate и postDate, где postDate пустна английском языке и preDate пуст в другом.Это будет работать, но не будет выглядеть элегантно или масштабируемо.

Есть ли лучший способ сделать это?

Ответы [ 3 ]

33 голосов
/ 16 марта 2012

Я использую это в своем строковом ресурсе.

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

Который печатает xx мин yy сек при звонке:

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

На другой язык вы можете перевести его, изменив местоположение минут и секунд. Он должен напечатать, например: mins xx secs yy

Схема должна быть включена в заголовок:

<resources xmlns:xliff="rn:oasis:names:tc:xliff:document:1.2">
28 голосов
/ 16 марта 2012

Правильный формат строки xml для Android: <string name="tst">string %1$s integer %2$d</string>

0 голосов
/ 16 марта 2012

Я думаю, вы поступаете правильно.

Другое, не очень хорошее решение - если поместить всю строку формата в такие ресурсы, как

Английский: текущее время% d:% d:% d Другой язык:% d:% d:% d текущее время

Мне вообще не нравится этот подход, так как теперь ваш код форматирования разделен на две части.

...