» » Мультиязычный сайт на DLE (или как добавить английский язык)

Мультиязычный сайт на DLE (или как добавить английский язык)

3.12
67
65 073
Мультиязычный сайт на DLE (или как добавить английский язык)

Тема довольно избитая, информации много, но основная масса - это копипаст статьи целсофта пятилетней давности.
И вот буквально вчера понадобилось добавить на несложный DLE-сайт английскую версию. Заняло это у меня 3 часа, включая поиск информации (ибо раньше с этим не сталкивался), перевод шаблона, перевод текста картинок и объяснение администрации сайта правил заполнения английской версии новостей.

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

Итак



Требовалось добавить английскую версию публичной части сайта, т.е. новостей.

Первым делом

необходимо найти английскую версию языкового пакета для нужной версии DLE. Я буду писать про DLE 9.4

Т.к. изначально администрация сайта не думала добавлять второй язык сайту, DLE установили в кодировке windows-1251, что в принципе не является критичным. На всякий случай я открыл файл languge/English/website.lng и поменял там строку
'charset'            =>    "utf-8",

на
'charset'            =>    "windows-1251",

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

Если у вас установлена UTF версия DLE - этих телодвижений делать не нужно.

Дополнительные поля

только так можно нормально осуществить задуманное.
Нам потребуется создать 3 дополнительных поля:
Одно - однострочное:

Название поля eng_title
Описание поля Заголовок Eng
Категория Все
Тип поля Одна строка
Значение по умолчанию пусто

Не забываем галочку "использовать при желании"


и два многострочных.

Название поля eng_short_story
Описание поля Краткое описание Eng
Категория Все
Тип поля Несколько строк
Значение по умолчанию пусто

Название поля eng_full_story
Описание поля Полное описание Eng
Категория Все
Тип поля Несколько строк
Значение по умолчанию пусто

Так же у обоих полей ставим галочку "использовать при желании"



Далее

копируем шаблон сайта и переводим всё, что написано в нём на требуемый язык (в моём случаи - английский), не забывая перевести и надписи на картинках.

А теперь самое интересное

как же сделать, чтобы в английской версии сайта выводилось соответствующий языку контент?
Очень просто.
открываем shortstory.tpl и вместо
<a href={full-link}" title="Мультиязычный сайт на DLE (или как добавить английский язык)">Мультиязычный сайт на DLE (или как добавить английский язык)</a>
(это правильно написанная ссылка на полную новость)
пишем:
<a href="{full-link}" title="[xfvalue_eng_title]">[xfvalue_eng_title]</a>


Вместо тега
{short-story}
пишем:
[xfvalue_eng_short_story]

Теперь защитим себя от незаполненной английской версии новости:
в начало файла пишем: [xfgiven_eng_short_story], а в конец - [/xfgiven_eng_short_story]. Грубо, но эффективно!

Остальное по желанию. Я например убрал облако тегов, всё равно ПС не проиндексирует английскую версию сайта, да и теги на русском языке в английской версии сайта не нужны.


Теперь fullstory.tpl (сейчас поймёте почему DLE 9.4)
Так же заменяем
Мультиязычный сайт на DLE (или как добавить английский язык)
на
[xfvalue_eng_title]


А вот
{full-story}
мы заменим немного хитрее, ведь где гарантия того, что пользователь заполнит поле eng_full_story?
Дабы обезопасить себя родимого от кривости рук нерадивых журналистов делаем так:
[xfnotgiven_eng_full_story][xfvalue_eng_short_story][/xfnotgiven_eng_full_story][xfgiven_eng_full_story][xfvalue_eng_full_story][/xfgiven_eng_full_story]
Таким образом, если не заполнено полное содержимое английской версии - будет выведено краткое содержимое английской же версии smile

После этого

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


Теперь идём в админку

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

Открываем .htaccess (тот, который лежит в корне сайта) и после RewriteEngine On дописываем:
RewriteRule ^eng/(/?)+$ index.php?action_skin_change=yes&skin_name=theme_eng [L]
RewriteRule ^ru/(/?)+$ index.php?action_skin_change=yes&skin_name=theme_ru [L]

Это для нормального вида ссылок на смену языка сайта.

Ну и конечно же в русском main.tpl в нужном месте ставим ссылку
<a rel="nofollow" href="/eng/" title="English version">English version</a>
а в английской версии:
<a href="/ru/" title="Руская версия">Руская версия</a>



Вот и всё



P.S. Посмотреть живой пример работы можно на сайте heartiness.org.

Похожие материалы

Комментарии

nanupocuk
nanupocuk 18 декабря 2016 16:08
Добрый день, ваш способ который вы описали для dle 9.4 он работает и в dle 11.2, просто я вчера кучу изменений ввёл в движке, а сегодня поставил новый движок и всё заработало. Так что смело можете говорить всем что этот способ и на dle 11.2 тоже работает !
ruslanhydyrov
ruslanhydyrov 23 августа 2017 10:25
Здравствуйте, у меня при просмотре русской версии сайта, и переходе в любую категорию, перебрасывает в английскую версию. Не заете в чем может быть причина?
ПафНутиЙ
ПафНутиЙ 27 августа 2017 20:53
Цитата: ruslanhydyrov
Здравствуйте, у меня при просмотре русской версии сайта, и переходе в любую категорию, перебрасывает в английскую версию. Не заете в чем может быть причина?

Возможно что-то пошло не так.
uvlecheniehobby.ru
uvlecheniehobby.ru 6 сентября 2017 15:01
Подскажите по теме http://www.maultalk.com/topic208788s10.html?#entry2094145
ПафНутиЙ
ПафНутиЙ 6 сентября 2017 18:42
Цитата: uvlecheniehobby.ru
Подскажите по теме http://www.maultalk.com/topic208788s10.html?#entry2094145

Для этого нужно понять вашу проблему. По ссылке я вижу только то, что вам рекомендовали прийти к какому то пафнутому, а я не знаю таких, уж извините.
RRRaymond
RRRaymond 15 сентября 2017 11:12
Приветствую
Сломался замок не получается открыть Помогите! Заранее благодарю за ответ!
ПафНутиЙ
ПафНутиЙ 15 сентября 2017 11:24
Цитата: RRRaymond
Приветствую
Сломался замок не получается открыть Помогите! Заранее благодарю за ответ!

попробуйте позвонить в службу спасения по номеру 112

Добавить комментарий

Комментировать могут только зарегистрированные пользователи

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.