Многоязычность — важный аспект современных сайтов на WordPress. Если вы разрабатываете собственный плагин, и хотите, чтобы он был удобен для пользователей из разных стран, необходимо обеспечить поддержку нескольких языков. В этой статье мы подробно рассмотрим, как создать собственный многоязычный плагин WordPress, используя стандартные возможности локализации, а также разберём практические примеры кода.
Зачем нужно создавать многоязычные плагины WordPress
Создание многоязычного плагина повышает его универсальность и удобство для пользователей по всему миру. Это позволяет:
- Доставлять интерфейс и сообщения плагина на родном языке пользователя.
- Улучшить восприятие и доверие к вашему продукту.
- Расширить аудиторию и увеличить количество установок.
WordPress изначально поддерживает локализацию и интернационализацию (i18n), что позволяет разработчикам подключать языковые файлы и обеспечивать перевод строк.
Основы интернационализации плагина WordPress
Функции локализации и переводов
Для поддержки многоязычности используются функции __() и _e(), которые оборачивают строки, подлежащие переводу. Например:
echo __('Hello World', 'wplangs'); // Возвращает перевод строки
_e('Welcome to my plugin', 'wplangs'); // Выводит перевод строкиПервый параметр — строка, которую нужно перевести, второй — текстовый домен плагина (уникальный идентификатор).
Загрузка файлов переводов
Для подключения переводов в плагине используется функция load_plugin_textdomain(). Обычно её вызывают в хуке plugins_loaded:
function wplangs_load_textdomain() {
load_plugin_textdomain('wplangs', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'wplangs_load_textdomain');Файлы переводов (.mo, .po) размещаются в папке /languages внутри плагина.
Создание структуры плагина и языковых файлов
Структура каталогов
Рекомендуемая структура плагина с поддержкой локализации:
/my-multilang-plugin
|-- my-multilang-plugin.php
|-- /languages
|-- wplangs-ru_RU.po
|-- wplangs-ru_RU.mo
|-- wplangs-en_US.po
|-- wplangs-en_US.mo
|-- /includes
|-- functions.php
Главный файл плагина содержит подключение локализации и основной функционал.
Создание языковых файлов
Для создания файлов .po и .mo можно использовать редакторы, например Poedit. В них добавляйте переводы всех строк, использующих функции __() и _e().
Например, для строки __('Hello World', 'wplangs') создайте русскую версию «Привет, мир».
Пример простого многоязычного плагина
Создадим минимальный плагин с поддержкой локализации и выводом приветствия на выбранном языке.
<?php
/**
* Plugin Name: WP Langs Example
* Description: Пример многоязычного плагина для WordPress
* Text Domain: wplangs
* Domain Path: /languages
*/
function wplangs_load_textdomain() {
load_plugin_textdomain('wplangs', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'wplangs_load_textdomain');
function wplangs_display_greeting() {
echo '<p>' . __('Hello, visitor! Welcome to our multilingual plugin.', 'wplangs') . '</p>';
}
add_action('wp_footer', 'wplangs_display_greeting');
?>В этом примере текст выводится внизу сайта, а перевод зависит от активного языка WordPress.
Использование плагинов для облегчения перевода
Если вы хотите интегрировать свой плагин с популярными плагинами для многоязычности, такими как WPML или Polylang, важно следовать стандартам WordPress по локализации. Также можно использовать плагины для автоматического создания переводов, например WPGPT, который помогает генерировать переводы с помощью ИИ.
Советы по интеграции с WPML и Polylang
- Используйте правильный текстовый домен и функции локализации.
- Избегайте жёстко прописанных строк в коде без функций перевода.
- Обеспечьте возможность перевода настроек плагина через стандартные механизмы.
Динамическая смена языка внутри плагина
Иногда требуется, чтобы плагин сам управлял языком вывода, например, на странице настроек. Для этого можно использовать фильтр locale и собственные функции:
function wplangs_change_locale($locale) {
if (is_admin() && isset($_GET['wplangs_lang'])) {
$new_locale = sanitize_text_field($_GET['wplangs_lang']);
return $new_locale;
}
return $locale;
}
add_filter('locale', 'wplangs_change_locale');Так можно переключать язык админки плагина через параметр URL.
Отладка и тестирование переводов
Для проверки корректности локализации:
- Установите нужный язык сайта в настройках WordPress.
- Убедитесь, что файлы
.moзагружены и находятся в нужной папке. - Проверьте, что все строки обёрнуты в функции локализации.
- Используйте дебаг-плагины для вывода текущего языка и загруженных текстовых доменов.
Также полезно тестировать плагин на локальном сервере с разными языковыми настройками.
Заключение: почему важно делать плагины с поддержкой многоязычности
Поддержка многоязычности — это не просто тренд, а необходимость для расширения аудитории и повышения удобства использования. Следуя стандартам WordPress и используя описанные методы, вы сможете создавать качественные, удобные и понятные плагины для пользователей по всему миру.
Если хотите ускорить разработку и добавить автоматический перевод, обратите внимание на WPGPT — плагин с ИИ-поддержкой для перевода контента и интерфейса.