От заказов "сделать английскую версию сайта" я всегда отказывался. Но, на этот раз решился взяться за проджект. Сайт работал на 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.
А в компоненте в зависимости от языка показывать это свойство.Ну уловили суть.
Комментариев нет:
Отправить комментарий