Как я могу поместить параметр в локализованную строку в 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 - текущее время

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