wpcat.ru wordpress WPCat.ru

Создание локализуемого плагина WordPress с использованием функции _wpcat_gettext

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

Почему локализация плагинов важна и что такое gettext

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

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

Стандартные функции для локализации — это __(), _e(), _n() и другие, но мы создадим свою обертку, чтобы повысить уникальность и избежать возможных конфликтов с другими плагинами.

Создаем собственную функцию _wpcat_gettext для локализации

Для начала определим функцию _wpcat_gettext, которая будет принимать строку и возвращать переведенный вариант с использованием стандартной функции __(), но с уникальным текстовым доменом wpcat-plugin. Это важно для правильной загрузки переводов.

function _wpcat_gettext($text) {
    return __($text, 'wpcat-plugin');
}

Теперь вместо __('Hello, world!', 'text-domain') используем _wpcat_gettext('Hello, world!'). Это упрощает вызов и гарантирует использование правильного домена.

Также можно добавить функцию для вывода перевода напрямую:

function _wpcat_e($text) {
    echo _wpcat_gettext($text);
}

Добавляем поддержку загрузки переводов в плагин

Чтобы WordPress понимал, где искать файлы перевода, необходимо зарегистрировать текстовый домен и указать путь к папке с .mo

function wpcat_plugin_load_textdomain() {
    load_plugin_textdomain('wpcat-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'wpcat_plugin_load_textdomain');

Рекомендуется складывать файлы с переводами в папку /languages внутри директории плагина. Формат файлов — wpcat-plugin-ru_RU.mo, wpcat-plugin-en_US.mo и т.д.

Пример использования локализации в плагине

Допустим, у нас есть функция, выводящая приветственное сообщение в админке:

function wpcat_plugin_admin_notice() {
    echo '<div class="notice notice-success is-dismissible">';
    echo '<p>' . _wpcat_gettext('Плагин успешно активирован!') . '</p>';
    echo '</div>';
}
add_action('admin_notices', 'wpcat_plugin_admin_notice');

Если мы сделаем перевод строки «Плагин успешно активирован!» в файл wpcat-plugin-ru_RU.po, то при активации плагина пользователь увидит сообщение на русском языке, а при переключении языка интерфейса на английский — на английском (если есть соответствующий перевод).

Создаем .pot файл и переводим плагин

Для создания шаблона перевода (.pot) используйте инструменты, например, Poedit или WP-CLI:

wp i18n make-pot ./ ./languages/wpcat-plugin.pot --exclude=vendor,node_modules

После этого сгенерируйте .po/.mo файлы с переводами на нужные языки.

Советы по организации текстов для локализации

1. Всегда используйте уникальный текстовый домен, чтобы избежать конфликтов.
2. Избегайте конкатенации строк с переводами — используйте sprintf или printf для вставки переменных.
3. Группируйте текстовые строки логически, чтобы было проще искать и обновлять переводы.
4. Проверяйте корректность перевода на нескольких языках, особенно если используются сложные конструкции.

Пример с переменными и форматированием текста

Если нужно вставить динамические данные в перевод, используйте sprintf:

function wpcat_plugin_show_message($username) {
    $message = sprintf(_wpcat_gettext('Привет, %s! Добро пожаловать в наш плагин.'), $username);
    echo '<p>' . $message . '</p>';
}

Так переводчики увидят, что в строку вставляется имя пользователя, и смогут правильно адаптировать фразу для разных языков.

Подключение плагина WPCommunity для управления локализацией

Если вы хотите автоматизировать работу с переводами, обратите внимание на плагин WPCommunity. Он предоставляет удобный интерфейс для организации переводов прямо из админки и интегрируется с системой gettext.

Итоги и рекомендации

Локализация — это не просто добавление переводов, а грамотная архитектура плагина, которая делает его удобным и понятным для пользователей по всему миру. Создание собственной обертки для gettext, например, _wpcat_gettext, поможет структурировать код и избежать проблем с конфликтами.

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше