Плагин «Знание языков»


Не давно был у меня «интересный заказ», и вот после него остались некоторые наработки. Одна из них, это плагин «Знание языков», который позволяет пользователям указывать языки которые они знаю, и после они будут отображаться в его профиле.

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

Язык

Хочу сделать на сайт «выбор языка». Чтобы пользователь мог выбрать один из 5 языков. Как это сделать? есть ли какой-то плагин?

Языковой файл плагина

Интересно, а где находится информация о том что массив в языковом файле плагина не добавляется к общему массиву, а к элементу [«plugin»][«название плагина»] => array(«здесь то что в файле»)? И что в итоге в шаблоне надо подставлять {$aLang.plugin.названиеплагина.названиеключа}? Это как то совсем не очевидно. Я это понял только посмотрев содержимое docs.livestreetcms.com/api/1.0/ModuleLang#GetLangMsg-detail.

Похоже это появилось в версии 1.0.1 livestreet.ru/blog/11132.html#comment199625:
В ЛС 1.0.1 поменялся вывод языка из плагинов на такую конструкцию.

Распределение языкового наполнения по доменам

Привет всем!

Может вопрос глупый, но для меня актуальный.

Имею один хостинг на котором установлен ЛС, на нем 2 домена host.ru host.com с одной базой данных.

Проблем с интерфейсом не возникло если набирают host.ru то грузит русскую локализацию, если набирают host.com то грузит английскую локализацию.

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

Работа плагина l10n(мультиязычность)

Такая проблема, допустим есть статья в русском варианте сайта mysite.ru/ru/zdraste.html. Видна она только пользователям в русскоязычной версии. Но если поменять в адресной строке ru на en — mysite.ru/en/zdraste.html, то интерфейс поменяется на английский, но русская статья все-равно отобразится. По идее должно выкинуть 404 ошибку, ведь в англ. версии такой статьи нет. На той же кукураме эта проблема решена. Подскажите как этого добиться?

Плагин «Панелька смены языка сайта (Language changer)», версия для ЛС 1.0+


Вверху сайта добавляется маленькая панелька со списком доступных языков сайта. Персонально для каждого пользователя.



Плагин доступен в каталоге.
Мои контакты.

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

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

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

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

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

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

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

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

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

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


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