Мой основной проект: Боевые искусства в кинематографе! (fight-films.info)

Свеженькое
Реакция публики
Облако пометок
css Google html SEO WordPress Яндекс видео графический дизайн заработок индексация интернет ключевые слова контент партнерка поисковые системы посещаемость продвижение раскрутка реклама сайт статья хостинг

Два языка в DataLife Engine (DLE)

Два языка Верстал тут сайт на DLE и возникла потребность создать две версии сайта на разных языках, английскую и русскую.

Есть несколько способов реализации подобной фишки, мне известны пока только два. Первый - самый простой: делать версию сайта по умолчанию на основном домене, а второй язык прикручивать на вторую версию сайта, висящей на поддомене, добавить совместную регистрацию и все в шоколаде.

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

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

В общем, заключается все в создании двух (ну или более) шаблонов сайта с разными языками и внедрении кнопок на их переключение. Скажем, сделали мы два шаблона, один русский, второй - английский. Закинули папки в директорию темплейтов и получилось два относительных адреса:

/templates/rus/
/templates/eng/

Далее качаем английскую версию языка для движковых сообщений. Почему-то в нулленых версиях DLE присутствует только русский. Скачали и закинули в папку "language" .

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

Далее, чтоб второй шаблон казался совсем английским, заходим в "Другие разделы" админки , там есть "Шаблоны сайта" - находим наш "eng" и прикручиваем к нему язык "english" . Теперь все системные сообщения DLE будут выдаваться на английском (ну, аналогично и с другими языками, хоть японский) .

Следующий шаг заключается в прикручивании кнопок смены языка. Обычно делают флажки стран. Так вот, создали два флажка, сунули их в шаблон и сделали кнопками, ведущими по следующим адресам:

/index.php?action_skin_change=yes&skin_name=rus
/index.php?action_skin_change=yes&skin_name=eng

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

Тулим в админку, ищем в тех же "Других разделах" "Дополнительные поля новостей" и добавляем туда новое поле со следующими параметрами:

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

Потом в шаблоне английского языка открываем файл shortstory.tpl и меняем в нем тег {short-story} на тег дополнительного поля [xfvalue_eng_short].

Теперь в английской версии шаблона будут выводиться короткие описания, которые написаны в поле "Английское описание" , при содании поста. По аналогии, то же можно сделать и с fullstory и title .

Все очень просто и реализация довольно интересная. Вот только, блин, для SEO английский язык существовать не будет...

