Блог для тех, кому интересен Textpattern, а дакже другие вопросы веб-разработки
Мультиязычность в Текстпаттерн - простой способ.
Для Текстпаттерн уже существует достаточно мощное решение, позволяющие построить полноценный мультязычный сайт: поддерживается перевод названия секций, категорий, мультиязычные версии статей, просто случайные текстовые фразы (сниппеты), отображающие нужный пеервод в завимисоти от выбранного языка на сайте.
Но установка MLP и перевода сайта под него — процесс достататочно хлопотный, хотя и не сложный. Иногда существует необходимость более простого решения.
Идея заключается в том, языковые версии статьи, например, будут выдаваться Текстпаттерном в зависимости от установленного браузером параметра Accept-Language.
Используемый ниже код будет работать в Текстпаттерн, начиная с версии 4.0.7, т.к. используется тег <txp:varaible />.
1. Создаем форму с именем accept-language, в которой будет находиться следующий код:
<txp:php> variable(array('name' =>'accept-language', 'value' => 'ru')); $al = @$_SERVER['HTTP_ACCEPT_LANGUAGE']; if (preg_match('/(.*?)[,;-]/', $al, $a)) { variable ( array ( 'name' =>'accept-language', 'value' => $a[1] ) ); } // split article titles $titles = explode(" | ", $GLOBALS['thisarticle']['title']); $i=0; foreach ($titles as $title) $titles[$i++] = explode(":", $title);$i=0; foreach ($titles as $title) $titles[$i][0]==$lang ? $key=$i : $i++;variable ( array ( 'name' =>'title_l10n', 'value' => $titles[$key][1] ) ); </txp:php>
2. Принцип работы кода:
$_SERVER['HTTP_ACCEPT_LANGUAGE']$_SERVER['HTTP_ACCEPT_LANGUAGE'], или не удается вычленить оттуда язык, в переменную Текстпаттерна будет записан язык по-умолчанию – указан во второй строчке скрипта (в нашем примере это ru).3. Вызов данной формы необходимо поместить на странице выше тега <txp:article />, либо вверху формы этого тега, до тега <txp:body />, либо в самом начале тела статьи.
4. Внутри тела статьи различные языковые версии разделяем тегом <txp:if_variable name="accept-language" value="КОД_ЯЗЫКА">. КОД_ЯЗЫКА – один из ISO кодов языков, например, ru, en, fr, de.
5. Заголовок статьи пишем в таком формате: ru:Проверка работы мультиязычности | en:English title | de:Deutsche sprache – обратите внимание на наличие и отсутствие пробелов.
6. Там, где мы раньше использовали <txp:title />, теперь надо будет использовать <txp:variable name="title_l10n" /> – т.к. заголовок тоже переводится. Нужно внимательно следить, чтобы форма accept-language вызывалась ДО <txp:variable name="title_l10n" /> – лучше всего ее поместить в самый верх свой страницы (Оформление – Страницы)
Вставим следующий код в тело статьи:
<txp:output_form form="accept-language" />
<txp:if_variable name="accept-language" value="ru">
Тут у нас русский текст.
<txp:else />
Текст для НЕ русских посетителей.
</txp:if_variable>
Если же необходимо выводить несколько вариантов перевода, например, для русского, английского и немецкого языков, при этом английский язык должен выводиться по-умолчанию, то код нужно изменить таким образом:
<txp:output_form form="accept-language" /> <txp:if_variable name="accept-language" value="ru"> Тут у нас русский текст. <txp:variable name="translated" value="1" /> </txp:if_variable><txp:if_variable name="accept-language" value="en"> Английский текст будет здесь. <txp:variable name="translated" value="1" /> </txp:if_variable><txp:if_variable name="accept-language" value="de"> Немецкий язык пишем в этом коде <txp:variable name="translated" value="1" /> </txp:if_variable><txp:if_variable name="translated " value="1"> <txp:else /> Здесь должен быть текст, который выводиться, если язык посетителя не был определен. </txp:if_variable>
Пример работы скрипта мультиязычности в Textpattern. В нем же есть подсказки, как сменить язык браузера, чтобы проверить работу скрипта.
Также, можно усложнить предложенный код, чтобы пользователь мог самостоятельно определять какой язык ему предпочтительней. Об этом пойдет речь в одной из следующих статей.
Обновление: обновил код, убрал точку с запятой, которая рушила код. Сейчас должно работать :)
Комментарии:Для того чтобы иметь возможность оставлять комментарии, вам нужно включить JScript в настройках вашего браузера. Извините за возможные неудобства
Привет. Мы занимаемся созданием сайтов. В своей работе мы используем замечательную CMS TextPattern. Эта система нам очень нравится и мы хотели бы поделиться своим опытом её использования. Кроме того мы поделимся другими знаниями из области Web-разработки.
Koнечно, если вам просто нужно заказать сайт, мы всегда готовы помочь. Милости просим к нам.
Нам очень ценно ваше мнение и нам хотелось бы знать о чём вам было бы интересно прочитать здесь. Свои мысли, пожелания и соображения вы можете оставить здесь в комментариях.
анонс, блог, видео, галерея, дизайн, категории, макет, многоязычность, новости, поиск, решение, цикл, это просто!, javascript, jquery, lightbox, nested articles, plugin, preloader, svn
Не хотите пропустить интересную статью? Тогда присоединяйтесь к тем 12
, которые уже подписались на наш
RSS канал.
А ещё анонсы на Twitter
Самое популярное из мейнстрима клубной электронной музыки. House и Trance отборных мастей.
Drum&Bass с элементами Liquid Funk. Потрясающая скорость и энергетика в любое время суток.
Экспериментальный радиопроект, новое слово в Российском радиовещании.
Прогрессивное underground интернет-радио, без компромиссов и без попсы.
удалённый