Вроде ничего сложного, но есть пара моментов, на которые стоит обратить внимание:
Чтобы работать с языковыми фразами, нужно подключить пространство имен:
use \Bitrix\Main\Localization\Loc; Можно передавать аргументы в языковую фразу. Например:
$MESS["SOA_ORDER_SUC"] = "Заказ <b>№#ORDER_ID#</b> от #ORDER_DATE# успешно создан."; //В языковом файле
Loc::getMessage("SOA_ORDER_SUC", array( // В файле
"#ORDER_DATE#" => 'текст, который будет вставлен вместо ORDER_DATE',
"#ORDER_ID#" => 'текст, который будет вставлен вместо ORDER_ID'
));Чтобы получить все доступные в данном контексте языковые фразы, можно использовать следующий код:
echo '<pre>';
print_r($MESS);
echo '</pre>';
Для переопределения языкового сообщения из ядра Битрикс нет необходимости изменять класс или править ядро. Просто создайте файл /bitrix/php_interface/user_lang/#кодязыка#/lang.php и заполните его соответствующим образом (например, можно изменить текст ошибки при неправильном вводе логина или пароля при авторизации на сайте).
$MESS['/bitrix/modules/main/lang/ru/classes/general/user.php']['WRONG_LOGIN'] = 'Вы ввели неверный логин или пароль. Попробуйте проверить язык клавиатуры и используемый регистр';Первый ключ — путь к языковому файлу, сообщение из которого мы меняем. Второй ключ – идентификатор сообщения.
В логике Bitrix, при поиске языковой фразы система работает так:
- Ищет определение языковой фразы в текущей папке, соответствующей выбранному языку.
- Если в текущей папке нет нужной фразы, ищет ее в папках уровнем выше (родительских). Поиск продолжается до тех пор, пока система не найдет подходящую фразу или не достигнет верхней папки (корневого раздела).
- Если подходящая фраза будет найдена, система остановится и будет использовать ее. Если же фраза не будет найдена даже в корневой папке, будет используется общая фраза по умолчанию(текст, что был задан при передаче языковой фразы).

Об авторе
Сергей Житников - Веб-разработчик
Занимаюсь веб-разработкой более 5 лет. Специализируюсь на создании адаптивных сайтов и веб-приложений на HTML5, CSS3 и JavaScript. Работаю с популярными CMS и фреймворками, а также уделяю большое внимание оптимизации производительности и чистоте кода.
Есть проект или идея? Буду рад помочь!
Связаться со мной