линия

Главная

вторник, 11 октября 2016 г.

Bitrix: как сделать английскую версию сайта.

От заказов "сделать английскую версию сайта" я всегда отказывался.  Но, на этот раз решился взяться за проджект. Сайт работал на Bitrix. Битрикс я знаю хорошо - все  седые волосы дело рук битрикса, а их у меня не мало.
  Как оказалось, на правильно и грамотно сделанном сайте запилитть многоязычность сущие пустяки.
Итакпоехали!

1. Создаем второй сайт

Заходим в админку и  открываем:  настройки -- настройки продукта -- сайты -- список сайтов.
Нажимаем  ДОБАВИТЬ САЙТ



И заполняем как на рис.1 и 2.
рис 1.



рис 2.


2. Копируем структуру сайта


Создаем в корне сайта папку en. Копируем все кроме папки bitrix и uploads в папку en. 


3. Переводим

Теперь настало время переводить  тексты.  На сайте есть тексты динамические и статичные. Динамические это результат работы компонентов, статичные это  просто текст.

Например, на главной странице есть текст приветствия. Файл index..php. Для англ версии открываем файл /en/index.php  и этот текст переводим.   

Далее переводим тексты в шаблоне.
рис 3

В папке  lang есть две папки: ru и en
А в них  header.php. ( у других проектов могут быть еще другие файлы)

Для примера создадим надпись в шапке сайта. Для ру версии надпись будет - Русская версия ,  для en версии English version.

В шапке сайта (header.php), не языковой файл, которые тоже также называется но лежит в папке lang/*,  Добавляем:

<?echo GetMessage("HEADER_LANG")?>

Открываем lang/ru/header.php и добавялем

$MESS["HEADER_LANG"] = "Русская версия";

Для английской версии открываем lang/en/header.php

$MESS["HEADER_LANG"] = "English version";


И проверяем. Откроем site.ru/ , текст на русском, открываем site.ru/en/ текст на инглише.
Логику уловили вообщем да?


Тексты в компонентах переводим так же. 

Прищурив глаз ты спросишь - а как быть с текстами из компонентов? 
Идем дальше...


4. Копируем инфоблоки

Создаем Тип инфоблока.  В моем случае назвал Контент англ.   
            рис 4.

И осталось скопировать 
Инфоблоки. В ручную копировать это сущий ад.  Так что , сделаем все штатными средствами  старины Битрикс.

Идем:
    Инфоблоки -- экспорт -- XML 






После экспорта открываем файл xml.  В нашем случае лежит в папке /upload/bunners.xml

И ищем <Каталог>
<Ид>banners_s1</Ид>
<ИдКлассификатора>banners_s1</ИдКлассификатора>
Ид прописываем другой. например banners_en



Сохраняем.
Далее делаем импорт.



Теперь смело в новом инфоблоке меняем тексты. Названия. Если надо URL.

И на странице где вызывается этот инфоблок меняем ID_IBLOCK на  новую созданную.

5. Философствование

Такой подход для каталогов не пойдет однозначно если товаров много. 
Как решение  можно создать свойство, например для  названия  свойство eng name.
А в компоненте в зависимости от языка показывать это свойство.Ну уловили суть.













Комментариев нет:

Отправить комментарий