Page i18n Page i18n

Использование простой интернационализации

Плагин и инструкция по установке (на английском).

Ниже представлена инструкция по использованию.

#1. Создание дерева категорий


Чтобы применить i18n к части дерева категорий или ко всему дереву, вам необходимо использовать особую схему именования. Код категории состоит из частей, содержащих язык, код родительской категории и код текущей категории. Части собраны воедино символом дефиса. Поддерево альтернативного языка выглядит точно так же, но у него другой корневой узел, обозначающий язык.

Вот пример дерева категорий, доступного на 2 языках (Английском и Русском). Каждая строка представляет одну категорию, начиная с цифрового пути, далее следует код категории и отображаемый заголовок в скобках.
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 (Мир)

В общем случае, заменив дефис на слеш, вы получите подсказку о том, каким образом будет сформирована ссылка.

#2. Добавление интернационализированных страниц


Чтобы добавить страницу, нажмите "Добавить новую запись", как вы делали это раньше. Выберите точно категорию, в которую вы хотите добавить страницу. Заполните форму как обычно. Единственная обязательная особенность заключается в том, что кроме выбора категории с нужным языком, вы ОБЯЗАНЫ указать псевдоним (alias) страницы (например, my_cool_page) и добавить к нему суфикс с кодом языка (например, my_cool_page_en). Суффикс будет использован для распознавания языка. Псевдоним может состоять из символов латинского алфавита, дефисов и знаков подчеркивания.

После того, как вы добавили страницу, альтернативный перевод для нее должен быть добавлен в аналогичную категорию для другого языка, а псевдоним страницы должен быть точно таким же, за исключением языкового суффикса (а нашем примере my_cool_page_ru).

Ссылки на альтернативные страницы будут выглядеть наподобие:
http://yoursite.com/en/somecat/my_cool_page
http://yoursite.com/ru/somecat/my_cool_page

Всё остальное работает как обычно. Однако следует убедиться в том, что вы добавили переводы для всех доступных языков, иначе ваши посетители столкнутся с ошибками при попытке выбора языка, перевод для которого не был добавлен.


1. Dayver  11.03.2009 23:05
Ой как хорошо :-)) Траст спасибо за плуг
2. Oughtem  19.10.2009 20:53
Структура заработала. Не заработал селектор в хедере, который собсно языки переключает (ru|en) - и на "ru" и на "en" стоит ссылка того языка котырый в данный момент выставлен. Т.е., если я на странице /page.php?al=my_cool_page_en, то на селекторе (на обоих) языках ссылка http://semya.cn.ua/page.php?al=my_cool_page_en. Если на http://semya.cn.ua/page.php?al=my_cool_page_ru. то ссылка http://semya.cn.ua/page.php?al=my_cool_page_ru.

+ когда правишь модуль "ссылки", выводит такое сообщение

Правило содержит callback-вызовы: {pagi18n_url()}
Правило содержит callback-вызовы: {pagi18n_cat_url()}
Вам придется добавить опции rewrite для них вручную.

Ваш .htaccess
# Rewrite engine options
Options FollowSymLinks -Indexes
RewriteEngine On
# Server-relative path to seditio:
RewriteBase "/"
RewriteRule ^(datas|images|js|skins)/(.*)$ $1/$2 [QSA,NC,NE,L:



В инструкции написано
4. Add these rewrite rules to your .htaccess:
# Categories
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]

# 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]


а этот отрезок

# Rewrite engine options
Options FollowSymLinks -Indexes
RewriteEngine On
# Server-relative path to seditio:
RewriteBase "/"
RewriteRule ^(datas|images|js|skins)/(.*)$ $1/$2 [QSA,NC,NE,L]


надо вставлять или нет?

urltrans.dat имеет такой вид:
page al=* {pagi18n_url()}
list c=* {pagi18n_cat_url()}
* * {$_area}.php

просто у меня ссылки не изменили вид на что-то типа http://yoursite.com/en/goods/food/
3. Oughtem  19.10.2009 20:55
просто у меня ссылки не изменили вид на что-то типа http://yoursite.com/en/goods/food/ :(
Добавление комментариев доступно только зарегистрированным пользователям