Поддержка нескольких языков в WordPress

Дата публикации:Август 31, 2010

Как вы уже успели заметить, WordPress поставляется в самых разных языковых комплектациях. Специальные языковые файлы, обладающие расширением .mo, определяют текущий язык как для всей системы WordPress в целом, так и для отдельных ее составляющих: тем, плагинов и т.д. Загрузка языковых файлов происходит в автоматическом режиме: WordPress не предлагает пользователю выбрать тот или иной язык для тем или плагинов. Основной параметр, определяющий выбор языка — WPLANG, находящийся в файле wp-config.php.

Перед тем, как приступить к рассмотрению языковых файлов, скажем несколько слов о процессе локализации. В самом начале перед локализацией определяется POT (Portable Object Template) файл. Он создается при помощи специальной программы, анализирующей тему (плагин) и выделяющей все слова и фразы, помеченные для перевода. На следующем шаге из POT файла создается .po файл, в котором содержатся оригинальные фразы (обычно на английском языке) и их перевод на нужный язык.

Наконец, на финальном этапе из .po файла получают .mo (Machine Object) файл, обладающий компактными размерами. Именно .mo файлы и используются WordPress при определении языка.

Возможно, в процессе чтения у вас возник вопрос: каким образом программа, генерирующая POT файл, определяет, какие слова и фразы доступны для перевода?

Вся работа по размечиванию темы или плагина ложится на плечи их создателя. Каждая фраза, доступная для перевода, должна быть заключена в специальный PHP-сниппет, а также должна быть отнесена к какому-либо домену. Домен, определяющий направление перевода, в свою очередь, должен быть прописан в functions.php.

Допустим, мы хотим сделать текст «Hello, you!» доступным для перевода. Это выглядело бы следующим образом:

<?php _e('Hello you!', 'mydomain'); ?>

Если в теме имеется перевод текста и определен mydomain в файле functions.php, вы увидите на экране локализованную строку. Иначе вы просто получите тот же самый текст на английском языке.

Аналогичная конструкция выполняет те же самые действия:

<?php __('Hello you!', 'mydomain'); ?> 

Иногда имеется необходимость в локализации строки, находящейся в тегах шаблона. К примеру, строка «Read more», которая появляется при использовании тега the_content() с <!-more->, может быть переведена следующим образом:

<?php the_content(__('Read more', 'notesblog')); ?>

Почему именно двойное подчеркивание, а не _e()? Инструкция _e() в php-функциях может приводить к неоднозначным результатам, поэтому лучше всего вместо нее использовать __().

Домен, определяющий направление перевода, задается в файле functions.php следующим образом:

load_theme_textdomain('notesblog'); 

Здесь ‘notesblog’ — это название домена. Он должен быть аналогичен указанному во всех языковых сниппетах.

Работа с языковыми файлами

Для того, чтобы работать с POT файлами, необходимо специальное программное обеспечение. Наиболее популярной программой для локализации языковых файлов является мультиплатформенный редактор PoEdit (www.poedit.com). Он позволяет сохранять .po файлы в формате .mo.

Также удобными при работе с .po файлами оказываются GNU программы GetText (www.gnu.org/software/gettext/) и LaunchPad (translations.launchpad.net/).

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

Проблемы трансляции

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

Поделиться

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.