Словарь перевода

Терминология

  • Ключ — произвольный набор символов, который используется для обозначения локализуемого ресурса. В нашей компании в качестве ключей используются человекочитаемые строки на удобном для разработчика языке.

    Пример ключа:

    "Неправильный логин или пароль".

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

Комментарий В мобильной разработке необходимо использовать символы латинского алфавита.

  • Перевод — текст на некотором языке, которому можно сопоставить некоторый ключ.

    Пример пары ключ-перевод:

    "Неправильный логин или пароль": "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, с помощью которой производят поиск локализуемых строк, назначение переводов и создание словарей. Использование утилиты позволяет исключить появление ошибок при работе со словарями переводов, поэтому данный способ предпочтителен к использованию разработчиками веб-приложений.

Доступ к утилите производится из меню ProjectTranslate.

В опции "Target language (localization)" выберите язык, для которого требуется составить словари переводов.

Далее в опции "Target module" выберите целевой модуль (сервисный или интерфейсный), данные которого нужно перевести. По умолчанию используются все модули проекта.

После в "Таблице переводов" будет представлен список строк, найденных среди статических и динамических данных. Если в модулях уже существуют словари переводов под выбранный язык локализации, то их данные (локализуемая строка — контент — перевод) также будут отображены в таблице. В таблице нельзя добавлять, удалять или редактировать строки и контекст перевода. Можно назначить перевод в колонке "TRANSLATION". После установки перевода будут автоматически созданы словари.

При создании словарей для контролов в их JS-модули прописываются зависимости от плагина i18n. Плагин используется для ассоциации словарей с компонентом (см. Реализация механизма интернационализации).

Создание словарей переводов вручную для интерфейсных модулей

Для интерфейсных компонентов словари переводов располагаются в [директория интерфейсного модуля]/lang/[язык]/ (см. Языки. Локаль). В словарях хранятся переводы для всех компонентов, что расположены внутри интерфейсного модуля. Имена словарям задаются в соответствии с требованиями к структуре словарей.

Соблюдайте структуру словарей как в cхеме ниже.

lang
└───[директория локали]
     └───[общий словарь]
     └───[региональный словарь]

Чтобы вручную создать словари необходимо:

  1. В директории интерфейсного модуля создать каталог lang.
  2. В каталоге lang создать каталог с наименованием локали перевода. Например: en
  3. Создайте общий словарь.
  4. Внутри каталога локали создайте региональные словари.
  5. Заполните словари руководствуясь требованиями к структуре словарей.

Словарь переводов — это JSON-файл, в котором в качестве ключа выступает локализуемая строка, а значением является перевод. Например, словарь en.json (на изображении выше) имеет следующее содержимое:

{
   "+ Изображение": "+ Image",
   "0% первый взнос.": "0% down payment",
   "Вопрос:": "question",
   "Главная страница": "Index page",
   "Название": "Name",
   "Сайт": "Site",
   "Сохранить": "Save",
   "тест": "test"
}

Создание словарей переводов вручную для сервисных модулей

Для сервисных модулей словари переводов располагаются в [директория сервисного модуля]/lang/.

Соблюдайте структуру словарей как в cхеме ниже.

lang
└───[общий словарь]
└───[региональный словарь]

Чтобы вручную создать словари необходимо:

  1. В директории сервисного модуля создать каталог lang.
  2. Внутри каталога локали создайте общий словарь.
  3. Там же создайте региональные словари.
  4. Заполните словари руководствуясь требованиями к структуре словарей.