Мультиязычность в bitrix

88
27 октября 2021, 05:50

Планирую добавить на сайт второй язык. Как делаются переключатели языковые и как делается перевод на второй язык статичной информации на сайте?

Answer 1

Вы в чем-то правы, Dolphin.

Начинайте работать сейчас. Добавляйте второй язык на сайт. Добавляйте Язык в массив $[MESS] из примера.

$MESS["ERROR_HTTP_READ"] = "Ошибка чтения HTTP данных.";
$MESS["ERROR_UNKNOWN_COMMAND"] = "Неизвестная команда.";

function GetMessage_($name,$aReplace=null){ 
    global $MESS;
    if (isset($MESS[$name]))
    {
        $s = $MESS[$name];
        if ($aReplace !== null && is_array($aReplace))
        {
            foreach($aReplace as $search => $replace)
            {
                $s = str_replace($search, $replace, $s);
            }
        }
        return $s;
    }   
}
/*
Этот код можно запустить или выполнить в VSCode 
*/
print_r(GetMessage_("ERROR_HTTP_READ"));    

После того, как написали свой языковой файл (для компоненты, для шаблона компоненты), вы сможете переключить язык не для всего сайта, а только для одной страницы примерно так

$context = \Bitrix\Main\Application::getInstance()->getContext();
/* Текущий язык $langId */
$langId = $context->getLanguage();
/* На какой переключаем */
\Bitrix\Main\Localization\Loc::setCurrentLang("en");

/* Чтобы проверить, подключился ли ваш файл, в шаблоне компоненты напишите 
echo "<pre>GetMessage:"; print_r (GetMessage('FORM_DATA_SAVED1')); echo "</pre>";
или задайте вопрос "Как подключить свой языковой шаблон"
*/
$APPLICATION->IncludeComponent("bitrix:form.result.new",
        "inline",
        Array(

Потом уже, чуть позже, не забудьте погуглить вопрос psr-0 vs psr-4, и через три недели сможете сами подключать языковые файлы и библиотеки. А пока просто пишите перевод языка в массив $[MESS]

Answer 2

Добавьте во вкладках сайты-шаблоны условия включения одного или другого шаблона

READ ALSO
MadelineProto: channels.editBanned не работает (Telegram API)

MadelineProto: channels.editBanned не работает (Telegram API)

Использую MadelineProto для взаимодействия с Telegram APIНужно забанить/выкинуть пользователя из приватного канала – для этого есть метод channels

141
Как работает sqrt в java и не только?

Как работает sqrt в java и не только?

Стало интересно как работают некоторые ф-ииПри нажатии ctrl + клик по Math

112
Java Зависает процесс

Java Зависает процесс

Разбирался в Javalang

192