Модуль языки и мультиязычность

 
Существует модуль языки, устанавливается в настройках как язык интерфейса.
Еще можно добавить статьи под определенный язык и выбрать статьи из этого языка по нажатию на язык с панели. Как сделать следующее, чтоб без кликов всегда выбирались статьи определенного языка. Что-то вроде для Англоязычных и для Русских, для англоязычных будет добавляться копия статьи на EN и им не требуется показывать Ру.

Как можно переписать модуль под эти нужды, думаю это бы стало полезным.

Многоязычный сайт на базе ЛС - продолжение

7
Как и прежде, модуль многоязычной поддержки входит в пакет модуля Админпанель. Но в версии 1.2.98 была сделана одна небольшая доработка, немного облегчающая жизнь тем, кого эта тема (многоязычные сайты на базе ЛС) интересует.

А именно — если раньше выбранный пользователем язык сохранялся только на время сессии, то теперь его можно сохранять в куках. Т.е. выбрал юзер свой язык, отличный от установки LANG_CURRENT, и этот выбор (если заданы соответствующие установки) будет действовать и при последющих заходах юзера на сайт с этого компьютера.

Как это сделать? Открываем файл /config/modules/language/config.php и задаем параметр:
define('LANG_SAVE_DAYS', 365);
Число указывает, сколько дней будет храниться выбранный язык.

И еще один вопрос часто задают: а как сделать выбор языка? Мне казалось, что я достаточно подробно об этом писал здесь: livestreet.ru/blog/2109.html. Но, видимо, нужен конкретный пример, как организовать «мультиязычность». Поэтому вот вам пример на базе скина new.
1. Открываем шаблон header_nav.tpl
2. Находим форму поиска
<div class="search">
  <form action="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_SEARCH}/topics/" method="GET">
    <input class="text" type="text" onblur="if (!value) value=defaultValue" onclick="if (value==defaultValue) value=''" value="{$aLang.search}" name="q" />
    <input class="button" type="submit" value="" />
  </form>
</div>

3. После закрывающего тега </form> вставляем такой код:
<!-- +++ Language settings +++ -->
<div class="language" style="position: relative; top: -30px; ">
  <a href="{$DIR_WEB_ROOT}/language/russian"><img src="{$DIR_STATIC_ROOT}/templates/language/flags/ru.png" alt="Russian" title="Russian" /></a>
  <a href="{$DIR_WEB_ROOT}/language/english"><img src="{$DIR_STATIC_ROOT}/templates/language/flags/gb.png" alt="English" title="English" /></a>
</div>
<!-- --- Language settings --- -->

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

ЗЫ Прошу гуру за говнокод не пинать, т.к. это всего лишь пример. Хотя и вполне рабочий. :)

ЗЗЫ А кртинки с флажочками, нужными для работы примера реально лежат в папке /templates/language/flags/
  • +7
  • 14 августа 2009, 16:10
  • avadim

Многоязычный сайт на базе ЛС

9
Иногда подобные вопросы возникают у людей. Напр., здесь: как сделать переключение языка прямо на сайте?

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

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

1. Установить Админпанель версии не ниже 1.2 (модуль языковой поддержки также будет установлен).
2. В папку templates/language/ положить нужные файлы переводов
3. В конфиг-файле config/modules/language/ определите константу LANG_DEFAULT, определяющую язык по умолчанию (будет использоваться в тех случаях, когда не найден нужный перевод; подробнее см. здесь). Там же желательно определить список языков, которые будут поддерживаться — константа LANG_DEFINE.
4. В смарти-шаблонах сайта переменные вида $aLang.blablabla заменить на $oLang->blablabla
5. Добавить в шаблоны переключение языка, т.е. ссылки вида httр://ваш_сайт/language/russian, httр://ваш_сайт/language/english и т.д.

Вот и вся мультиязычность

Модуль расширения языковой поддержки и его использование

2
Для тех, кто еще не знает – модули Admin (Админпанель) и Language (Расширенная языковая поддержка) это дополнительные модули к движку LiveStreet для упрощения и облегчения администрирования сайтов, построенных на этом движке. Скачать их можно в разделе Модули по адресу livestreet.ru/addons/34/ (одним пакетом).

Функционал модулей описан в соответствующих топиках (например, livestreet.ru/blog/addons/2105.html) и разобраться, как с ними работать, довольно просто.

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



Читать дальше

как сделать переключение языка прямо на сайте?

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

Поддержка языковых файлов

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

Зачем это надо?
  • +1
  • 16 ноября 2008, 11:12
  • kruft

Мультиязычность

 
Обязательно сделайте вынос в ленгвичь фай всей текстовки интерфейса.
дабы пользователь мог выбирать язык интерфейса
«готов взяться за реализацию украинского интерфейса»

желательно ещё, чтобы была возможность писать контент на нескольких языках
допустим в тегах
[lang_en]Hello World[/lang_en]
[lang_ru]Привет мир[/lang_ru]
[lang_ukr]Привіт Світ[/lang_ukr]

а пользователю выводится выбранный им язык и дополнительно сообщение — «данная статья доступна также на языке ...», а если нет его варианта языка — то «данная статья доступна лишь на языке ...»
  • 0
  • 05 ноября 2008, 01:23
  • DiMkA

Умоляю!

 
Сделайте поддержку языков! Все сообщения прописаны в php файлах. Вынесите всё в один файл это значительно облегчит перевод на другие языки.
Спасибо