Мультиязычный сайт на DLE (или как добавить английский язык)
3.12
73
83 376
Тема довольно избитая, информации много, но основная масса - это копипаст статьи целсофта пятилетней давности.
И вот буквально вчера понадобилось добавить на несложный 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
Категория Все
Тип поля Одна строка
Значение по умолчанию пусто
Не забываем галочку "использовать при желании"
и два многострочных.
Название поля eng_short_story
Описание поля Краткое описание Eng
Категория Все
Тип поля Несколько строк
Значение по умолчанию пусто
Название поля eng_full_story
Описание поля Полное описание Eng
Категория Все
Тип поля Несколько строк
Значение по умолчанию пусто
Так же у обоих полей ставим галочку "использовать при желании"
Описание поля Краткое описание 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]
Таким образом, если не заполнено полное содержимое английской версии - будет выведено краткое содержимое английской же версии После этого
желательно переименовать папки с шаблонами на соответствующие языку имена, напимер 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.
Комментарии
Добавить комментарий
Комментировать могут только зарегистрированные пользователи