Простой механизм создания мультиязычности для страниц и списков страниц
1. Установить плагин.
2. Настроить список доступных яхыков Администрирование → Конфигурация → pagi18n → правка, разделяя ISO коды необходимых языков символом «|» (вертикальная черта).
3. Отредактируйте datas/urltrans.dat (напрямую или через Администрирование → Модули →> Ссылки), добавив в начало списка следующие правила:
list c=* {pagi18n_cat_url()} page al=* {pagi18n_url()}
4. Добавте следующие правила в файл .htaccess (при условии, что ваш сервер Апачи и включен модуль mod_rewrite):
# Для категорий RewriteRule ^(en|ru)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/$ list.php?c=$1-$2-$3-$4-$5 [QSA,NC,NE,L] RewriteRule ^(en|ru)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/$ list.php?c=$1-$2-$3-$4 [QSA,NC,NE,L] RewriteRule ^(en|ru)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/$ list.php?c=$1-$2-$3 [QSA,NC,NE,L] RewriteRule ^(en|ru)/([a-zA-Z0-9_]+)/$ list.php?c=$1-$2 [QSA,NC,NE,L] RewriteRule ^(en|ru)/$ list.php?c=$1 [QSA,NC,NE,L] # Pages with aliases only RewriteRule ^(en|ru)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_\-]+) page.php?al=$6_$1 [QSA,NC,NE,L] RewriteRule ^(en|ru)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_\-]+) page.php?al=$5_$1 [QSA,NC,NE,L] RewriteRule ^(en|ru)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_\-]+) page.php?al=$4_$1 [QSA,NC,NE,L] RewriteRule ^(en|ru)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_\-]+) page.php?al=$3_$1 [QSA,NC,NE,L] RewriteRule ^(en|ru)/([a-zA-Z0-9_\-]+) page.php?al=$2_$1 [QSA,NC,NE,L]
где вместо (en|ru) поставьте ваш вариант списка языков разделенных вертикальной чертой.
Примечание: Данные правила предполагают глубину структуры категорий не более 4 уровней. Для более глубокой структуры допишите правила самостоятельно, по данному шаблону.
5. Дабавьте в шаблон header.tpl блок для элемента выбора языков «LANG_ROW», в котором заключается разметка для ссылки выбора каждого из языков. Формат блока может быть таким:
<div id="lang">
<!-- BEGIN: LANG_ROW -->
<a href="{LANG_ROW_URL}" class="{LANG_ROW_CURRENT}" title="{LANG_ROW_NAME}">{LANG_ROW_CODE}</a>
<!-- END: LANG_ROW -->
</div>
6. Настройте структуру категорий для страниц специальным образом (см. ниже).
Для правильной работы плагина «i18n» необзодимо создать структуру категори (или отредактировать текущую) придерживаясь особых правил. Код текущей категории должен состоять из следующих частей: кода языка, кода родительской категории, собственного кода категории. Эти части должны быть разделены знаком тире «-». Для создание категорий на другом языке вы должны повторить текущую структуру изменив для нее первую часть (код языка).
В приведенном примере вы можете видеть структуру для двух языков (английский и русский). Для наглядности в каждой строке указаны: путь категории (числа разделенные точкой), код категории, отображаемое имя (в скобках).
1 en (English)
1.1 en-articles (Articles) 1.1.1 en-articles-tech (Technical) 1.1.2 en-articles-fiction (Fiction) 1.1.3 en-articles-economy (Economy) 1.2 en-news (News) 1.3 en-goods (Goods) 1.3.1 en-goods-food (Food) 1.3.1.1 en-goods-food-fruits (Fruits) 1.3.1.2 en-goods-food-fast (Fast Food) 1.3.1.3 en-goods-food-cakes (Cakes) 1.3.2 en-goods-computers (Computers) 2 ru (Русский) 2.1 ru-articles (Статьи) 2.1.1 ru-articles-tech (Технические) 2.1.2 ru-articles-fiction (Художественные) 2.1.3 ru-articles-economy (Экономика) 2.2 ru-news (Новости) 2.3 ru-goods (Товары) 2.3.1 ru-goods-food (Еда) 2.3.1.1 ru-goods-food-fruits (Фрукты) 2.3.1.2 ru-goods-food-fast (Фаст-фуд) 2.3.1.3 ru-goods-food-cakes (Пирожные) 2.3.2 ru-goods-computers (Компьютеры)
Ссылка на одну из категорий будет выглядеть примерно следующим образом: http://yoursite.com/en/goods/food/
Код языка не обязательно должен быть первым, поэтому коды могут быть следующенго вида:
4.3.1 news-en-world (World) 4.4.1 news-ru-world (Мир)
или такого:
4.3.1 news-world-en (World) 4.3.2 news-world-ru (Мир)
(но учтите, что для такой нотации надо будет менять приведенные выше правила для mod_rewrite)
Для понимания как будут строиться ссылки на категори просто мысленно замените в коде категории знак тире «-» на слэш.
Страница добавляется как обычно через ссылку «добавть новую страницу», но для корректной работы плагина надо соблюсти следующие правила:
- Выберите категорию в которую вы хотите поместить страницу
- Заполните необходимые поля как для остальных страниц
- Обязательно укажите псевдоним (alias) для страницы (например my_page), добавив в конце код языка (пример my_page_en). Это код будет использоваться плагином для определения языка страницы. Для указания псевдонимов допустимы латинские буквы, знак тире и подчеркивания.
Для добавления перевода - создайте еще одну страницу с соответствующем разделе, заполнив поля аналогично приведенной выше схеме, за исключением того, что псевдоним будет заканчиваться кодом другого языка (для данного примера my_page_ru).
Ссылки на различные версии страницы будут выглядеть так:
http://yoursite.com/en/somecat/my_page
http://yoursite.com/ru/somecat/my_page
В остельном все будет работать как обычно.
Внимание! Будьте уверены, что вы добавили перевод для каждой страницы во все соответствующие категории, в противном случае пользователь будет получать сообщение об ошибке при попытке переключиться на другой (отсутствующий) вариант данной страницы.
Поблагодарили: 9 раз
Поблагодарили: 1 раз
Поблагодарили: 2 раза
Поблагодарили: 12 раз
Поблагодарили: 10 раз
The url transformation is also new for me... great stuff you guys
When I goto page it shows this: http://www."domain".com/online/ru/articles/my_page_en
in URL but I get a nopage found error 404. And when I click the russian link on the home page it just refreshes screen.
Please help...
Any help with previous post??