Создание файлов переводов для плагинов и тем WordPress

Владимир | | PHP, Web разработка, WordPress.

wp translations logo

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

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

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

Шаг первый. Определяем, какие строки нужно перевести.

Для этого, в исходных файлах плагина или темы все текстовые строки, которые нужно перевести, помещаем внутрь функций:

_e() – выводит (echo) текст;
__() – возвращает (return) текст;
_n() – позволяет работать с единственным и множественным числом;
_x() – работает аналогично __(), но имеет дополнительный параметр – контекст.

Подробно их использование описано в статье I18n for WordPress Developers. Повторять их примеры я не буду, но советую обратить внимание на два момента.

1) Очень желательно использовать второй параметр в этих функцих (domain). Для плагинов обычно используют название плагина, для темы — название папки в которой она расположена (а вообще, подойдет любая уникальная строка).

2) Символы окончания строк (EOL) должны быть в Unix-формате, т.е. \n, а не \r\n, как принято в windows. Иначе могут быть проблемы при использовании утилиты gettext. Большинство редакторов вроде notepad++ позволяют легко заменить окончания.

Шаг второй. Создаём файлы переводов.

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

Вообще для этих целей предназначена утилита gettext, но она консольная и пользоваться ей не очень удобно.

Гораздо приятнее работать с программой Poedit, т.к. она сделает все рутинные операции за вас.

При её первом запуске желательно сразу указать личные данные (Меню Файл -> Установки), т.к. они сохраняются в файлах переводов.

poedit options

После этого можно приступать к созданию файлов переводов.

Заходим в меню Файл -> Создать каталог и в открывшемся окне внимательно заполняем настройки.

Общие данные о проекте

poedit project options

Тут всё довольно просто, главное не ошибиться с кодировкой.

Вкладка «Путь». Тут нужно указать путь к папке плагина или темы.

poedit project options 2

PoEdit будет просматривать файлы в этих папках и выбирать строки, которые нужно перевести.

Вкладка «Ключевые слова». Это важный момент. Тут нужно перечислить название функций, которые вы использовали для перевода строк. Без скобок!!!

poedit project options 3

После этого, программа импортирует строки из файлов с исходым кодом.

Если строки нужно обновить, выбираем в меню «Каталог» пункт «Обновить из исходного кода».

После импорта строк можно приступать к переводу.

Сам перевод особой сложности не представляет. Если, конечно, вы хорошо знаете язык 😉 Выбираете строку и пишите в нижней части экрана перевод для неё.

Сохраняем файл. Poedit автоматически создает два файла .po и .mo.

Важный момент — имя файла.

Обычно формируется следующим образом

pluginname-locale.po
pluginname-locale.mo

Например
termdescription-ru_RU.mo

Шаг третий. Загружаем файлы переводов в плагине.

Для этого можно использовать следующий код.

function myplugin_init() {
…
$plugin_dir = basename(dirname(__FILE__));
load_plugin_textdomain( $domain, '/wp-content/plugins/'.$plugin_dir, $plugin_dir );
…
}

Тут предполагается, что плагин и файлы переводов находятся в папке pluginname.

Этот код должен быть вызван при инициализации плагина. Например, в функции, которая вызывается действием init или admin_init (если переводы нужны только для админки)

add_action( 'init', 'myplugin_init' );

В случае с темами, подключение файлов переводов немного проще. В файл functions.php добавьте вызов

load_theme_textdomain(domain-name);

Имя файла при этом должно иметь вид:

locale.mo

например, ru_RU.mo. И находиться он должен в папке с темой.

Шаг четвёртый. Выбор файла перевода.

WordPress должен определить, какой именно перевод использовать. Указать это можно в настройках блога (файл wp-config.php). Найдите строку в которой определена константа WPLANG и установите нужное значение.

Например, так

define ('WPLANG', 'ru_RU');

Если у вас возникли вопросы или замечания, пишите, постараюсь ответить.

Удачи!

Интересно почитать

Как установить и настроить wifi сеть в вашем доме.

Банкам и службам инкассации: инкассаторские сумки собственной разработки, возможна печать вашего логотипа