Локализация

Описание

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

По умолчанию задается такой же язык, как и у корневого тега html:

<html lang="it">
    <head></head>
    <body></body>
</html>

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

Получить или динамически изменить язык можно с помощью соответствующих методов карты setLang:

map.setLang('it');
map.getLang(); // вернет 'it'

На данный момент поддерживаются следующие языки:

  • en — английский;
  • ru — русский;
  • it — итальянский;
  • cs — чешский;
  • es — испанский.

DG.Locale

Осуществляет перевод пользовательского интерфейса.

Добавляет в карту два метода: setLang и getLang. Также имеется объект DG.Locale, который можно подмешать в любой внешний модуль, после чего в нем появится метод t, с помощью которого можно осуществить перевод. Классы модулей, к которым примешивается DG.Locale должны содержать внутри себя свойство _map и статическое свойство Dictionary.

Базовым для всех словарей является словарь DG.Dictionary, в котором хранятся правила перевода слов во множественные формы (plural rules). При создании модуля, использующего свои словари, необходимо их разместить в папке lang. К примеру, если вы будете использовать итальянский и русский языки, тогда необходимо создать файлы lang/it.js и lang/ru.js. Примеры создания словарей рассмотрены ниже.

Пример использования

Подмешивание (mixin) возможности локализации в модуль:

DG.LocaleExample = DG.Control.extend({
    includes: DG.Locale,
    statics: {
        Dictionary: {}
    }
    ...
}

Подписка на событие langchange:

this._map.on('langchange', this._updateText, this);

Перевод строки на текущий язык карты:

container.innerHTML = this.t("{n} people", 16700000) + ' ' + this.t("regularly use 2GIS");

Создание собственных словарей на итальянском и русском языках:

Cодержимое файла lang/it.js:

DG.LocaleExample.Dictionary.it = DG.extend({
    "{n} people" : ["{n} utente", "{n} utenti"],
    "regularly use 2GIS" : "utilizzano regolarmente 2GIS"
}, DG.Dictionary.it);

Cодержимое файла lang/ru.js:

 DG.LocaleExample.Dictionary.ru = DG.extend({
    "{n} people" : ["{n} пользователь", "{n} пользователя", "{n} пользователей"],
    "regularly use 2GIS" : "регулярно используют 2GIS"
}, DG.Dictionary.ru);