Переключатель языков для сайта Битрикс и не только

Как частенько бывает, переключатель языков, входящий в стандартную поставку Битрикс, работает как-то не так, как хочется... При переключении пользователя постоянно перебрасывает на главную страницу, а всем хочется, чтобы пользователь оставался на той странице, на которой происходит переключение.

Рассмотрим два классических варианта мультиязычности "по-битриксовски":

По умолчанию оба варианта используют разные шаблоны для разных языков.

В случае с поддоменами все очень просто. В нужном месте Вашего шаблона вставляем:

<?echo '<a href="//' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . '">русский</a>';?><br>
<?echo '<a href="//en.' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . '">english</a>';?>

Соответственно в шаблонах разных языков придаем ссылкам нужный вид с помощью CSS. Одну делаем активной, вторую нет (т.к. она обозначает текущий язык).

Для второго варианта код другой. Относительную сложность представляет переход на дефолтную версию сайта поскольку из ссылки на нее надо убрать лишние символы:

<?
$le = substr($_SERVER['REQUEST_URI'], 3); //удаляем /en из строки $_SERVER['REQUEST_URI']
echo '<a href="//' . $_SERVER['SERVER_NAME'] . $le . '">русский</a>';?><br>
<?echo '<a href="//' . $_SERVER['SERVER_NAME'] . '/en' . $_SERVER['REQUEST_URI'] . '">english</a>';?>

Внимание

Всё это работает только при условии, что символьные коды (и URL’ы страниц) полностью идентичны для всех языков!


Возврат к списку

Комментарии

Загрузка комментариев...