100% Мультиязычность DataLife Engine

Разберем небольшой пример создания сайта на русском и английском языке. Итак во первых нам понадобиться два шаблона, для того чтобы была 100% поддержка двух языков, а не так что часть надписей на русском, часть надписей на английском.

Допустим у нас есть шаблоны

/templates/russian/

/templates/english/

Также нам понадобиться два языковых пакета для скрипта

/language/russian/

/language/english/

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

Теперь нам нужно чтобы каждому из наших шаблонов соответствовал необходимый нам языковой пакет, чтобы при переключении с одного шаблона на другой, менялся бы также язык системных сообщений скрипта. Для этого заходим в Админпанель скрипта -> Другие разделы -> Шаблоны сайта и устанавливаем для каждого шаблона Используемый язык, т.е. для шаблона russian назначаем язык russian, для шаблона english назначаем язык english

Следующим этапом является добавления переключения языков для посетителей сайта. Для этого в main.tpl создадим две ссылки например:

<a href="http://site.ru/index.php?action_skin_change=yes&skin_name=russian">Русский</a>
<a href="http://site.ru/index.php?action_skin_change=yes&skin_name=english">Английский</a>

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

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

Создаем новое дополнительное поле со следующими параметрами:

Название поля: english
Описание поля: Английский коротко
Категория: Все
Тип поля: Несколько строк

Далее открываем в шаблоне английского языка templates/english/ файл shortstory.tpl и меняем в нем тег {short-story} на тег дополнительного поля [xfvalue_english]. теперь при смене пользователем на сайте русского языка на английский то сама новость будет также выводиться на английском. Правда теперь незабывайте писать новости на двух языках. По аналогии вы можете добавить дополнительное поле и для просмотра полной новости.

Ну вот собственно и все дамы и господа

Удачи вам в построении собственных сайтов.

