Powered by CodeIgniter

Интернационализация

При установке нового компонента системой импортируются языковые файлы из папки «lang».
Файл каждого языка должен иметь расширение .lng и название аббревиатуры языка, который он представляет.
Например, путь к файлу компонента, содержащем в себе русскую локализацию, выглядит так «lang/ru.lng».
Синтаксис файла идентичен синтаксису конфигурационных файлов (INI):
[gears] editor = "Редактор" editor_description = "Описание модуля 'Редактор'" [editor] button = "Кнопка" ... Важно отметить обязательный блок [gears], который должен содержать локализованные название и описание компонента.
Секции языкового файла каждого модуля должны иметь название уникальное по отношению к остальным секциям интернационализации движка во избежание слияния языковых переменных.
; Хорошо [editor] ... [editor_buttons] ... ; Плохо [editor] ... [buttons] При отключенном кеше информационная база интернационализации обновляется своевременно при обновлении любого из языковых файлов.
Перевод фраз осуществляется следующим образом.
/* * Языковой файл */ [test] hello = "Приветствую тебя, Гость!" /* * В коде контроллера, модели, библиотеки, хуков */ t('test.hello'); // равнозначно t('test hello'); // равнозначно t('test > hello'); // равнозначно t('!test hello'); /* * Вы можете задать активный раздел, чтобы не указывать его каждый раз явно */ d('test'); echo t('hello'); /* * Вызвав функцию d без аргумента, мы вернемся к предыдущему разделу перевода (если его не было, то к разделу 'global') */ d(); /* * % -- короткий суффикс для раздела global * * Данная запись аналогична t('global new'); */ echo t('%new'); /* * Вспомогательная функция * * Вторым аргументом идет значение по-умолчанию, если перевод не обнаружен * Третьим аргументом идет секция перевода, в которой следует поискать, если не установлено значение по-умолчанию */ // Если перевода переменной нет, то будет использовано значение аргумента at($field.'_description',$field['description']); /* * Если третий аргумент не указан, то ищется в разделе 'edit' * Если перевода переменной нет в текущем или указанном разделе, * то поиск будет произведен в разделе 'edit'. */ at($field.'_description',FALSE,'edit');