Как я могу поместить параметр в локализованную строку в Android?
Мне нужно поместить динамический фрагмент текста в локализованную строку, но он должен идти в разных местах в зависимости от языка.
Например, мне нужны две строки:
Русский: Текущее время: HH: mm: ss
Другой язык: HH: mm: ss - текущее время
Я могу думать об одном подходе, который должен иметь локализованную строку preDate и postDate, где postDate пуст на английском языке, а preDate пуст в Other. Это будет работать, но не кажется очень элегантным или масштабируемым.
Есть ли лучший способ сделать это?
Ответы
Ответ 1
Я использую это в своем строчном ресурсе.
<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 mins yy secs при вызове:
getString(R.string.duration, minutes, seconds);
На другом языке вы можете перевести его, изменив местоположение минут и секунд.
Он должен печатать, например: mins xx secs yy
В заголовок должна быть включена схема:
<resources xmlns:xliff="rn:oasis:names:tc:xliff:document:1.2">
Ответ 2
Корректный формат строк в XML файлах <string name="tst">string %1$s integer %2$d</string>
Ответ 3
Я думаю, что вы делаете правильный путь.
Другое не очень хорошее солн, если вы введете всю строку формата в ресурсы, например
Русский: Текущее время:% d:% d:% d Другой язык:% d:% d:% d - текущее время
Мне вообще не нравится этот подход, так как теперь ваш код форматирования разбивается на два места.