комментариев 15
  1. avto-ru:

    Хороший пост, кстати где взять данный темплейт?

  2. ARMWeb:

    Огромное спасибо автору )))

  3. Terios:

    Вот пробую сделать по этому методу — на локалке все просто супер, а на серваке не хочет… точнее он то переключает шаблон, но потом, при переходе по любой ссылке, скидывает обратно…

    • BarSug:

      Может какая-нидь проблема с серваком? Что есть на локалке, чего нет на сервере?

  4. Сергей:

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

    • BarSug:

      Это вряд ли, по крайней мере, способ с темплейтами не подойдет.

    • Stepa:

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

      RewriteCond %{HTTP:Accept-Language} (aa|ab|af|am|ar|as|ay|az|ba|be|bg|bh|bi|bn|bo|br|ca|co|cs|cy|da|de|dz|el|en|eo|es|et|eu|fa|fi|fj|fo|fr|fy|ga|gd|gl|gn|gu|ha|hi|hr|hu|hy|ia|ie|ik|in|is|it|iw|ja|ji|jw|ka|kk|kl|km|kn|ko|ks|ku|ky|la|ln|lo|lt|lv|mg|mi|mk|ml|mn|mo|mr|ms|mt|my|na|ne|nl|no|oc|om|or|pa|pl|ps|pt|qu|rm|rn|ro|ru|rw|sa|sd|sg|sh|si|sk|sl|sm|sn|so|sq|sr|ss|st|su|sv|sw|ta|te|tg|th|ti|tk|tl|tn|to|tr|ts|tt|tw|uk|ur|uz|vi|vo|wo|xh|yo|zh|zu) [NC]
      
      RewriteRule .* /index.php?action_skin_change=yes&skin_name=templers_en [R,L]

       

      • BarSug:

        Я бы, в данном случае, рекомендовал, все таки, использовать другой способ подключения языков. Человек нацелен на посетителя,пришедшего на сайт за информацией, интересующей его на языке, которым он владеет. Но в этом способе (замена шаблонов) просто меняется визуальная оболочка, и о том, что информация на другом языке будет видна в поисковиках и тд, речи вообще не идет.
        То есть, к примеру, вряд ли кто-то попадет на сайт по поисковому запросу на языке, отличном от родного для сайта. Посему, нет смысла танцевать с бубном ради этого, лучше использовать другой метод.А описанный выше способ, более рентабелен для других целей.

        • Stepa:

          Для того чтобы посетитель был направлен из поисковика стоит делать не танец с бубном, а применять немного другой ход. Чтобы русский сайт был доступен по site.ru , а вот английская версия site.ru/en/ . В таком случаи поисковик проиндексирует два варианта сайта не заменяя url, так как они будут немного разных директорий (/en/). Для реализации данной функции есть такая штука, в DLE, как \»Символьный код:\». Там кстати и с speedbar_ом проблем не будет. Так как будет создан ряд новых категорий. А новости будут продублированы но на Английском языке. Так же при создании карты сайта можно будет ограничить вывод как русских списков на русской версии, так же и обратно. Но данный способ подойдет только для сайтов визиток и тому подобных, где не добавляется в день по 100-1000 новостей, как на варез порталах. Пример: сайт охранного агентства, где новости будут добавляться только когда будут скидки на какие-то виды услуг, тем самым будет не очень сложно раз в месяц продублировать в две категории (русс и англ) по новости на разных языках. Это и называется, рекомендовать подключение другим способ, а не просто сказать о том что рекомендую и полить воду, не предложив никаких решений. С ув. и учитесь, учитесь и еще раз учитесь, как завещал дедушка Ленин.

          P.S. таким образом можно и прицепить переход по языкам, зависимо от языка пользователя. Так как запрос в данном случаи может быть как на русском так и на английском. А при желание, русский человек уж точно, найдет кнопку сменить язык, если он находиться где-то «там»… А вот человеку который зайдет с незнанием русского языка будет тяжелей адаптироваться и найти сменю языка.
          Ну это так, мысли вслух, автор блога наверняка знает способ с бубном куда лучший, который он кстати так и не описал.

          • BarSug:

            Я был понят неправильно. Пытался сказать что в способе с заменой темплейтов прикручивать такие функции нет смысла, это лишь визуальная подмена. Как раз таки, ваш метод в данном случае самый удачный. Вот только это совсем другая тема.

  5. Stepa:

    Вопрос к автору, судя как к опытному верстальщику и т.д. Вот создали вы 2 языка на сайте, и как поступили с {speedbar} ? Ведь там вывод названий категорий останется на русском.

    • BarSug:

      Я об этом не думал, честно говоря, всегда эту функцию считал лишней (как по отношению к запросам бд, так и «мусором» на странице). Скорее всего, реализовать простыми способами, без танцев с бубнами, это не получится. но, конечно, при сильном желании, все возможно…

      • Aleksandr:

        Уважаемый, BarSug, а сколько примерно будет стоить разработка такого задания, если конечно вы сможете за такое взяться: функция позволяющая при добавлении новости, а именно в списке выбора категорий отображать категории на языке шаблона, ну и разумеется выводить категории на языке шаблона при выводе тего {category} и {speedbar}. Спасибо.

  6. Azam:
    function ChangeLangs($dir, $langs) {
       
       $language_list = array ();
       
       $handle = opendir( $dir );
       
       while ( false !== ($file = readdir( $handle )) ) {
          if( @is_dir( "./language/$file" ) and ($file != "." AND $file != "..") ) {      
             $language_list[] = $file;
          }
       }
       
       closedir( $handle );
       sort($language_list);
       
       $langs_list = "<form method=\"post\" action=\"\"><select onchange=\"submit()\" name=\"langs_name\">";
       
       foreach ( $language_list as $single_language ) {
          if( $single_language == $langs ) $selected = " selected=\"selected\"";
          else $selected = "";
          $langs_list .= "<option value=\"$single_language\"" . $selected . ">$single_language</option>";
       }
       
       $langs_list .= '</select><input type="hidden" name="action_langs_change" value="yes" /></form>';
       
       return $langs_list;
    }