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

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

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

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

11 комментариев

avatar
Установлена Админпанель 1.2.84, пытаюсь реализовать мультиязычность, как Вы описываете. Почему-то мультиязычность работает только в админпанели, т.е. если находиться на сайте по ссылке мой_сайт/admin — тогда все в порядке, "$oLang->blablabla" — заменяется на текст из языковых файлов, смена языка по ссылкам мhttр://ваш_сайт/language/russian, httр://ваш_сайт/language/english работает.
В остальных разделах сайта, т.е. не в админпанели, переменные "$oLang->blablabla" не выводятся, ну т.е. не вместо текста просто пустота.
Подскажите, пожалуйста, с чем это может быть связано?
  • ivc
  • 0
avatar
*
http://мой_сайт/admin
в сообщении выше ссылка преобразовалась
avatar
Попробуй так:

1) Находим файл /classes/modules/language/Language.class.php
2) Там находим функцию
protected function InitLang(...) {
 ...
}
3) В этой фунции находим строку:
$this->Viewer_Assign('aLang', $this->aLangMsg);
4) После нее добавляем строку:
$this->Viewer_Assign('oLang', $this);

Должно заработать, как надо
avatar
Добавил
$this->Viewer_Assign('oLang', $this);
все равно в админпанели работает, во всех остальных разделах сайта — нет.
avatar
Залил только что новый билд 1.2.85 — скачай его. Вобщем-то, можно из него только два файла взять и залить к себе на сайт:
/classes/modules/language/Language.class.php
/classes/hooks/HookLanguage.class.php

1-й файл изменен, а 2-й — новый.
avatar
:) Спасибо огромное, получилось!
И вопрос, заменять "$aLang.blablabla" на "$oLang->blablabla" уже не надо?
Потому что без замен работает.
avatar
Извините но я не как не могу разобраться по установке админ панели. Куда её устанавливать и как? Если можете опишите всё подробно или дайте ссылку где можно это прочитать. Я с этим первый раз сталкиваюсь поэтому не могу реализовать. Заранее спасибо.
avatar
В комплекте есть файл, который называется readme.txt. В переводе с английского это значит «прочитай меня». И это предлжение адресовано тому, кто хочет установить админпанель.
avatar
Этот файл я читал и поэтому задал вопрос там есть строка ( Скопировать в папку /update/modules/ls_admin), вот только вопрос что скопировать и куда.
avatar
Вестимо, скопировать содержимое архива в папку /update/modules/admin. Папку update несложно найти, если хоть раз смотрел движок livestreet. /modules/admin — создай в папке update сам, если еще не создавал.
avatar
спс за разъяснение
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.