Skip to end of metadata
Go to start of metadata

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

Локаль 

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

  • Язык
  • Страна (в свою очередь определяет форматы отображения чисел, дат)
  • Часовой пояс
  • Год, с которого будет начинаться 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 файлах проекта в нужной локали, и при нахождении идентификатор в скобках заменяется на соответствующий текст.

  • No labels