Как добавить поддержку мультиязычности в собственном плагине WordPress

При разработке собственного плагина для WordPress важно обеспечить его готовность к использованию на многоязычных сайтах. Это не только улучшает опыт пользователей из разных стран, но и значительно расширяет аудиторию вашего продукта. В этой статье подробно разберём, как грамотно добавить поддержку мультиязычности в собственный плагин WordPress с примерами кода и рекомендациями по работе с переводами.

Почему важно делать плагин мультиязычным

WordPress — глобальная платформа, и многие сайты работают сразу на нескольких языках. Если ваш плагин не поддерживает локализацию, пользователи увидят интерфейс и сообщения только на одном языке, что негативно скажется на восприятии и удобстве. Правильная реализация мультиязычности позволяет:

  • Переводить интерфейс плагина и его сообщения на любой язык;
  • Интегрироваться с системами перевода и популярными плагинами (например, Polylang, WPML);
  • Повышать рейтинг плагина в репозитории и на сторонних площадках за счёт доступности для международной аудитории;
  • Упрощать поддержку и модификацию, так как тексты отделены от кода.

Основы локализации WordPress-плагинов

В основе мультиязычности лежит механизм локализации (localization) и интернационализации (internationalization). Это означает, что все строки текста в плагине должны быть обёрнуты в специальные функции, позволяющие загружать переводы из файлов .mo и .po.

Для плагинов WordPress используются функции __(), _e(), _x(), esc_html__() и другие. Они принимают строку и домен текстового пространства (text domain) — уникальный идентификатор вашего плагина для переводов.

Пример:

echo __('Hello, world!', 'wptranslate');
_e('Settings saved.', 'wptranslate');

Здесь 'wptranslate' — это домен текстов, обычно совпадает с названием папки плагина.

Шаг 1. Объявляем домен текстов и загружаем переводы

Чтобы 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/, где будут храниться .mo-файлы с переводами.

Шаг 2. Оборачиваем все строки в функции локализации

Весь выводимый текст в плагине — заголовки, описания, сообщения об ошибках, подсказки — должен быть обёрнут в функции перевода. Например, вместо:

echo 'Настройки сохранены';

пишем:

echo __('Настройки сохранены', 'wptranslate');

Или если нужно сразу вывести текст с экранированием HTML:

esc_html_e('Ошибка при сохранении настроек', 'wptranslate');

Если строка требует контекста, чтобы избежать неоднозначностей, используйте _x():

$label = _x('Post', 'noun', 'wptranslate');

Шаг 3. Создаём файлы перевода (.pot, .po, .mo)

Для удобства работы с переводами используйте программы, например, Poedit или плагин Loco Translate. Сначала создайте шаблон перевода (.pot) с помощью:

wp i18n make-pot . languages/wptranslate.pot

Далее, на базе .pot создаются .po-файлы для каждого языка (например, ru_RU.po, en_US.po). После перевода они компилируются в бинарные .mo-файлы, которые WordPress загружает автоматически.

Шаг 4. Поддержка мультиязычности в админке и на фронтенде

Все надписи в настройках плагина, метки форм, уведомления должны использовать функции перевода. Например, если вы создаёте страницу настроек:

function wptranslate_settings_page() {
    ?>
    <h1><?php esc_html_e('Настройки плагина WPTranslate', 'wptranslate'); ?></h1>
    <form method="post" action="options.php">
        <?php settings_fields('wptranslate_options_group'); ?>
        <label for="wptranslate_option">
            <?php _e('Введите значение', 'wptranslate'); ?>:
            <input type="text" name="wptranslate_option" id="wptranslate_option" value="<?php echo esc_attr(get_option('wptranslate_option')); ?>">
        </label>
        <?php submit_button(); ?>
    </form>
    <?php
}

Таким образом, вся админка будет готова к переводу.

Шаг 5. Интеграция с плагинами мультиязычности (Polylang, WPML)

Если ваш плагин создаёт свои типы записей, таксономии или пользовательские строки, важно учитывать их перевод. Для этого:

  • Регистрируйте типы записей с параметром 'show_in_rest' => true, так они будут доступны для WPML и Polylang.
  • Добавляйте строки с помощью функции pll_register_string() (Polylang) или API WPML для перевода настроек и других пользовательских текстов.

Пример регистрации строки для Polylang:

if (function_exists('pll_register_string')) {
    pll_register_string('Welcome message', __('Добро пожаловать!', 'wptranslate'), 'WPTranslate');
}

Практический пример: подключение локализации в плагине WPTranslate

Объединим основные шаги в одном примере.

/**
 * Plugin Name: WPTranslate
 * Text Domain: wptranslate
 * Domain Path: /languages/
 */

// Загружаем переводы
function wptranslate_load_textdomain() {
    load_plugin_textdomain('wptranslate', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'wptranslate_load_textdomain');

// Пример вывода строки с переводом
function wptranslate_show_welcome() {
    echo '<p>' . esc_html__('Добро пожаловать в WPTranslate!', 'wptranslate') . '</p>';
}

// Использование в шорткоде
add_shortcode('wptranslate_welcome', 'wptranslate_show_welcome');

Советы по работе с переводами в плагинах

  • Используйте уникальный текстовый домен, совпадающий с названием плагина или его папки.
  • Не вставляйте переводы напрямую в базу данных, используйте функции WordPress для интернационализации и локализации.
  • Регулярно обновляйте .pot-файл и переводы при добавлении новых строк.
  • Тестируйте плагин на разных языках и с популярными плагинами мультиязычности.
  • Документируйте строки, требующие перевода, чтобы другие переводчики быстрее ориентировались.

Заключение

Добавление поддержки мультиязычности в собственный плагин WordPress — это обязательный этап для расширения аудитории и повышения качества продукта. С помощью стандартных функций интернационализации, правильной организации файлов переводов и интеграции с популярными плагинами мультиязычности вы сделаете плагин удобным и востребованным на международных сайтах.

Для удобства управления переводами рекомендуем использовать Loco Translate — мощный плагин для редактирования переводов прямо из админки WordPress.

Как перевести на WordPress пользовательские типы записей и таксономии
03.12.2025
Как передавать текст в автопереводчик в WordPress через хуки
26.02.2026
Как использовать плагин Poliglot для автоперевода WordPress
09.03.2026
Как создать свой плагин для автоперевода WordPress
26.11.2025
Как добавить автоперевод сообщений об ошибках в WordPress
19.01.2026