Как интернационализировать приложение в Java? - PullRequest
1 голос
/ 20 февраля 2011

Я собираюсь интернационализировать мою программу, написанную на Java.Я ожидаю, что во время установки моей программы будут отображаться некоторые вопросы:

  1. В какой стране вы находитесь
  2. На каком языке вы предпочитаете (здесь должны быть предложены языки)выбранная страна
  3. Другие необходимые вопросы

После этого Программа сохранит в памяти всю необходимую информацию в виде:

  1. Используемая валюта
  2. Датаи Time способ отображения
  3. Другая необходимая (стандартная) информация

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

Был бы высоко оценен вклад кого-то, кто уже выполнял такую ​​работу для другой программы.

Ответы [ 3 ]

5 голосов
/ 20 февраля 2011

Наиболее распространенный способ в Java - это использование ResourceBundle .

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

Таким образом, чтобы редактировать эти файлы, просто используйте любой текстовый редактор.

1 голос
/ 20 февраля 2011

В Java вы обычно можете получить информацию о языке и стране с помощью вызова Locale.getLocale(). Это то, на что настроена система пользователя (или учетная запись). Тогда вам не нужно спрашивать в настройках, или, по крайней мере, вы можете предоставить хороший выбор по умолчанию для вашего пользователя.

Большая часть информации, такой как «обычный числовой формат» (включая валюту для денег) для множества локалей, уже включена в среду выполнения Java и может использоваться с использованием различных API, таких как NumberFormat, DateFormat, PrintWriter, Formatter, Collator и аналогичных. Посмотрите на страницу use для класса Locale, чтобы получить представление о том, что уже есть для вас (и что вам еще нужно сделать самостоятельно).

0 голосов
/ 21 февраля 2011

Я предполагаю, что вы имели в виду настольное приложение (из-за установщика). В этом случае начните думать о i18n, прочитав эту ссылку.

Что касается того, что вы написали, не имеет смысла спрашивать пользователя, где он находится. Вам также не нужно ничего хранить в памяти. Просто используйте текущие настройки локали, которые можно определить с помощью:

Locale currentLocale = Locale.getDefault();

Если у вас есть этот объект, вы можете легко форматировать дату, время, валюты и числа, используя соответствующие классы форматирования:

DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.getDefault());
DateFormat dateTimeFormatter = DateFormat.getDateTimeInstance(
                 DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.getDefault());
Date now = new Date();
String formattedDate = dateFormatter.format(now);
String formattedDateAndTime = dateTimeFormatter.format(now);

И т.д., просто прочитайте ссылку. Возможно, вам также потребуется поддержка сортировки с учетом локали (с помощью так называемых Collators) и интернационализации строк (с помощью ResourceBundle, упомянутого Augusto). Также вам нужно научиться MessageFormat форматировать составные строки (а не просто объединять их).

Это еще не все, i18n - это огромная тема, но это было бы хорошим началом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...