Вызов значения из языкового файла осуществляется с использованием статичного метода Core::_()
, аргументом передается ключ и название значения, например:
echo Core::_('Supermodule.title');
Языковые файлы размещаются в директории modules
, путь к языковому файлу содержит имя ключа, разделителем служит символ «_», директории i18n
и файла с названием языка.
Например, при выводе значения для Supermodule
и русского языка будет загружен файл modules/supermodule/i18n/ru.php
В случае добавления пользовательских полей в стандартные модули возникает необходимость расширить или переопределить языковые файлы, добавив в них требуемые значения. Расширение производится вызовом метода expandLng()
, в который передается имя ключа и массив значений.
Core_I18n::instance()->expandLng('shop',
array(
'title' => 'Новый заголовок',
'myfield' => 'Мое поле',
)
);
А как быть, если разные переопределения нужны для разных сайтов?
Третьим аргументом передается язык, по умолчанию будет текущий.
function expandLng($className, array $value, $lng = NULL)
имелось ввиду не для разных языковых версий, а для разных сайтов в рамках одной установки CMS
Так эта интернационализация модулей общая, она целиком для центра администрирования, а не для разных сайтов.
ок, там есть определение заголовов писем при заказе и оплате.
если нужно для разных сайтов переопределить эти заголовки, но они должны быть разные, то как быть в этом случае?
Расширение языковых файлов для стандартных модулей - не понятно куда загружать этот файл и как подключать?
Чаще всего подключают в bootstrap.php внутри условия if (Core_Auth::logged()),
чтобы при генерации клиентского раздела не использовалось.