Вход:  Пароль:  
FreeSource: Мусорка/AltLinux?/Sisyphus?/Alterator?/international ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Многоликий и Многоязыкий


Традиционное свойство приложений – способность разговаривать с пользователем на его языке, есть и в alterator.


Рассмотрим всё на примере документа состоящего из одной единственной метки с текстом. Одноязычная версия подобного документа выглядит следующим образом:


Идея многоязычности проста и одинакова на всех платформах, от Windows и Java, до Linux и Alterator. Создаётся некий контейнер ресурсов и вместо прямого использования строк, применяются ссылки на требуемые строки в контейнере. Надо поменять язык – просто меняется контейнер. Отличается на разных платформах только формат контейнера.


В Alterator используется стандартный для Linux формат контейнера, предлагаемый пакетом gettext. Поэтому вы можете пользоваться всеми благами предоставляемыми знакомыми утилитами – xgettext, msgfmt, msgmerge и т.д.


Работа с ресурсами начинается с создания окружением with-translation, с параметрами:
* селектор из ресурсов – имя функции посредством которой вы будете в последствии вытаскивать строки из базы ресурсов.
* имя контейнера ресурсов – без полного пути и суффикса mo.


Внутри заданной среды Вам будет доступен определённый селектор. Таким образом вы можете внутри документа определить несколько сред работающих с разными контейнерами ресурсов. В большинстве случаев требуется только один.


Удобно поспользоваться упрощённым способом задания среды при помощи инструкции document:envelop?:


В примере выше мы будем пользоваться контейнером “alterator-users” и обращаться к нему через селектор “_".
Вот в общем-то и всё! Осталось разобраться с правилами выбора того или иного контейнера ресурсов.


Правило выбора контейнера существенно зависит от типа интерфейса.
В GUI определяющим является набор переменных окружения – LANGUAGE, LC_ALL, LC_MESSAGES и LANG.
В HTML предпочитаемый язык задаёт web-браузер или пользователь непосредственно при открытии сессии.


В каждом драйвере итерфейса определяется фунция которая задаёт список предпочитаемых языков в порядке убывания важности. По этому списку производится поиск контейнеров и возвращается первый найденный.



 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]