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