Переводы
Большинство текстов, используемых в системе вынесены в файлы перевода. После того, как все тексты будут вынесены, можно будет приступать к задаче локализации системы (если такая задача появится). Некоторые модули, например livefeed готовы к локализации и имеют в своем составе папку locales, в которой присутствуют как английская версия сообщений так и русская.
Система предоставляет следующие механизмы работы с локализацией.
Все модули могут иметь в своем составе файл lang.json, в котором в формате ключ-значение содержатся все переводы элементов интерфейса: служебные сообщения, информация об ошибках, название полей объектов, название кнопок и прочее.
Весь код реализован в модуле lang.
Чтобы получить название элемента согласно файлу переводов достаточно вызвать функцию Lang.Tr или её аналог Tr.
Модуль имеет иерархическое хранилище переводов, то есть если вы обращаетесь к переводу часто используемого слова, например "confirm", вам скорее всего не нужно будет его определять в своём модуле(хотя желательно, для того чтобы избежать ненужных зависимостей между модулями). При этом в качестве аргумента функции перевода можно указывать название модели, тогда перевод будет в первую очередь искаться именно в файле модели.
Примеры использования:
> Tr(["CodeDoc","CodeFormat"])
< (2) ["Код.Док", "Код.Формата"]
> Tr("CodeFormat")
< "Код.Формата"
> Tr("doc","CodeFormat")
< "Код.Формата"
Система предлагает использование custom binding-а lang
Пример использования:
<i class="ace-icon fa fa-floppy-o bigger-120 green"></i><span data-bind="lang:'save'"></span>
<i class="ace-icon fa fa-floppy-o bigger-120 red"></i><span data-bind="model:'workflow',lang:'forsesave'"></span>
Можно использовать вызов к функции, напрямую
<a data-bind='title:Lang.Tr("livefeed","deletemessage"),click:MLiveFeed.DeleteMessage'>
<i class="ace-icon fa fa-times"></i>
</a>
В планах - разработка интерфейса для совместного редактирования переводов. На данный момент, только собирается информация об использованных на текущей странице обращениях к модулю переводов
> Lang.OnPage
< Object {"techsupport":"Тех. Поддержка","orgchannel":"Общение внутри организации","Users":"Пользователи","NameUser":"ФИО","LoginUser":"Логин"}