Проследить процесс перевода фразы можно в методе gt() класса pageParser (main/classes/parser.class.php). У метода несколько входящих параметров:
Примеры использования метода gt():
//$parser – объект класса PageParser print $parser->gt('wocategory'); //__FILE__ - необходимо искать фразу в этом же каталоге print $parser->gt('wocategory',__FILE__); //все слова фразы – в нижнем регистре print($parser->gtl('allreadyloged', __FILE__));
Процесс перевода фразы происходит следующим образом.
1. Пользователь не выбрал язык отображения контента.
Парсер (класс PageParser) получает текущий язык сайта из сохраненных Cookie или из конфигурационных данных (меню Настройки-Значения по умолчанию-Локализация, Язык интерфейса - 'sys_user_lang') . Если эти данные не установлены, по умолчанию используется $sys_default_lang из config/config.php. Если и там не установлено, по умолчанию берется английский язык.
Сначала метод gt() получает текущий язык сайта. Допустим, текущий язык русский - ru и $file не задан. Тогда система ищет перевод фразы сначала в main/lang/ru.php, а затем в main/lang/en.php. Если приложение модульное, при использовании метода gt() внутри контроллера или модели модуля подключается языковый файл модуля из каталога ext/namemodule/lang/. Если во фразе есть заполнители, как и другой текст фразы, они переводятся в текущей кодировке сайта.
Если во всех этих файлах перевод фразы не найден, система возвращает непереведенный языковый индекс $textid в текущей кодировке сайта.
Если $file задан, сначала поиск перевода ведется в том же каталоге, где расположен файл или на уровень выше. Если там нет - проверяется файл en.php, расположенный в том же каталоге.
Если и там нет - перевод ищется в main/lang/ru.php. Если здесь перевода нет - берется main/lang/en.php, возвращается сам индекс, т.е. $textid.
2. Пользователь выбрал язык отображения контента.
При вызове нужного языка происходит запуск сниппета в кодом (Id) sys_snip_page_lang_flags.
Сниппет передает $_GET-параметры, в которых прописано действие и язык: action=setLanguage, lang=ru. Эти параметры идут методу _init() класса pageParser.
Выбранный язык с системным кодом, равным $_GET['lang'], записывается в $_COOKIE["wad_user_lang"], в $_SESSION["user_settings"]['sys_user_lang'] и в кеш ($this->lang_suff).
Таким образом, приложение получает информацию о текущем языке.