Android: I18n с параметрами
Я знаю, что есть поддержка в Android для приложения 18n, но могу ли я указать параметры для такой строки? В Rails я могу сделать что-то вроде этого:
en:
hello: "Hello %{name}! You've got %{count} messages."
t("hello", name: "Klaus", count: 5)
Есть ли что-то подобное в Android или мне нужно сделать это самостоятельно?
Ответы
Ответ 1
Чтобы уточнить ответ Хайко и показать свой конкретный пример, если вы хотите иметь более одной строки, вам необходимо их число:
<string name="hello">Hello %1$s! You've got %2$d messages.</string>
Таким образом, вы можете переключать порядок строк в каждом переводе. С его помощью:
String hello = getString(R.strings.hello, "Klaus", 5);
Ответ 2
Вы можете сделать то же самое
В файле strings.xml вы можете поместить
<string name="xyz">Do you really want to report [%s] as spammer?</string>
а затем в вашем коде вы помещаете
String foo = getString(R.strings.xyz,"Joe Doe");
См. Context.getString()