Optimystic

Language Switcher+Gettext=мультиязычный блог

Передо мной встала задача сделать мультиязычный блог на основе WordPress 2.2. Я поставил Language Switcher WordPress Plugin, версия 1.08. Этот модуль организует уникальные ссылки типа www.домен.ru/здесь_уникальный_URL/lang/ru или www.домен.ru/здесь_уникальный_URL/lang/en, хотя обе ссылки ведут на одну и ту же страницу. (Примечание – в URL используется слово lang, это значение переменной $langSwitchPermalink. Вы можете сами менять его в файле langswitch.php, что я и сделал, т.к. первоначальное значение переменной было длинное).

1. Устанавливаем Language Switcher как обычный плагин, активируем его.

2.Заходим в администраторскую часть: НАСТРОЙКИ -> LANGUAGE SWITCHER и устанавливаем необходимые языки, а также форматы вывода времени и даты.

3. Выводим меню с доступными языками в файле sidebar.php:

<ul>
<?php if(function_exists('langswitch_list_langs')) { langswitch_list_langs(true, true); } ?>
</ul>

Рассмотрим функцию langswitch_list_langs(true, true). Первый параметр – это отображение флага в меню, второй – отображение текстового обозначения языка. Возможные значения true или false.

4. Переводим текст в записях и на страницах, а также в заголовках. Для этого текст обрамляется "тегами":

<lang_en>This is the post text in English</lang_en>
<lang_ru>Этот текст отобразится только для русской версии.</lang_ru>
<lang_all>Этот текст будет виден на всех языках.</lang_all>
И этот текст тоже будет виден на всех языках, т.к. он не обрамлен "языковыми тегами".

Внимание! Если вы переводите заголовки записей, страниц, рубрик и пр. замените в данных местах тег вида <lang_en> на [lang_en].

5. Теперь необходимо перевести текстовые элементы, встречающиеся в самом WordPress и установленных плагинах. Это слова Рубрики, Ссылки, Поиск, Архив и пр. Естественно, что на английской версии сайта они должны отображаться, как Categories, Links, Search, Archive. Это можно достаточно легко реализовать с помощью "технологии" Gettext. Всё, что я далее излагаю, я почерпнул здесь – http://php.russofile.ru/ru/authors/multilangual/php_gettext_prof/.

5.1 У меня на хостинге библиотека Gettext была уже установлена, потому ничем не могу помочь по установке.
5.2 Теперь необходимо "разметить" те места в файлах .php WordPress и установленных плагинах, в которых будет делаться лингвистическая замена. Например, вместо

<?php _e('Архив'); ?> или <h3>Новости</h3>

следует вставить

<?php echo _('Архив'); ?> или <h3><?php echo _('Новости'); ?></h3>

Прочитайте раздел GetText – взгляд изнутри на странице http://php.russofile.ru/ru/authors/multilangual/php_gettext_prof/, возможна эта информация вам поможет!

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

5.3 С помощью программы Poedit подготовьте файлы .po и .mo.
Прочитайте раздел GetText – профессиональная работа на странице http://php.russofile.ru/ru/authors/multilangual/php_gettext_prof/, возможна эта информация вам поможет!

5.4 Для удобства, создайте в корне своего приложения папку locale. Внутри этой директории необходимо создать папки для каждого из поддерживаемых языков: ru/, en/ и так далее. Внутри них необходимо создать папку LC_MESSAGES, а в эту папку, в свою очередь, необходимо поместить созданные нами .mo файлы для каждого языка (.po файлы можете поместить туда же, это не помешает). Для правильного нахождения двухбуквенного сочетания для каждого языка воспользуйтесь этой таблицей: http://www.loc.gov/standards/iso639-2/langcodes.html, или документацией по GetText.

   /locale/en/LC_MESSAGES/es.mo 
                          es.po 
           ru/LC_MESSAGES/ru.po 
                          ru.mo

5.5 Закачиваете все эти папки и "языковые" файлы на хостинг.

Anonymous
Отправить
Ответ на: