Локализация

Описание

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

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

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

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

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

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

или проинициализировав карту со следующей опцией currentLang.

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

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

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);