Добавление локализации в плагин WordPress — важный шаг для расширения аудитории и повышения удобства использования. Если ваш плагин поддерживает несколько языков, пользователи смогут работать с ним на своём родном языке, что значительно улучшит восприятие и повысит популярность вашего продукта.
Зачем нужна локализация и интернационализация в WordPress плагинах
Под локализацией понимается процесс адаптации плагина под конкретный язык и культуру пользователя, включая перевод текстов, форматирование дат, чисел и т.д. Интернационализация (i18n) — это подготовка к локализации, то есть кодирование плагина так, чтобы впоследствии можно было легко добавить новые языки.
Для WordPress существует стандартизированная система локализации, которая базируется на файлах .pot, .po и .mo. Использование этой системы позволяет реализовать поддержку любого количества языков без изменения основного кода плагина.
Подготовка плагина к локализации: правильное оформление текста
Первое, что нужно сделать — заменить все строки с текстом, выводимым пользователю, на функции локализации WordPress. Это позволяет системе распознать, какие именно строки нужно перевести.
Основные функции для локализации в WordPress:
__()— возвращает переведённую строку;_e()— выводит переведённую строку;_n()— учитывает множественное число;esc_html__()иesc_html_e()— экранируют HTML при переводе.
Например, вместо echo 'Привет, мир!'; нужно использовать echo wpmentor__('Привет, мир!', 'wpmentor-plugin');, где wpmentor-plugin — это уникальный текстовый домен плагина.
Пример замены строк в коде
function wpmentor_plugin_greeting() {
echo esc_html__('Добро пожаловать в мой плагин!', 'wpmentor-plugin');
}Текстовый домен должен совпадать с названием папки плагина или файла основного плагина, чтобы WordPress корректно загружал переводы.
Создание и подключение текстового домена
Чтобы WordPress понимал, где искать переводы, нужно подключить текстовый домен в главном файле плагина. Делается это через функцию load_plugin_textdomain().
Добавьте следующий код в функцию инициализации плагина или в основной файл:
function wpmentor_plugin_load_textdomain() {
load_plugin_textdomain('wpmentor-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'wpmentor_plugin_load_textdomain');Здесь папка /languages внутри плагина будет содержать все файлы переводов.
Создание файлов перевода .pot, .po и .mo
Файл .pot — это шаблон перевода, который содержит все строки плагина, подготовленные для перевода. Его можно создать с помощью специальных инструментов, например:
- Poedit — десктопное приложение;
- WP CLI с командой
wp i18n make-pot; - Плагины для WordPress, например Loco Translate.
После создания .pot переводчик создаёт файлы .po и .mo для конкретного языка, например ru_RU.po и ru_RU.mo. Файл .po — это текстовый файл с переводом, а .mo — его машинный вариант, используемый WordPress для быстрого чтения.
Пример структуры папки /languages
- wpmentor-plugin.pot
- ru_RU.po
- ru_RU.mo
Использование Loco Translate для удобного перевода
Если вы не хотите вручную создавать и редактировать файлы .po, можно установить плагин Loco Translate. Он позволяет создавать и редактировать переводы прямо из админ-панели WordPress.
Преимущества Loco Translate:
- Автоматический поиск строк в плагине;
- Простой интерфейс для ввода переводов;
- Возможность экспортировать .po и .mo файлы;
- Поддержка множества языков.
Реализация локализации на практике: полный пример
Рассмотрим минимальный пример плагина с локализацией.
<?php
/**
* Plugin Name: WP Mentor Sample Plugin
* Text Domain: wpmentor-plugin
* Domain Path: /languages
*/
function wpmentor_plugin_load_textdomain() {
load_plugin_textdomain('wpmentor-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'wpmentor_plugin_load_textdomain');
function wpmentor_plugin_display_message() {
echo '<p>' . esc_html__('Это пример локализованного сообщения в плагине WP Mentor.', 'wpmentor-plugin') . '</p>';
}
add_action('admin_notices', 'wpmentor_plugin_display_message');
?>После создания структуры и файлов переводов этот плагин покажет в админке сообщение на языке системы.
Советы по качественной локализации плагина
Чтобы локализация была максимально удобной и корректной, учтите следующие моменты:
- Всегда используйте функции локализации для всех пользовательских строк — заголовков, описаний, сообщений об ошибках.
- Используйте контекстные функции
_x()и_ex(), если одна строка может иметь разные переводы в зависимости от контекста. - Размещайте файлы перевода в отдельной папке
/languagesвнутри плагина. - Проверяйте корректность текстового домена везде, где вызываете функции перевода.
- Тестируйте плагин на разных языках, меняя язык сайта в настройках WordPress.
Заключение
Локализация — это не просто переводы, а важная часть профессионального подхода к разработке плагинов WordPress. Следуя описанным шагам, вы сможете сделать свой плагин доступным для широкой аудитории, повысить его качество и удобство использования.