Перейти к основному содержимому
Версия: 5.x

Интернационализация

Интернационализация - это приемы разработки программного обеспечения, позволяющие адаптировать его к языковым и культурным особенностям различных стран и регионов.

Локаль

Локаль - это набор параметров, определяющий региональные настройки, такие как:

  • Язык
  • Страна (в свою очередь определяет форматы отображения чисел, дат)
  • Часовой пояс
  • Год, с которого будет начинаться 100-летний период, в случае если год задан двузначным числом

Форматы задания параметров локали

Язык и страна задаются в стандартном Java формате. Например, язык может быть задан с помощью строк ru, en, fr, а страна соответственно RU, US, CA. Часовой пояс задается в формате, поддерживаемом Java методом TimeZone.getTimeZone (примеры: PST, Europe/Minsk, GMT-8:00). Год задается как число (пример: 1960).

Определение текущей локали

Локаль сервера определяется локалью по умолчанию JVM, в которой этот сервер стартует (а именно параметрами запуска user.language, user.country, user.timezone, user.twoDigitYearStart). Параметры этой локали автоматически при старте сервера приложений сохраняются в следующие свойства:

Параметр локалиПараметр запускаСвойство
Языкuser.languageAuthentication.serverLanguage[]
Странаuser.countryAuthentication.serverCountry[]
Часовой поясuser.timezoneAuthentication.serverTimezone[]
Год начала 100-летнего периодаuser.twoDigitYearStartAuthentication.serverTwoDigitYearStart[]

Локаль сервера используется в качестве текущей, когда действие, в котором осуществляется локализация, инициировано системой, а не каким-то конкретным пользователем (то есть текущим пользователем считается системный пользователь).

В остальных случаях текущая локаль определяется значениями следующих свойств (в качестве параметра передается пользователь, который инициировал действие):

ПараметрСвойство
ЯзыкAuthentication.language[CustomUser]
СтранаAuthentication.country[CustomUser]
Часовой поясAuthentication.timezone[CustomUser]
Год начала 100-летнего периодаAuthentication.twoDigitYearStart[CustomUser]

В текущей реализации платформы вышеперечисленные свойства позволяют, как использовать параметры локали операционной системы пользователя, так и задать эти параметры явно для конкретных пользователей, или, к примеру, использовать для всех пользователей локаль сервера (именно такое поведение используется по умолчанию).

Локализация строковых данных

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

Создание локализуемых строк осуществляется следующим образом: в строке вместо текста, который необходимо локализовать, указывается идентификатор строковых данных, заключенный в фигурные скобки (например, '{button.cancel}'). При передаче этой строки клиенту на сервере осуществляется поиск всех встречаемых в строке идентификаторов, затем осуществляется поиск каждого из них во всех ResourceBundle файлах проекта в нужной локали, и при нахождении идентификатор в скобках заменяется на соответствующий текст.