Всегда приятно, когда можно без особых усилий перевести плагин или тему для движка 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 будет просматривать файлы в этих папках и выбирать строки, которые нужно перевести.
Вкладка «Ключевые слова». Это важный момент. Тут нужно перечислить название функций, которые вы использовали для перевода строк. Без скобок!!!
После этого, программа импортирует строки из файлов с исходым кодом.
Если строки нужно обновить, выбираем в меню «Каталог» пункт «Обновить из исходного кода».
После импорта строк можно приступать к переводу.
Сам перевод особой сложности не представляет. Если, конечно, вы хорошо знаете язык 😉 Выбираете строку и пишите в нижней части экрана перевод для неё.
Сохраняем файл. 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 сеть в вашем доме.
Банкам и службам инкассации: инкассаторские сумки собственной разработки, возможна печать вашего логотипа