Создание плагина для WordPress с поддержкой нескольких языков — важный аспект для расширения аудитории и удобства пользователей из разных стран. В этой статье разберем, как правильно добавить локализацию в собственный плагин, чтобы все строки интерфейса можно было переводить через стандартные механизмы WordPress и популярные переводческие плагины.
Что такое локализация и зачем она нужна в плагинах WordPress
Локализация (i18n) — это процесс подготовки к переводу, а интернационализация (l10n) — собственно внедрение перевода в продукт. В контексте WordPress это значит, что плагин должен быть написан так, чтобы его тексты можно было перевести с помощью файлов .pot, .po и .mo. Это позволяет адаптировать плагин под разные языки без изменения кода.
Без локализации плагин будет показывать интерфейс только на одном языке, что ограничивает аудиторию и снижает удобство использования.
Как подготовить плагин к локализации: базовые шаги
Для начала в файлах плагина нужно использовать функции локализации WordPress, например, __(), _e(), _n() и другие. Эти функции оборачивают строки, которые вы хотите перевести.
Пример:
function wptranslate_myplugin_text() {
echo __('Привет, мир!', 'wptranslate-myplugin');
}
Здесь 'wptranslate-myplugin' — это текстовый домен вашего плагина, который должен совпадать с именем каталога или файла плагина, чтобы WordPress мог правильно найти переводы.
Далее необходимо загрузить файлы перевода. Обычно это делается через хук plugins_loaded:
function wptranslate_myplugin_load_textdomain() {
load_plugin_textdomain('wptranslate-myplugin', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'wptranslate_myplugin_load_textdomain');
Папка languages содержит файлы перевода .mo и .po.
Генерация и работа с файлами перевода (.pot, .po, .mo)
Файл .pot (Portable Object Template) — это шаблон, в котором собраны все переводимые строки из вашего плагина. Его можно сгенерировать с помощью инструментов:
- Poedit (https://poedit.net/)
- WP-CLI:
wp i18n make-pot ./path-to-plugin ./languages/wptranslate-myplugin.pot - Плагины для WordPress, например, Loco Translate
После получения .pot вы создаёте файлы .po — собственно переводы для конкретных языков, например, ru_RU.po, en_US.po.
Затем эти .po компилируются в бинарные .mo файлы, которые WordPress загружает для показа переводов.
Пример структуры плагина с локализацией
Рассмотрим минимальный пример структуры:
wptranslate-myplugin/wptranslate-myplugin.php— основной файл плагинаlanguages/— папка с файлами перевода
В файле wptranslate-myplugin.php:
<?php
/**
* Plugin Name: WPTranslate MyPlugin
* Text Domain: wptranslate-myplugin
* Domain Path: /languages
*/
function wptranslate_myplugin_load_textdomain() {
load_plugin_textdomain('wptranslate-myplugin', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'wptranslate_myplugin_load_textdomain');
function wptranslate_myplugin_greeting() {
echo __('Добро пожаловать в WPTranslate MyPlugin!', 'wptranslate-myplugin');
}
Особенности перевода динамического контента и параметров
Часто нужно переводить строки с переменными. Для этого используйте sprintf() вместе с функцией __():
$user_name = 'Иван';
echo sprintf(__('Привет, %s!', 'wptranslate-myplugin'), $user_name);
Важно, чтобы последовательность параметров соответствовала переводу, поэтому в некоторых языках порядок может отличаться. В этом случае удобно использовать позиционные параметры:
echo sprintf(__('User %1$s has %2$d points', 'wptranslate-myplugin'), $user_name, $points);
Советы по работе с переводами в плагинах
- Используйте уникальный текстовый домен, соответствующий названию плагина.
- Всегда оборачивайте строки, которые видит пользователь, функциями локализации.
- Сохраняйте файлы перевода в отдельной папке
/languagesвнутри плагина. - Проверяйте корректность файлов
.poи.moс помощью Poedit или Loco Translate. - Регулярно обновляйте шаблон
.potпри добавлении новых строк. - Тестируйте перевод с разными языками WordPress.
Использование плагина Clearfy Pro для оптимизации локализации
Плагин Clearfy Pro помогает оптимизировать работу сайта, в том числе ускоряет загрузку переводов, избавляясь от лишних локализаций, отключая ненужные языковые пакеты. Это полезно, если у вас большой плагин или много языков.
Clearfy Pro позволяет управлять загрузкой языковых файлов через удобный интерфейс, что положительно сказывается на производительности сайта.
Заключение
Добавление локализации в собственный плагин WordPress — обязательный шаг для создания профессионального и удобного продукта. Используйте встроенные функции WordPress для перевода строк, создавайте и обновляйте файлы .pot и .po, тестируйте переводы. Это не только расширит аудиторию вашего плагина, но и улучшит его восприятие пользователями по всему миру.
Если хотите дополнительно оптимизировать работу с переводами и ускорить загрузку языковых файлов, рекомендуем обратить внимание на Clearfy Pro от WPShop.