Как и прежде, модуль многоязычной поддержки входит в пакет модуля Админпанель. Но в версии 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. Находим форму поиска
Теперь над полем поиска у вас появятся два флажочка — российский и британский, при клике на которые юзер будет переключаться соответственно на русский или английский язык.
ЗЫ Прошу гуру за говнокод не пинать, т.к. это всего лишь пример. Хотя и вполне рабочий. :)
ЗЗЫ А кртинки с флажочками, нужными для работы примера реально лежат в папке /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, попробовал изменить слова и оля, работает!
Обязательно сделайте вынос в ленгвичь фай всей текстовки интерфейса.
дабы пользователь мог выбирать язык интерфейса «готов взяться за реализацию украинского интерфейса»
желательно ещё, чтобы была возможность писать контент на нескольких языках
допустим в тегах
а пользователю выводится выбранный им язык и дополнительно сообщение — «данная статья доступна также на языке ...», а если нет его варианта языка — то «данная статья доступна лишь на языке ...»