Локализация в СУБД Caché классов, веб-приложений, исключений, консольных программ и т.д.
Этот же пост доступен и на хабре.
Предположим, Вы написали программу, выводящую "Hello, World!", например:
Всё хорошо до поры до времени.
Потом обстоятельства меняются и Вам нужно эту же строку вывести уже на другом языке, причём количество и состав требуемых языков заранее неизвестен.
Как можно поступить проще, учитывая что:
• в программе таких строчек может быть очень много;
• пользователи в любой момент могут поменять язык сессии?
Краткий обзор
В СУБД Caché предусмотрен готовый механизм, упрощающий локализацию строк в консольных программах, интерфейса в веб-приложениях, строк в файлах JavaScipt, сообщений об ошибках и т.д.
Данная тема была рассмотрена вскользь в одной из предыдущих статей данного блога.
Допустим, имеется проект со множеством классов, программ, веб-страничек, js-скриптов и т.д.
Работает механизм локализации следующим образом:
1) ещё на этапе компиляции проекта "выуживаются" все строки, подлежащие локализации, и сохраняются внутри базы в определённом формате.
2) в сам откомпилированный код вместо самих строк подставляется определённый код, который уже на этапе выполнения будет в зависимости от текущего языка сессии выдавать из хранилища то или иное значение.
Весь процесс локализации полностью прозрачен для программиста.
Разработчик избавляется от необходимости ручного заполнения некоего хранилища строк (таблицы в БД или ресурсного файла), а также от написания кода по управлению всей этой инфраструктурой, как то: смена языка во время исполнения, экспорт/импорт данных в различные форматы для переводчика и т.д.
В итоге мы имеем:
1) читаемый - незагромождённый лишним - исходный код;
2) автоматически наполняемое хранилище локализуемых строк;
3) смену текущего языка "на лету". Это касается как веб-приложений, так и обычных программ;
4) возможность получить строку на заданном языке, из заданного домена (о доменах чуть ниже);
5) готовые методы по экспорту/импорту хранилища в XML.
Итак, давайте рассмотрим детальнее, как это работает, а также всевозможные примеры по локализации.
читать дальше...
Предположим, Вы написали программу, выводящую "Hello, World!", например:
write "Hello, World!" |
Потом обстоятельства меняются и Вам нужно эту же строку вывести уже на другом языке, причём количество и состав требуемых языков заранее неизвестен.
Как можно поступить проще, учитывая что:
• в программе таких строчек может быть очень много;
• пользователи в любой момент могут поменять язык сессии?
В СУБД Caché предусмотрен готовый механизм, упрощающий локализацию строк в консольных программах, интерфейса в веб-приложениях, строк в файлах JavaScipt, сообщений об ошибках и т.д.
Данная тема была рассмотрена вскользь в одной из предыдущих статей данного блога.
Допустим, имеется проект со множеством классов, программ, веб-страничек, js-скриптов и т.д.
Работает механизм локализации следующим образом:
1) ещё на этапе компиляции проекта "выуживаются" все строки, подлежащие локализации, и сохраняются внутри базы в определённом формате.
2) в сам откомпилированный код вместо самих строк подставляется определённый код, который уже на этапе выполнения будет в зависимости от текущего языка сессии выдавать из хранилища то или иное значение.
Весь процесс локализации полностью прозрачен для программиста.
Разработчик избавляется от необходимости ручного заполнения некоего хранилища строк (таблицы в БД или ресурсного файла), а также от написания кода по управлению всей этой инфраструктурой, как то: смена языка во время исполнения, экспорт/импорт данных в различные форматы для переводчика и т.д.
В итоге мы имеем:
1) читаемый - незагромождённый лишним - исходный код;
2) автоматически наполняемое хранилище локализуемых строк;
Примечание |
---|
При удалении строк из кода из хранилища они не удаляются. Для очистки хранилища от таких фантомов проще его очистить и заново перекомпилировать проект. |
4) возможность получить строку на заданном языке, из заданного домена (о доменах чуть ниже);
5) готовые методы по экспорту/импорту хранилища в XML.
Итак, давайте рассмотрим детальнее, как это работает, а также всевозможные примеры по локализации.
читать дальше...