При разработке собственного плагина для WordPress очень часто возникает необходимость сделать его многоязычным. Это позволяет расширить аудиторию и сделать продукт доступным для пользователей из разных стран. В этой статье мы подробно разберём, как правильно добавить поддержку языков в собственный плагин WordPress, какие функции использовать, как создать и подключить файлы переводов, а также приведём примеры кода.
Почему важно добавлять поддержку языков в плагинах WordPress
WordPress — это глобальная платформа с миллионами пользователей по всему миру. Если ваш плагин не поддерживает локализацию, он будет понятен только на одном языке, что серьёзно ограничит его распространение и использование. Кроме того, наличие переводов повышает рейтинг плагина в официальном репозитории и улучшает пользовательский опыт.
Добавление поддержки языков позволяет:
- Переводить текстовые строки плагина без изменения исходного кода.
- Использовать стандартные инструменты WordPress для локализации.
- Поддерживать несколько языков одновременно.
- Облегчить работу переводчиков и сообществ.
Далее рассмотрим, как реализовать это на практике.
Подготовка плагина к локализации: функции и структура файлов
Первый шаг — использование функций для локализации текста. В WordPress для этого применяются функции __() и _e(). Они позволяют отмечать строки, которые нужно переводить.
Например, вместо echo 'Привет, мир!'; нужно писать:
echo __('Привет, мир!', 'wptranslate');Где 'wptranslate' — это текстовый домен плагина, он должен быть уникальным и совпадать с названием папки плагина или файла плагина.
Используйте функцию __() для получения перевода строки, а _e() — если нужно сразу вывести её на экран.
Далее необходимо загрузить текстовый домен в основной файл плагина, чтобы WordPress знал, где искать файлы переводов. Обычно это делают в хук plugins_loaded:
function wptranslate_load_textdomain() {
load_plugin_textdomain('wptranslate', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'wptranslate_load_textdomain');Здесь /languages/ — папка внутри плагина, где будут храниться файлы переводов.
Создание и подключение файлов перевода (.pot, .po, .mo)
Чтобы перевести плагин, необходимо подготовить шаблон перевода (.pot), а затем переводы для нужных языков (.po) и скомпилированные файлы (.mo).
Для создания файла .pot можно использовать такие инструменты, как Poedit или WP-CLI команду:
wp i18n make-pot . languages/wptranslate.pot --exclude=node_modules,vendorПосле создания шаблона перевода, откройте его в Poedit и создайте переводы для нужных языков. Например, для русского языка сохраните файл как wptranslate-ru_RU.po, а затем Poedit автоматически сгенерирует wptranslate-ru_RU.mo.
Эти файлы нужно положить в папку /languages/ вашего плагина.
Пример структуры плагина с переводами
wptranslate-plugin/
├── wptranslate-plugin.php
├── languages/
│ ├── wptranslate-ru_RU.po
│ └── wptranslate-ru_RU.mo
└── includes/
└── ...Пример использования локализации в коде плагина
Рассмотрим отрывок кода из плагина, где выводится сообщение на экран с поддержкой перевода:
function wptranslate_admin_notice() {
echo '<div class="notice notice-success is-dismissible">';
echo '<p>' . __('Плагин успешно активирован!', 'wptranslate') . '</p>';
echo '</div>';
}
add_action('admin_notices', 'wptranslate_admin_notice');Если в языковых файлах будет переведена строка "Плагин успешно активирован!", WordPress автоматически подставит нужный перевод.
Автоматическое определение языка и переключение переводов
WordPress автоматически подгружает перевод в зависимости от текущего языка сайта, установленного в настройках. Вам не нужно писать дополнительный код для переключения языков — достаточно правильно подготовить файлы переводов и загрузить текстовый домен.
Однако, если ваш плагин выводит строки в JavaScript, потребуется отдельный подход для локализации скриптов с помощью функции wp_localize_script(). Например:
function wptranslate_enqueue_scripts() {
wp_enqueue_script('wptranslate-script', plugin_dir_url(__FILE__) . 'js/script.js', array('jquery'), '1.0', true);
wp_localize_script('wptranslate-script', 'wptranslateData', array(
'greeting' => __('Привет из скрипта!', 'wptranslate'),
));
}
add_action('wp_enqueue_scripts', 'wptranslate_enqueue_scripts');В вашем JavaScript можно использовать объект wptranslateData.greeting для вывода локализованной строки.
Советы по работе с переводами и оптимизации
Для удобства перевода и поддержки плагина рекомендуем:
- Всегда использовать функции локализации для всех строк, выводимых пользователю.
- Соблюдать единый текстовый домен во всём плагине.
- Регулярно обновлять файлы переводов при изменении текста.
- Использовать WP-CLI для генерации и обновления .pot файлов.
- Проверять корректность кодировки файлов перевода — UTF-8 без BOM.
Также вы можете использовать плагины, такие как Loco Translate, для удобной работы с переводами прямо в админке WordPress.
Вывод
Добавление поддержки языков в собственном плагине — это несложный, но важный шаг для повышения качества и доступности вашего продукта. Следуя приведённым рекомендациям и используя стандартные функции WordPress, вы сможете обеспечить качественную локализацию и расширить аудиторию пользователей.
Если хотите посмотреть примеры и приобрести готовые решения для расширения функционала, например, для автоперевода или оптимизации плагинов, обратите внимание на продукты из каталога WPSHOP.