Локализация своих плагинов имеет смысл, если вы хотите охватить как можно большую аудиторию. Нужно лишь немного потрудиться, чтобы сделать ваш плагин translation ready (готовым к переводу), и это намного проще, чем вы думаете. В сегодняшней статье мы покажем вам как локализировать свои плагины и подготовить их переводу.
WordPress для локализации использует фреймфорк GNU gettext и существует три типа файлов, используемых в этом фреймворке: файлы POT (Portable Object Template), которые содержат готовый текст для перевода, PO (Portable Object) файлы, которые содержат уже переведенный текст; и файлы MO (Machine Object), которые являются по сути файлами PO, однако переведены в удобный для машинной обработки формат.
Понимание того, что это за файлы и каким образом они работают важно для осознания процесса перевода.
Добавляем Text Domain
Локализация плагинов подобна локализации тем, и в этом случае также необходимо сообщить WordPress, где ему искать языковые файлы, путем добавления text domain.
Нужно добавить следующую функцию в основной файл вашего плагина:
load_plugin_textdomain('yourplugin', false, basename( dirname( __FILE__ ) ) . '/languages' );
Изменяем “yourplugin” на название вашего плагина, а “basename” — на расположение папки вашего плагина, где вы хотите хранить языковые файлы. Мы рекомендуем создавать папку “Languages” в папке вашей темы и хранить файлы там.
Но этот код не нужно добавлять повсеместно — функцию load_plugin_textdomain нужно вызвать в хуке WordPress init, вот так:
function ap_action_init() { // Локализация load_plugin_textdomain('domain', false, dirname(plugin_basename(__FILE__))); } // Add actions add_action('init', 'ap_action_init');
Локализируем свой плагин
Теперь все готово для начала локализации плагина. Вам необходимо будет отредактировать текстовые строки в файлах своего плагина и превратить их в функции, чтобы они могли быть переведены. Для этого их для начала нужно обернуть в вызов функции __():
<?php echo '<h4>Привет, Мир!</h4>'; ?>
превращается в
<?php echo '<h4>' . __('Привет, Мир!', 'yourplugin') . '</h4>'; ?>
Если ваш код использует функцию echo для браузера, тогда нужно использовать функцию e_():
<?php echo 'Привет, Мир!'; ?>
становится
<?php _e('Привет, Мир!', 'yourplugin'); ?>
Также можно обернуть обычный текст:
Привет, Мир!
превращается в
<?php _e('Привет, Мир!','yourplugin'); ?>
Не забудьте заменить “yourplugin” на название вашего плагина.
Создаем файл POT
Следующим шагом будет создание файла POT. POT-файлы обычно создаются авторами плагинов и поставляются вместе с темами, чтобы переводчики могли перевести плагин.
Мы будем использовать программу Poedit, простое опенсорсное решение, доступное для Mac OS X, Windows и UNIX/Linux, служащая для создания POT-файлов.
1. Установить Poedit.
2. Открыть Poedit и перейти в File > New Catalog.
3. В окне свойств Catalog указать информацию о вашем проекте.
4. Далее, переходим на вкладку Sources paths, где нужно указать путь к той папке, которую Poedit будет использовать для поиска исходных файлов, содержащих текст для перевода. Ранее, в этой статье, мы рекомендовали создать папку “Languages” в директории вашего плагина и сохранять ваши файлы туда. Поэтому в данном случае путь должен быть “../”
5. Выбираем вкладку Sources keywords. Здесь нам нужно определить функции, которые мы используем для локализации текста в наших плагинах: __() и _e().
6. После того, как вы кликните на “OK”, у вас запросят название файла POT. По-умолчанию, Poedit захочет сохранить ваш файл как .po файл, однако, в виду того, что эти два типа файлов идентичны, вы можете выбрать сохранение .po файла как .pot файл. Назовите файл так же как и плагин, задайте ему расширение .pot и сохраните в папке под названием “Languages” в директории вашего плагина.
7. Когда вы нажмете на “OK”, Poedit просканирует папки, указанные вами на вкладке Sources paths, и выведет список текста, доступного для перевода.
8. Последний шаг – сохраните ваш файл POT.
Теперь ваш плагин готов к переводу, он «translation ready».
Надеемся, что эта статья внесла ясность в вопрос о подготовке плагинов к переводу.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.