Локализация
Описание
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);