Как то раз мне потребовалось сделать один раздел сайта полностью на английском языке, а весь остальной сайт на русском. С первого взгляда все казалось проще некуда, что нужно определить константу LANGUAGE_ID со значением “en” при заданных условиях в init.php. Однако, такой фокус не проходит, т.к. к моменту вызова файла init.php эта константа уже определена, а переопределять константы в PHP запрещено.
Решение в данной ситуации очень простое. Чтобы назначить другую языковую локаль для папки, файла, раздела или других каких либо условий, нужно сделать это в файле dbconn.php. Однако стоит помнить, что в момент вызова файла dbconn.php еще не подключены классы ядра и все методы битрикса еще не доступны нам, другими словами определение усовий по которым мы хотим изменить язык будет на голом PHP.
Пример кода, который помогает установить английский язык для раздела “/en/” включая все вложенные страницы и папки:
if(preg_match('/^\/en\//', $_SERVER['REQUEST_URI'])){
define("LANGUAGE_ID", 'en');
}
По желанию можно поменять в строке ‘/^\/en\//’ значение папки на свое и получить желаемый результат.
Важный момент, что при использовании типовых функций AJAX данный способ так же работает и для подгружаемого контента. Т.е. если мы совершаем со страницы отправку формы через типовой компонент с включенным режимом AJAX, то сообщения об успешном выполнении или ошибках будут подгружаться из языковых файлов “en” локали.