Обеспечение на сайте поддержки сразу нескольких языков – одна из частых задач в веб-разработке. Такой функционал очень важен для сайтов, которые должны работать в разных языковых зонах, представлять информацию о товарах или услугах на территории иностранных государств или просто для иностранных посетителей и т.д.
Реализовать такой запрос технически можно несколькими способами, вот два основных из них:
Разные языковые папки
При таком подходе создается новый сайт внутри системы.
Этот способ можно разделить еще на два варианта:
Эти варианты отличаются только настройками на этапе создания сайта.
Рассмотрим подробнее оба варианта.
Первый вариант
Для начала нужно создать сайт в административном разделе “настройках сайта”. Настроить под нужный язык (язык, региональные настройки, папка сайта, шаблон сайта). Далее необходимо создать папку языкового сайта (например, /en/), скопировать в нее все контентные файлы и папки, перевести их на нужный язык (например, английский).
После этого можно приступать к переводу информации в компонентах и инфоблоках.
Перевод компонентов
В компонентах есть специальные языковые файлы, которые нужно использовать для этой цели. Если компонент не поставляет их, его нужно сперва доработать, и только потом приступать к переводу.
Перевод инфоблоков
Для перевода инфоблока можно создать дублирующий инфоблок под новый язык или добавить в существующий отдельные свойства, которые будут дублировать поля с основного языка.
Первый способ тем сложнее в реализации и дальнейшем использовании, чем больше языков нужно поддерживать. При добавлении товара, новости, статьи или любой другой информационной единицы, нужно дублировать ее для всех языковых копий инфоблока.
Но способ хорошо показывает себя в ситуации, когда для разных языков нужна разная информация или разные товары. А также при обмене с внешними системами, если ведётся учёт в разных системах.
Такой подход мы использовали для реализации мультиязычности на сайте avtoros.info.
Второй вариант
Второй способ требует отдельной доработки для компонентов, чтобы для каждого языка отображались нужные свойства инфоблока.
Такой вариант хорош при поддержке большого количества языков и для ручного ввода и редакции контента (не нужно переключаться между инфоблоками и дублировать элементы), а также при обмене с внешними системами, если учет идёт в одной системе.
Но плохо себя показывает, если для разных локалей (языков) необходимо выводить разные элементы.
При этом стоит учитывать, что если в инфоблоках очень много дополнительных свойств, то сайт будет сильно нагружать базу данных (1С-Битрикс не оптимально работает с большим количеством свойств). Это может привести к медленной работе сайта.
Такой подход мы использовали для реализации мультиязычности на сайте 360.polytech.one.
Языковые версии как отдельные сайты
Создание отдельных сайтов для каждого поддерживаемого языка – тоже распространенный подход в вопросе многоязычности.
В этом случае, реализуется сайт на основном языке (например, русском) и располагается на основном домене (например, site.ru). После этого сайт копируется в отдельное место на сервере, располагается на соответствующем поддомене (например, en.site.ru) и вся информация для него переводится на другой язык (например, английский)..
Здесь очень важно учитывать особенности, связанные с обменом с внешними системами. Для каждого сайта каждой локали (языка) нужен отдельный обмен (для некоторых систем такой подход невозможен), либо нужно реализовывать обмен между сайтами.
Плюсы данного подхода:
Минусы данного подхода:
Многоязычность в мобильном приложении Mobile Shop
Реализация мобильного приложения Mobile Shop на разных языках состоит из двух этапов:
Первый этап:
Для первого этапа нам поможет сервис localise.biz.
В нем можно создать несколько языковых файлов, перевести фразы и загружать в приложение. В localise.biz. удобно работать переводчикам, корректировать фразы или добавлять целые новые языки, после чего можно быстро выгрузить все переведенные фразы и быстро загрузить в приложение обновленный список языковых фраз
Второй этап:
Для второго этапа необходимо за основу берется один из вариантов реализации многоязычности на сайте. И уже в зависимости от выбора подхода к решению этой задаче для сайта, можно определиться с способом локализации динамической информации.
Выбор языка по умолчанию в приложении будет осуществляется в зависимости от языковых настроек телефона.
В качестве примера такой разработки можно рассматривать наше мобильное приложение EdaEco.