Словарь перевода
Терминология
Ключ — произвольный набор символов, который используется для обозначения локализуемого ресурса. В нашей компании в качестве ключей используются человекочитаемые строки на удобном для разработчика языке. Пример ключа:
"Неправильный логин или пароль".
Использование ключей на кириллице позволяет получать более понятный код без необходимости создания словаря на русском языке.
Комментарий В мобильной разработке необходимо использовать символы латинского алфавита.
Перевод — текст на некотором языке, которому можно сопоставить некоторый ключ.
Пример пары ключ-перевод:
"Неправильный логин или пароль": "Incorrect username or password"
Словарь перевода — это JSON-файл, в котором хранятся ключи и соответствующие им переводы на указанный язык. Ключи расположены в исходных файлах веб-приложения.
Пример общего словаря en.json, который содержит переводы на английский:
{
"Что нового?": "What's new?",
"ИмяРоли@@Аналитик": "Analyst",
"plural#запись(-и,-ей)": "record|records"
}
Особенности синтаксиса словарей
- Символами @@ разделяются контекст перевода и локализуемая строка.
Пример:
"ИмяРоли@@Аналитик": "Analyst"
- Для указания формы склонения слова в зависимости от числа используют следующую конструкцию:
"plural#запись(-и,-ей)": "record|records"
Правила именования словарей
- [язык].json языковые пакеты, с переводами, которые будут понятны всем пользователям указанного языка (общий словарь).
- [язык]-[СТРАНА].json (см. Кодовое обозначение локали) используется для хранения переводов, которые специфичны для конкретной страны. Такие словари предназначены для уточнения переводов, например для устранения различий в написании или формате денег и дат (региональный словарь).
Такая организация словарей позволяет гибко настраивать поведение приложения в зависимости от пользовательских предпочтений и устраняет необходимость создания множества словарей под все возможные комбинации языков и стран.
Требования к структуре словарей
При создании словарей необходимо руководствоваться следующими требованиями:
- Всегда должен быть общий словарь ( [язык].json ).
- Региональный словарь создается только если не подходит перевод из общего словаря.
- Все ключи из региональных словарей обязательно должны содержаться в общем словаре.
- Если модулю требуется перевод какой-то фразы, то эта фраза должна быть обязательно объявлена в словаре этого модуля.
- Для модулей интерфейса и бизнес логики (БЛ) необходимо создавать отдельные словари.
- Для сервисного модуля, в котором локализуют строки из пакетов данных, C++ или Python-файлов, создают один общий словарь.
Структура каталогов словарей интерфейсного модуля
Для контролов словари переводов должны быть расположены в папке [директория интерфейсного модуля]/lang/[язык]/
Пример
lang
└─── en
├─── en.json
└─── en-US.json
Структура каталогов словарей сервисного модуля
Для сервисных модулей словари переводов располагаются в директории [директория сервисного модуля]/lang/.
Пример
lang
├─── en.json
└─── en-US.json
Словари создают в утилите Translate (Окно назначения переводов). При назначении перевода, утилита автоматически создает в указанном модуле словарь перевода. Подробнее об использовании утилиты читайте здесь.
Если использование Genie невозможно, то словари переводов создают вручную.
При создании словаря обратите внимание
В словарях не должно быть html-тегов. Они будут экранированы при вставке в шаблон.
Создание словарей переводов в Genie. Утилита Translate
Translate (Окно назначения переводов) — это утилита, встроенная в Genie, которая осуществляет поиск локализуемых строк, назначение переводов и создание словарей в указанном модуле. Использование утилиты исключает появление ошибок при работе со словарями переводов. Данный способ создания словарей рекомендован к использованию.
Окно назначения переводов (Translate) — это утилита, встроенная в Genie, с помощью которой производят поиск локализуемых строк, назначение переводов и создание словарей. Использование утилиты позволяет исключить появление ошибок при работе со словарями переводов, поэтому данный способ предпочтителен к использованию разработчиками веб-приложений.
Доступ к утилите производится из меню Project → Translate.
В опции "Target language (localization)" выберите язык, для которого требуется составить словари переводов.
Далее в опции "Target module" выберите целевой модуль (сервисный или интерфейсный), данные которого нужно перевести. По умолчанию используются все модули проекта.
После в "Таблице переводов" будет представлен список строк, найденных среди статических и динамических данных. Если в модулях уже существуют словари переводов под выбранный язык локализации, то их данные (локализуемая строка — контент — перевод) также будут отображены в таблице. В таблице нельзя добавлять, удалять или редактировать строки и контекст перевода. Можно назначить перевод в колонке "TRANSLATION". После установки перевода будут автоматически созданы словари.
При создании словарей для контролов в их JS-модули прописываются зависимости от плагина i18n. Плагин используется для ассоциации словарей с компонентом (см. Реализация механизма интернационализации).
Создание словарей переводов вручную для интерфейсных модулей
Для интерфейсных компонентов словари переводов располагаются в [директория интерфейсного модуля]/lang/[язык]/ (см. Языки. Локаль). В словарях хранятся переводы для всех компонентов, что расположены внутри интерфейсного модуля. Имена словарям задаются в соответствии с требованиями к структуре словарей.
Соблюдайте структуру словарей как в cхеме ниже.
lang
└─── [директория локали]
├─── [общий словарь]
└─── [региональный словарь]
Чтобы вручную создать словари необходимо:
- В директории интерфейсного модуля создать каталог lang.
- В каталоге lang создать каталог с наименованием локали перевода. Например: en
- Создайте общий словарь.
- Внутри каталога локали создайте региональные словари.
- Заполните словари руководствуясь требованиями к структуре словарей.
Словарь переводов — это JSON-файл, в котором в качестве ключа выступает локализуемая строка, а значением является перевод. Например, словарь en.json (на изображении выше) имеет следующее содержимое:
{
"+ Изображение": "+ Image",
"0% первый взнос.": "0% down payment",
"Вопрос:": "question",
"Главная страница": "Index page",
"Название": "Name",
"Сайт": "Site",
"Сохранить": "Save",
"тест": "test"
}
Создание словарей переводов вручную для сервисных модулей
Для сервисных модулей словари переводов располагаются в [директория сервисного модуля]/lang/.
Соблюдайте структуру словарей как в cхеме ниже.
lang
├─── [общий словарь]
└─── [региональный словарь]
Чтобы вручную создать словари необходимо:
- В директории сервисного модуля создать каталог lang.
- Внутри каталога локали создайте общий словарь.
- Там же создайте региональные словари.
- Заполните словари руководствуясь требованиями к структуре словарей.