0 comments
  1. Виталий
    Виталий
    18.03.2010 at 16:25

    Спасибо большое))) очень полезная новость))))

    Reply
  2. Иван
    Иван
    08.05.2010 at 15:33

    Спасибо, вещь хорошая и работающая. Если б вы еще посоветовали как подключить текстовый редактор для дополнительного поля. Тогда б вообще было б отлично.

    Reply
  3. utz0r2
    utz0r2
    10.05.2010 at 15:05

    Иван, дык ббкоды есть по умолчанию в дополнительных полях (Тип: Несколько строк)

    Reply
  4. utz0r2
    utz0r2
    30.07.2010 at 14:46

    ПО ШАГОВО

    ШАГ1. СОЗДАЕМ ДОПОЛНИТЕЛЬНЫЕ ПОЛЯ

    Создаете дополнительное поле для НАЗВАНИЯ
    Название поля: title_en
    Описание поля: Название на английском
    Категория: Все
    Тип поля: Одна строка
    Остальное не важно, жмем СОХРАНИТЬ

    Создаете дополнительное поле для ОПИСАНИЯ:
    Название поля: desc_en
    Описание поля: Описание на английском
    Категория: Все
    Тип поля: Несколько строк
    Остальное не важно, жмем СОХРАНИТЬ

    Создаете дополнительное поле для ПОЛНОГО ОПИСАНИЯ:
    Название поля: full_desc_en
    Описание поля: Полное описание на английском
    Категория: Все
    Тип поля: Несколько строк
    Остальное не важно, жмем СОХРАНИТЬ

    ШАГ2. ПРОВЕРЯЕМ

    Далее открываем категорию своего шаблона и там файл addnews.tpl проверяем что бы там точно был тег {xfields}. Если он есть, то по урл ваш.сайт/addnews.html будет показываться уже эти поля.

    ШАГ3. НАЗНАЧАЕМ ЯЗЫКИ ШАБЛОНАМ

    В админ части переходим в раздел Шаблоны и назначаем языковые файлы для обеих шаблонов. Например для Русского шаблона русский язык, для английского – английский.

    ШАГ4. ПРАВИМ shortstory.tpl и fullstory.tpl

    Дальше допустим по умолчанию у нас Русский сайт, значит переходим в английский шаблон и открываем shortstory.tpl:
    Редактирование комментария меняем на [xfgiven_title_en][xfvalue_title_en][/xfgiven_titl
    e_en]
    {short-story} меняем на [xfgiven_desc_en][xfvalue_desc_en][/xfgiven_desc_e
    n]
    открываем fullstory.tpl:
    Редактирование комментария меняем на
    [xfgiven_title_en][xfvalue_title_en][/xfgiven_titl
    e_en]
    {full-story} меняем на
    [xfgiven_full_desc_en][xfvalue_desc_en][/xfgiven_f
    ull_desc_en]

    Сохраняем и радуемся двуязычным сайтом.

    Reply
  5. Саша
    Саша
    17.08.2010 at 14:12

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

    Reply
  6. utz0r2
    utz0r2
    18.08.2010 at 11:27

    стандартно никак, нужно ковырять init.php

    Reply
  7. Саша
    Саша
    18.08.2010 at 19:17

    Ещё такая проблема. Вот есть у меня xfields з разноязычной инфой. Но для статьи "Описание для статьи" и "Ключевые слова", и "Метатег title" одни. Если в "статических страницах" я могу под каждый язык сделать отдельную статью со своим "Описание для статьи" и "Ключевые слова", и "Метатег title" куда будут пихаться свои ключевые слова, то как в "многоязычной новости" ,что у меня получается в результате всех операций с xfields, мне быть с "Описание для статьи" , "Ключевые слова", и "Метатег title". Получится куча ключевых слов на разных языках в одном "Описание для статьи" , "Ключевые слова", и "Метатег title". Это нормально для раскрутки данного сайта, или что то можно придумать?

    Reply
  8. utz0r2
    utz0r2
    28.08.2010 at 00:22

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

    Reply
  9. andryu
    andryu
    31.03.2011 at 05:52

    Немецкого, португальского и испанского случайно нет?

    Reply
  10. utz0r2
    utz0r2
    31.03.2011 at 11:56

    andryu, нету -)

    Reply
  11. andryu
    andryu
    02.05.2011 at 11:23

    А у меня вот теперь есть 9 языковых модулей))))

    Reply
  12. Stjopik
    Stjopik
    02.05.2011 at 11:46

    andryu,
    поделись с сомной, мне очень нужно перевести сайт на 5 языков…дай свою аську.

    Reply
  13. Сергей
    Сергей
    20.10.2011 at 21:39

    А дополнительный шаблон будет индексироваться поисковиками? Или только основной?

    Reply
  14. utz0r2
    utz0r2
    21.10.2011 at 10:57

    К сожалению только основной (Смена языков происходит через указания куков).

    Reply
  15. Vanger
    Vanger
    13.02.2012 at 02:36

    Дабы страницу не перекидывало на главную при смене языка, правим:

    1. Открываем файл /engine/init.php
    2. Ищем
    Код:
    if ($_REQUEST['skin_name'] != '' AND @is_dir ( ROOT_DIR . '/templates/' . $_REQUEST['skin_name'] ) ) {
    $config['skin'] = $_REQUEST['skin_name'];
    set_cookie ( "dle_skin", $_REQUEST['skin_name'], 365 );
    }
    3. Заменяем на:
    Код:
    if ($_REQUEST['skin_name'] != '' AND @is_dir ( ROOT_DIR . '/templates/' . $_REQUEST['skin_name'] ) ) {
    $config['skin'] = $_REQUEST['skin_name'];
    set_cookie ( "dle_skin", $_REQUEST['skin_name'], 365 );
    $return_url=getenv("HTTP_REFERER");
    header( 'Location: '. $return_url, 303 );
    }

    Радуемся

    Reply
  16. utz0r2
    utz0r2
    13.02.2012 at 11:34

    Vanger, спасибо за ваше решение.

    а я явой делал

    хтмл


    <a onclick="javascript:langDel;langSet_ru();" href="{include file="engine/modules/_url.php"}" title="Russian" class="gflag" style="background-position:-500px -200px;">рус</a>

    <a onclick="javascript:langDel;langSet_ua();" href="{include file="engine/modules/_url.php"}" title="Ukrainian" class="gflag" style="background-position:-100px -400px;">анг</a>    

    js предварительно подключив jquery.cookie


    function langSet_ru(index) {
      $.cookie('skin', 'skin_ru', {expires: null, path: '/'});
    }
    function langSet_en(index) {
      $.cookie('skin', 'skin_en', {expires: null, path: '/'});
    }
    function langDel(index) {
      $.cookie('skin' + index, null, {expires: null, path: '/'});
    }

    _url.php


    <?php
    echo 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

    Reply
  17. Vanger
    Vanger
    13.02.2012 at 23:52

    igor_veselov, не за что

    Всё оно переводит но хочется чтобы и индексировалось всё. Добавил доп. поле для URL

    Название поля: alt_name_en
    Описание поля: URL ENG
    Категория: Все
    Тип поля: Одна строка
    Остальное не важно, жмем СОХРАНИТЬ

    Но, есдинственная проблемка, где что прописать дабы при смене языка (со страницы) ru перекидывало на новую – eng. В .htaccess?
    Хотелось бы чтобы и статические страницы так переводились но это уже не такой трабл.

    Reply
  18. Марина
    Марина
    18.01.2014 at 13:18

    Ребята, подскажите плиз с редиректом.
    Как сделать перенаправление после смены скина с
    http://site.ru/index.php?action_skin_change=yes&skin_name=english к примеру на http://site.ru/en/
    Не хочет перенаправлять с http://site.ru/index.php?action_skin_change=yes&skin_name=english хоть убей. Нужен рабочий метод, а не ссылки на умные ресурсы, которые я уже изучила.

    Reply
  19. utz0r2
    utz0r2
    18.01.2014 at 13:22

    Марина, просто пропишите правила в .htaccess что-то типа этого
    RewriteRule ^index.php?action_skin_change=yes&skin_name=english$ /en/ [L]
    а дальше на сайте используйте такие ссылки http://site.ru/en/

    Reply
  20. Марина
    Марина
    18.01.2014 at 13:33

    igor_veselov
    К сожалению это не работает.

    Обращение к серверу происходит перед сменой скина и через htaccess тут врятли что сделаешь. Но это мое не профессиональное мнение

    Reply
  21. utz0r2
    utz0r2
    18.01.2014 at 13:35

    Марина, я дал направление решения, а рабочее решение такое, только что проверил
    RewriteRule ^en(/?)+$ index.php?action_skin_change=yes&skin_name=english [L]
    Нужно включать мыслительную коробочку =)

    Reply
  22. golibjon
    golibjon
    11.04.2016 at 16:29

    bolshoe spasibo,

    Reply
  23. Earth
    Earth
    02.01.2018 at 11:15

    Способ вообще ни о чем! С поисковиками в таком случае можно попрощаться. Это самый главные минус способа.

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

Ваш электронный адрес не будет опубликован. Обязательные поля помечены *

Scroll Up