То, как делают Вы обрабатываете интернационализацию для “Своего входа 'xyz', превосходно!”

Я хотел бы знать то, что является правильным способом обработать интернационализацию для операторов с данными во время выполнения, добавленными к нему. Например 1) Ваш вход "xyz" превосходен! 2) Вы были "4 годами", старыми, когда Вы переключились от "Barney и Freinds" к шоу "Губки Боба".

Двойные заключенные в кавычки значения являются пользовательскими данными, полученными или расчетными во время выполнения. Мои платформы являются, прежде всего, Java/Android. Правильное решение для Западных языков предпочтено по более слабому универсальному.

9
задан dipu 21 July 2010 в 15:04
поделиться

3 ответа

Java

Для получения локализованного текста (сообщений) используйте API java.util.ResourceBundle . Для форматирования сообщений используйте java.text.MessageFormat API.

По сути, сначала создайте файл свойств следующим образом:

key1 = Your input {0} is excellent!
key2 = You were {0} old when you switched from {1} to {2} shows.

Элементы {n} являются заполнителями для аргументов, которые вы можете передать с помощью MessageFormat # format ( ) .

Затем загрузите его так:

ResourceBundle bundle = ResourceBundle.getBundle("filename", Locale.ENGLISH);

Затем, чтобы получить сообщения по ключу, выполните:

String key1 = bundle.getString("key1");
String key2 = bundle.getString("key2");

Затем, чтобы отформатировать его, выполните:

String formattedKey1 = MessageFormat.format(key1, "xyz");
String formattedKey2 = MessageFormat.format(key2, "4 years", "Barney and Friends", "Spongebob");

См. Также:


Android

Что касается Android, то процесс проще. Вам просто нужно поместить все эти сообщения String в файл res / values ​​/ strings.xml . Затем вы можете создать версию этого файла на разных языках и поместить файл в папку values ​​, содержащую код языка. Например, если вы хотите добавить поддержку испанского, вам просто нужно создать папку с именем res / values-es / и поместить туда испанскую версию вашего strings.xml . Android автоматически решит, какой файл использовать, в зависимости от конфигурации телефона.

См. Также:

12
ответ дан 4 December 2019 в 13:44
поделиться

Одно нетехническое соображение. Встраивание бесплатных данных в английские фразы не будет выглядеть очень гладко во многих культурах (включая западные), где вам нужно грамматическое согласие, например. число, пол или регистр. Обычно помогает более телеграфный стиль (например, отличный ввод: «xyz») - тогда, по крайней мере, все получают одинаковый уровень неуклюжести!

3
ответ дан 4 December 2019 в 13:44
поделиться

Я думаю, что, вероятно, придется определить свою форматную строку, чтобы она включала функцию "1-of-N", желательно определенную так, чтобы упростить общие случаи (например, множественные числа). Например, определить {0#string1/string2/string3} для вывода строки1, если параметр 0 равен нулю или меньше, строки2, если он точно равен 1, и строки3, если он больше 1}. Тогда можно сказать: "У вас в ящике {0} {0#ножи/нож/ножи}"

.
0
ответ дан 4 December 2019 в 13:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: