Мультиязычные сайты и приложения на 1С-Битрикс

Обеспечение на сайте поддержки сразу нескольких языков – одна из частых задач в веб-разработке. Такой функционал очень важен для сайтов, которые должны работать в разных языковых зонах, представлять информацию о товарах или услугах на территории иностранных государств или просто для иностранных посетителей и т.д.

Реализовать такой запрос технически можно несколькими способами, вот два основных из них:

  1. Разные языковые папки.
  2. Языковые версии как отдельные сайты.

Разные языковые папки

При таком подходе создается новый сайт внутри системы.

Этот способ можно разделить еще на два варианта:

  • Языковые сайты располагаются друг относительно друга на одном домене, но в разных папках (например, в корневой папке русская версия сайта, а в папке /en/ — зеркало на английском языке).
  • Языковые сайты располагаются на разных доменах или поддоменах.

Эти варианты отличаются только настройками на этапе создания сайта.

Рассмотрим подробнее оба варианта.

  • Первый вариант

    Для начала нужно создать сайт в административном разделе “настройках сайта”. Настроить под нужный язык (язык, региональные настройки, папка сайта, шаблон сайта). Далее необходимо создать папку языкового сайта (например, /en/), скопировать в нее все контентные файлы и папки, перевести их на нужный язык (например, английский).

    После этого можно приступать к переводу информации в компонентах и инфоблоках.

    Перевод компонентов

    В компонентах есть специальные языковые файлы, которые нужно использовать для этой цели. Если компонент не поставляет их, его нужно сперва доработать, и только потом приступать к переводу.

    Перевод инфоблоков

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

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

    Но способ хорошо показывает себя в ситуации, когда для разных языков нужна разная информация или разные товары. А также при обмене с внешними системами, если ведётся учёт в разных системах.

    Такой подход мы использовали для реализации мультиязычности на сайте avtoros.info.

    Русскоязычная версия раздела новостей.
    Англоязычная версия раздела новостей.
  • Второй вариант

    Второй способ требует отдельной доработки для компонентов, чтобы для каждого языка отображались нужные свойства инфоблока.

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

    Но плохо себя показывает, если для разных локалей (языков) необходимо выводить разные элементы.

    При этом стоит учитывать, что если в инфоблоках очень много дополнительных свойств, то сайт будет сильно нагружать базу данных (1С-Битрикс не оптимально работает с большим количеством свойств). Это может привести к медленной работе сайта.

    Такой подход мы использовали для реализации мультиязычности на сайте 360.polytech.one.

    Русскоязычная версия раздела программа.
    Англоязычная версия раздела программа.

Языковые версии как отдельные сайты

Создание отдельных сайтов для каждого поддерживаемого языка – тоже распространенный подход в вопросе многоязычности.

В этом случае, реализуется сайт на основном языке (например, русском) и располагается на основном домене (например, site.ru). После этого сайт копируется в отдельное место на сервере, располагается на соответствующем поддомене (например, en.site.ru) и вся информация для него переводится на другой язык (например, английский)..

Здесь очень важно учитывать особенности, связанные с обменом с внешними системами. Для каждого сайта каждой локали (языка) нужен отдельный обмен (для некоторых систем такой подход невозможен), либо нужно реализовывать обмен между сайтами.

Плюсы данного подхода:

  • Гибкие возможности по настройки для разных языков;
  • Можно указывать формат вывода даты для показа новостей и прочее;
  • Для отдельных сайтов можно эффективно анализировать статистику;
  • Разграничивать доступ к заказам Интернет-магазина;
  • Гибкие возможности для отображения информации. Можно реализовать разный дизайн под разные языки;
  • Надёжность;
  • Скорость работы сайта выше, т.к. размер базы данных меньше.

Минусы данного подхода:

  • Отдельная панель администрирования для каждого языка;
  • Сложно учитывать заказы;
  • Изменение информации требует больше времени;
  • Техническое обслуживание нескольких сайтов требует больше трудозатрат;
  • Место на сервере нужно намного больше. Все резервные копии сайтов, временные файлы, база данных, файлы ядра, файлы сайта и т.д.. будут дублироваться. Если используется внешняя система хранилища резервных копий, нужно дополнительное место и там.
  • Обмен с внешними система реализуется гораздо сложнее.

Многоязычность в мобильном приложении Mobile Shop

Реализация мобильного приложения Mobile Shop на разных языках состоит из двух этапов:

  1. Разработка функционала для статичной информации, которая не загружается с сайта (названия блоков, экрана загрузки, меню и т.д.).
  2. Разработка функционала для динамичной информации, которая загружается с сайта.
  • Первый этап:

    Для первого этапа нам поможет сервис localise.biz.

    В нем можно создать несколько языковых файлов, перевести фразы и загружать в приложение. В localise.biz. удобно работать переводчикам, корректировать фразы или добавлять целые новые языки, после чего можно быстро выгрузить все переведенные фразы и быстро загрузить в приложение обновленный список языковых фраз

  • Второй этап:

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

    Выбор языка по умолчанию в приложении будет осуществляется в зависимости от языковых настроек телефона.

В качестве примера такой разработки можно рассматривать наше мобильное приложение EdaEco.