В данном разделе описаны настройки плгина `i18n` (идет в базовой поставке), для обеспечения следующих возможностей:
- выбор и переключение пользователем основного языка сайта (языка интерфейса);
- отображение страниц и разделов сайта на различных языках;
- создание переводов страниц на другие языки (при наличии у пользователя соответствующих прав);
- интеграция с другими расширениями для поддержки мультиязычности (page, search, tags и др).
#1. Установка и настройка
Итак, давайте разберемся что нам для этого потребуется:
- Установить плагин "Content Internationalization" для этого идем в раздел «Управление сайтом» → «Расширения» → «i18n» (для всех версий Siena он уже входит в стандартный набор, скачивать дополнительно его не нужно).
- После установки идем в раздел настроек плагина — Управление сайтом → Расширения → Content Internationalization → Конфигурация.
- В поле «Корневые категории» указываем коды тех корневых разделов которые предполагаются для работы на нескольких зыках, например: "articles, news".
- В поле «Список локалей сайта» указываем список языков, которые предполагается использовать (первым должен идти основной язык сайта):
en|English
nl|Nederlands
de|Deutsch
- Далее надо сделать перевод названий категорий, для этого идем в раздел «Управление сайтом» → «Структура» и жмем кнопку «Интернационализация структуры». Тут вы увидите таблицу выбранных категорий и их описаний. Заполняем поля в колонках, соответствующих каждому из указанных ранее дополнительных языков.
- Далее надо добавить элементы управления в шаблоны страниц сайта — это меню выбора перевода и кнопки «Добавить/удалить перевод». page.tpl:
<!-- Меню выбора перевода -->
<!-- BEGIN: I18N_LANG -->
{PHP.L.Language}:
<ul>
<!-- BEGIN: I18N_LANG_ROW -->
<li><a href="{I18N_LANG_ROW_URL}">{I18N_LANG_ROW_TITLE}</a></li>
<!-- END: I18N_LANG_ROW -->
</ul>
<!-- END: I18N_LANG -->
<!-- Кнопки управления -->
{PAGE_I18N_TRANSLATE} {PAGE_I18N_DELETE}
- Теперь Вы (или пользователь с соответствующим доступом) открыв любую страницу из категории указанной в п.2 увидит кнопку «Перевести», нажав на которую будет доступен интерфейс перевода страницы на один из еще не переведенных языков.
- Ну и последнее... Надо добавить на сайт меню переключения языков. Для примера добавим код в шаблон header.tpl, чтобы меню было доступно на всех страницах сайта. Вот пример такого кода:
<!-- BEGIN: I18N_LANG -->
<ul>
<!-- BEGIN: I18N_LANG_ROW -->
<li>
<a href="{I18N_LANG_ROW_URL}" title="{I18N_LANG_ROW_TITLE}"><img src="images/flags/{I18N_LANG_ROW_FLAG}.png" alt="{I18N_LANG_ROW_CODE}" /></a>
</li>
<!-- END: I18N_LANG_ROW -->
</ul>
<!-- END: I18N_LANG -->
Вот и все.
Добавление:
8. Если на вашем сайте используется плагин `urlreditor`, то стоит проверить наличие следующей строки в файле `.htaccess`:
# Language selector
RewriteRule ^(ru|ua|en|de|nl)/(.*) $2?l=$1 [QSA,NC,NE,DPI]
Если вы его устанавливали по инструкции, то строка скорее всего в вашем файле имеется, т.к. она есть в шаблоне `sef-urls.htaccess`.
Если вы добавляете язык отличный от указанных в списке (ru|ua|en|de|nl), то просто добавьте его туда через разделитель `|`.
#2. Нюансы
Плагин i18n не имеет настройки для задания отдельных заголовка и описания сайта (meta description, title) для каждого из языков. Но это можно исправить в 2 счета:
Для единообразия отображения заголовков переведенных страниц в категории system
добавляем в языковые файлы темы следующую строку:
if (strtolower($_GET['c']) == 'system') $cfg['page']['title_page'] = '{TITLE}';
Поблагодарили: 7 раз
thanks
Поблагодарили: 26 раз
Спасибо за дополнение!
Поблагодарили: 1 раз
# Language selector
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(ru|ua|en|de|nl)/(.*) index.php?rwr=$2&l=$1 [QSA,NC,NE]
Так лушче
Поблагодарили: 1 раз
Финальный вариант:
# Language selector
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2})/(.*)$ $2?l=$1 [L,QSA]
RewriteRule ^([a-z]{2})$ index.php?l=$1 [L,QSA]
1.Далее надо сделать перевод названий категорий, для этого идем в раздел «Управление сайтом» → «Структура» и жмем кнопку «Интернационализация структуры». Тут вы увидите таблицу выбранных категорий и их описаний. Заполняем поля в колонках, соответствующих каждому из указанных ранее дополнительных языков.
-------------------------------------------------------------
Зайдя в раздел «Управление сайтом» → «Структура», вижу только перечень модулей Folio, Pages, User Categories, Project.
Кнопки «Интернационализация структуры» - нет!
Если зайти в любой модуль, например в Project, то вижу кнопку «Интернационализация структуры», нажав на неё открывается страница (index.php?e=i18n&m=structure), где написано "Интернационализация структуры" под ней English, Russian
Нету таблицы выбранных категорий и их описаний, вообще пусто
В чём может быть проблема ?
Cotonti SIENA(самая последня на сег. день), тема Masters, Админки разные пробовал ставить, сейчас Yukon