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

Как и прежде, модуль многоязычной поддержки входит в пакет модуля Админпанель. Но в версии 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/

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

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

Честно говоря, не очень хорошо представляю, как это может быть реализовано организационно, но технически сделать это очень даже просто, если у вас установлена Админпанель версии 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 и т.д.

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

Многоязычность есть!

Вот таким радостным предложением я хочу поблагодарить разработчиков за то что наконец-то сделали поддержку и других языков!

Сейчас у меня версия с SVN (222) и там я нашёл файл \templates\language\russian.php
— скопировал его
— назвал german.php, попробовал изменить слова и оля, работает!

С меня немецкий для lifestreet'a :)

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

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

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

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