Выпуск 14. Многоязыковые версии блога
У меня часто спрашивают, можно ли приспособить WordPress для сайта с многоязыковым контентом. Например нужно сделать русскую и английскую версию. На сей счет есть несколько решений, сегодня об этом и поговорим.
Постановка задачи
Для того, чтобы определиться в какую сторону двигаться, попробуем определить варианты того, каким должен быть результат. Прежде всего нужно определиться будут ли языковые версии "существовать" вместе (с одним управлением) или всё-таки раздельно. От этого и будут зависеть варианты решения.
Варианты
Если вы хотите сохранить управление единым, то для создания многоязыкового сайта нужно решить вопрос о переключении языка со стороны пользователя. То есть это должно быть либо автоматическое определение языка браузера, либо пользователь сам должен выбрать соответствующую ссылку.
Второй вариант, это сделать полностью отдельную языковую версию.
Третий вариант предполагает использование автоматического перевода страниц сайта.
Делаем отдельно
На мой взгляд, это наиболее оптимальный вариант, поскольку с ним не требуется идти ни на какие ухищрения. Всё, что нужно сделать, так это поставить еще один WordPress. Например, можно поставить английскую версию блога в каталог http://сайт/en/ . При установке WordPress нужно будет только указать другой префикс таблиц базы данных, например wp_en_.
Делаем совместно
Самый сложный вариант, поскольку потребует от вас не только серьезно переработать шаблон, но и постоянно следить за тем, чтобы различные языковые версии текстов "не перемешались". Покажу как это можно сделать с помощью плагина Polyglot.
Суть его работы в следующем. Когда вы создаете текст записи, то отмечаете в нем различные языковые части, примерно так:
<lang_ru> Русский текст </lang_ru> <lang_en> English text </lang_en> <lang_fr> France text </lang_fr>
Для того, чтобы пользователь мог переключиться на нужный язык, используется функция polyglot_list_langs:
if(function_exists('polyglot_list_langs')){
polyglot_list_langs(false);
}
Параметр этой функции позволяет выводить флаги стран.
То есть теперь, пользоваетель переключится, скажем на EN и увидит только:
English text
Для того, чтобы изменения касались и названий рубрик, вы можете указать их языковой "признак" прямо в названии. Единственный минус это то, что в WordPress длина этого поля не может превышать 55 символов. Если этого недостаточно, то нужно вручную увеличить его до нужного значения через phpMyAdmin.
Точно также вы можете указывать языки и в заголовках записей.
Настройка Polyglot
В файле poliglot.php нужно установить язык по умолчанию, а также указать все те, которые планируется использовать. Думаю, что особых проблем с этим не возникнет, поскольку эти настройки вынесены в начало файла (английский язык это us.png или uk.png).
Если вы используете ЧПУ (постоянные ссылки), то можно прописать в .htaccess дополнительное правило RewriteRule (код смотрите в плагине).
Настройка шаблона
Понятно, что сам шаблон тоже придется переделывать, чтобы изменять изображения с текстом на нужном языке, а также все "служебные" надписи.
Для этого нужно с файле шаблона (например index.php) узнать текущий язык. Проще всего ввести дополнительную переменную, которая будет указывать на текущий язык (привожу сразу готовый код):
<?php
$def_lang = 'ru'; // язык по умолчанию в шаблоне
if(function_exists('polyglot_list_langs')){
global $lp_lang_pref;
$def_lang = $lp_lang_pref;
// отображаем флаги
echo '<ul>';
polyglot_list_langs(true);
echo '</ul>';
}
?>
Переменная $def_lang теперь хранит у нас текущий язык. Причем, даже если вы отключите плагин, то эта переменная будет хранить язык по-умолчанию.
Дальше, как вы понимаете, дело техники
. При подключении, например изображения вы подставляете текущий язык в качестве, скажем каталога:
<img src="<?php bloginfo('stylesheet_directory'); ?>
/images/<?php echo $def_lang . '/' ?>image.jpg">
В этом примере путь для английской версии будет: http://сайт/.../images/en/image.jpg.
Для русской: http://сайт/.../images/ru/image.jpg
Будем считать, что всё ясно
.
Третий вариант
Вы можете разместить на своем сайте специальную форму он-лайн переводчика, и посетителю только останется выбрать свой язык. Всё остальное будет сделано автоматически. С точки зрения трудозатрат это это, наверное, самый простой способ. Другое дело, что качество перевода не ахти, поэтому вряд ли он устроит большинство пользователей. С другой стороны он просто идеален для тех, кто сам не полиглот
(типа меня) и создавать записи на иностраном языке просто не может.
Честно признаюсь, что этот способ я еще не опробовал, поэтому просто даю ссылочку, где это все реализованно и предлагается скачать готовый пример: http://www.mkbergman.com/. Для проверки выберите справа свой язык и посмотрите на результат. При выборе языка вы сразу видите через какой он-лайн переводчик будет произведен перевод.
Постоянная ссылка: http://maxsite.org/?p=105
Версия для печати
