Верстал тут сайт на 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 английский язык существовать не будет...
Хороший пост, кстати где взять данный темплейт?
Сделать самому :) .
Огромное спасибо автору )))
Вот пробую сделать по этому методу — на локалке все просто супер, а на серваке не хочет… точнее он то переключает шаблон, но потом, при переходе по любой ссылке, скидывает обратно…
Может какая-нидь проблема с серваком? Что есть на локалке, чего нет на сервере?
А как сделать чтобы движок автоматом выдавал нужный язык по юзер агенту?
Это вряд ли, по крайней мере, способ с темплейтами не подойдет.
Сергей, это в .htaccess настраивается, за основу берется язык ОС с которой заходит человек, тем самым перекидывает его на имеющий язык. То есть, если вы зашли с рус белорус украинского — вас кинет на русский шаблон. Если с других — то на английский.
Я бы, в данном случае, рекомендовал, все таки, использовать другой способ подключения языков. Человек нацелен на посетителя,пришедшего на сайт за информацией, интересующей его на языке, которым он владеет. Но в этом способе (замена шаблонов) просто меняется визуальная оболочка, и о том, что информация на другом языке будет видна в поисковиках и тд, речи вообще не идет.
То есть, к примеру, вряд ли кто-то попадет на сайт по поисковому запросу на языке, отличном от родного для сайта. Посему, нет смысла танцевать с бубном ради этого, лучше использовать другой метод.А описанный выше способ, более рентабелен для других целей.
Для того чтобы посетитель был направлен из поисковика стоит делать не танец с бубном, а применять немного другой ход. Чтобы русский сайт был доступен по site.ru , а вот английская версия site.ru/en/ . В таком случаи поисковик проиндексирует два варианта сайта не заменяя url, так как они будут немного разных директорий (/en/). Для реализации данной функции есть такая штука, в DLE, как \»Символьный код:\». Там кстати и с speedbar_ом проблем не будет. Так как будет создан ряд новых категорий. А новости будут продублированы но на Английском языке. Так же при создании карты сайта можно будет ограничить вывод как русских списков на русской версии, так же и обратно. Но данный способ подойдет только для сайтов визиток и тому подобных, где не добавляется в день по 100-1000 новостей, как на варез порталах. Пример: сайт охранного агентства, где новости будут добавляться только когда будут скидки на какие-то виды услуг, тем самым будет не очень сложно раз в месяц продублировать в две категории (русс и англ) по новости на разных языках. Это и называется, рекомендовать подключение другим способ, а не просто сказать о том что рекомендую и полить воду, не предложив никаких решений. С ув. и учитесь, учитесь и еще раз учитесь, как завещал дедушка Ленин.
P.S. таким образом можно и прицепить переход по языкам, зависимо от языка пользователя. Так как запрос в данном случаи может быть как на русском так и на английском. А при желание, русский человек уж точно, найдет кнопку сменить язык, если он находиться где-то «там»… А вот человеку который зайдет с незнанием русского языка будет тяжелей адаптироваться и найти сменю языка.
Ну это так, мысли вслух, автор блога наверняка знает способ с бубном куда лучший, который он кстати так и не описал.
Я был понят неправильно. Пытался сказать что в способе с заменой темплейтов прикручивать такие функции нет смысла, это лишь визуальная подмена. Как раз таки, ваш метод в данном случае самый удачный. Вот только это совсем другая тема.
Вопрос к автору, судя как к опытному верстальщику и т.д. Вот создали вы 2 языка на сайте, и как поступили с {speedbar} ? Ведь там вывод названий категорий останется на русском.
Я об этом не думал, честно говоря, всегда эту функцию считал лишней (как по отношению к запросам бд, так и «мусором» на странице). Скорее всего, реализовать простыми способами, без танцев с бубнами, это не получится. но, конечно, при сильном желании, все возможно…
Уважаемый, BarSug, а сколько примерно будет стоить разработка такого задания, если конечно вы сможете за такое взяться: функция позволяющая при добавлении новости, а именно в списке выбора категорий отображать категории на языке шаблона, ну и разумеется выводить категории на языке шаблона при выводе тего {category} и {speedbar}. Спасибо.