Довольно редко, но все-таки случается, что сайт компании или интернет-магазин нужно реализовать сразу на нескольких языках. В этой статье я опишу основные принципы создания многоязычных сайтов под управлением 1С-Битрикс и перечислить инструменты, которые есть в 1С-Битрикс Управление сайтом для работы с многоязычными сайтами.
При покупке любой редакции «Управление сайтом» вы получаете возможность создать 2 сайта. Производители CMS рассчитывали на то, что для большинства корпоративных сайтов и интернет-магазинов будет жизненно необходимо наличие англоязычного зеркала. Однако это не всегда так, чаще всего второй сайт остается незанятым.
Что ж, настало время создать этот второй сайт. Но для начала нужно определится, как будет реализована многосайтовость, есть 2 варианта: многоязычность первого типа, когда языковые сайты располагаются друг относительно друга на одном домене, но в разных папках (например в корневой папке русская версия сайта, а в папке /en/ — зеркало на английском языке); многосайтовость второго типа, когда языковые сайты располагаются на разных доменах или поддоменах. Чаще всего для создания зеркала на английском языке используют первый вариант многосайтовости.
Опишу по пунктам что нужно сделать, чтобы для имеющейся в наличии русской версии вашего корпоративного сайта вы могли быстро создать его английскую копию.
1. Создайте папку /en/ и дайте ей права на запись вебсервера. Можно ее просто создать через панель управления Битрикс.
2. Добавьте новый сайт для английской версии здесь — /bitrix/admin/site_admin.php?lang=ru&set_default=Y
Я приведу скриншоты настроек для русской и английской версии.
3. Нужно полностью скопировать все файлы и папки, кроме bitrix, .htaccess, .access.php в папку /en/
4. Нужно перевести на английский текст в этих файлах.
5. Далее требуется перевести компоненты
— для компонентов, использующих инфоблоки (это компоненты, имеющие в своем названии iblock, catalog), нужно создать инфоблоки для английского зеркала и привязать их к соответствующим компонентам в англ. версии.
— для ваших компонентов требуется переделать шаблоны вывода, чтобы они использовали специальные файлы с переводами слов, а не выводили слова напрямую. Для всех компонентов, поставляемых с Битрикс это уже сделано разработчиком CMS.
Что нужно сделать, чтобы ваш компонент стал многоязычным?
1. В коде компонента component.php и в шаблонах компонента необходимо заменить вывод русских слов на функцию GetMessage.
Например, если у вас в коде component.php есть такое:
if(!CModule::IncludeModule("iblock")) { $this->AbortResultCache(); ShowError("Модуль iblock не установлен"); return; }
требуется сделать так:
if(!CModule::IncludeModule("iblock")) { $this->AbortResultCache(); ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED")); return; }
А если у вас в шаблоне есть вывод русских слов например такие:
<p>некий текст</p>
нужно заменить на
<p><?=GetMessage("SOME_TEXT")?></p>
2. Нужно создать файлы переводов.
Для файла component.php эти файлы лежат в папках папка_компонента/lang/ru/ и папка_компонента/lang/en/ .
Смотрите там файл component.php. В нем нужно добавить такую строку:
$MESS ['IBLOCK_MODULE_NOT_INSTALLED'] = "Модуль Информационных блоков не установлен";
$MESS ['IBLOCK_MODULE_NOT_INSTALLED'] = "Iblock module don't installed";
Для шаблона компонента (файл template.php) файлы переводов лежат в папке шаблона компонента в папке lang/ru/ и lang/en/
соответственно, в эти файлы нужно добавить:
$MESS ['SOME_TEXT'] = "Некий текст";
$MESS ['SOME_TEXT'] = "Some text";
На этом создание английского зеркала сайта закончено.
А если сайт нужен сразу на 3-х языках, включая русский. Что делать?
Необходимо купить купон на 1 дополнительный сайт по крайней мере, а затем уже настраивать работу всех трех сайтов, как это написано в статье выше. :)
А давайте попробуем раскрыть тему с решением вот какой задачи по переводу: есть интернет-магазин и возникла потребность перевести на английский язык. Перевести разделы не проблема, но теперь нужно переводить категории, названия товаров и описания к ним.
Создавать новый инфоблок означает, что нужно поддерживать актуальность информации в двух инфоблоках. При большом количестве товаров это очень серьезно увеличивает затраты ресурсов.
Есть ли более подходящее решение задачи?
В таком случае вам нужно добавить свойства-дублеры для каждого из языкозависимых свойств товара. Для категорий товара можно использовать дополнительные свойства категории.
а можно использовать 2 версию сайта для мобильной версии? или лучше использовать поддомен?
Наверное, не вторую версию сайта, а второй сайт на одной лицензии.
Поставить мобильную версию сайта на второй сайт CMS Битрикс можно, конечно. Ведь обычный сайт или мобильный сайт — в принципе это одно и то же с точки зрения CMS Битрикс.
Если вы хотите использовать поддомен для мобильной версии, то вам нужно выбрать реализацию многосайтовости по второму способу.
а лучше какой способ использовать?
Лучше всего по второму способу с поддоменом. По крайней мере так делают все :)
Виталий, возможно ли немного по подробнее про свойства-дублеры для многоязычного сайта на битриксе. У меня проект в разработке на битрикс старт,языки итальянский русский и англиский. Инфоблок
Что именно вы хотите узнать поподробнее? Для многоязычности в вашем случае лучше использовать первый тип многосайтовости. Свойства дублеры нужно создавать для каждого языка.
Гораздо быстрее, дешевле и проще использовать готовое решение — модуль «Локализация»: http://marketplace.1c-bitrix.ru/solutions/accorsys.localization/
Замечательный модуль из Marketplace Bitrix, который решает проблему автоматического отображения мультиязычного сайта на основном языке пользователя Основываясь на статистике браузера, модуль определяет язык пользователя и, в соответствии с заданными при настройке параметрами, отображает необходимую версию сайта: http://marketplace.1c-bitrix.ru/solutions/digitech.languageredirect/?sphrase_id=55987051#tab-about-link