Если вы разрабатываете плагин для WordPress и хотите, чтобы его могли использовать пользователи из разных стран, важно добавить поддержку многоязычности. В этой статье мы подробно рассмотрим, как правильно локализовать и интернационализировать ваш плагин, используя стандартные инструменты WordPress. Это позволит вашему плагину отображать интерфейс на нужном языке, а пользователям — легко переключаться между переводами.
Что такое интернационализация и локализация в WordPress
Интернационализация (i18n) — это подготовка плагина к переводу: использование специальных функций для маркировки текстов, которые должны быть переведены. Локализация (l10n) — это собственно перевод этих текстов на нужный язык и подключение соответствующих файлов с переводами.
WordPress предоставляет набор функций для i18n и l10n, что стандартизирует процесс и упрощает его для разработчиков. Например, функции __(), _e(), _n() и т.д.
Без правильной интернационализации ваш плагин не сможет корректно работать с переводами, а пользователи не смогут подобрать удобный язык интерфейса.
Добавляем интернационализацию в плагин — пошагово
1. Определите текстовый домен плагина. Обычно это уникальное имя, совпадающее с папкой плагина или названием. Например, для плагина с папкой wpplugin-multilang можно использовать wpplugin-multilang в качестве текстового домена.
2. Используйте функции локализации для всех пользовательских строк. Вместо обычных строк используйте __('строка', 'wpplugin-multilang') или _e('строка', 'wpplugin-multilang'). Пример:
echo __('Hello, World!', 'wpplugin-multilang');
_e('Welcome to my plugin', 'wpplugin-multilang');
3. Загрузите текстовый домен в нужный момент. Обычно это делают с помощью хука plugins_loaded:
function wpplugin_load_textdomain() {
load_plugin_textdomain('wpplugin-multilang', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'wpplugin_load_textdomain');
4. Создайте папку languages в папке плагина. В нее будут помещаться файлы переводов (.po и .mo).
Генерация файлов перевода
Для создания файлов перевода используйте программу Poedit или команду WP-CLI:
wp i18n make-pot . languages/wpplugin-multilang.pot --exclude=node_modules,vendor
Этот файл .pot — шаблон для переводчиков. Его можно загрузить в Poedit и создать переводы на нужные языки.
Например, для русского создайте wpplugin-multilang-ru_RU.po и скомпилируйте в wpplugin-multilang-ru_RU.mo, которые положите в папку languages.
Загрузка переводов и поддержка языков WordPress
WordPress автоматически подгружает переводы в соответствии с языком сайта, указанным в админке (Настройки → Общие → Язык сайта). Если для вашего плагина есть соответствующий файл .mo с переводом, строки будут отображаться на выбранном языке.
Важно, чтобы имя файла перевода соответствовало формату текстовый-домен-язык_страны.mo, например: wpplugin-multilang-ru_RU.mo.
Локализация динамических данных
Если в вашем плагине используются динамические сообщения с параметрами (например, числа, имена), применяйте функции с поддержкой множественного числа:
$count = 3;
echo sprintf(
_n('%s запись', '%s записей', $count, 'wpplugin-multilang'), $count
);
Так вы корректно обработаете множественное число в разных языках.
Пример: Локализация плагина с административной страницей
Предположим, у вас есть плагин с настройками в админке. Вот минимальный пример с локализацией:
function wpplugin_admin_menu() {
add_options_page(
__('WPPlugin Settings', 'wpplugin-multilang'),
__('WPPlugin', 'wpplugin-multilang'),
'manage_options',
'wpplugin-settings',
'wpplugin_settings_page'
);
}
add_action('admin_menu', 'wpplugin_admin_menu');
function wpplugin_settings_page() {
?>
<div class="wrap">
<h1><?php _e('Настройки WPPlugin', 'wpplugin-multilang'); ?></h1>
<form method="post" action="options.php">
<?php
settings_fields('wpplugin_options_group');
do_settings_sections('wpplugin-settings');
submit_button();
?>
</form>
</div>
<?php
}
Все строки, выводимые пользователю, обернуты в функции __() или _e() с вашим текстовым доменом.
Советы и лучшие практики по локализации плагинов
- Всегда используйте текстовый домен в функциях локализации.
- Не вставляйте HTML-теги внутрь строк, которые переводятся, лучше разделять разметку и текст.
- Используйте контекст, если одно и то же слово может переводиться по-разному — функция
_x()поможет. - Регулярно обновляйте .pot файл, чтобы новые строки попадали в переводы.
- Тестируйте плагин на разных языках, чтобы убедиться в корректности отображения.
Использование плагинов для многоязычности
Если вы хотите, чтобы ваш плагин работал с популярными WordPress-многоязычными плагинами, такими как Polylang или WPML, убедитесь, что вы правильно используете стандартные функции локализации, так как эти плагины полагаются на них для автоматического обнаружения переводов.
Вывод
Добавление поддержки многоязычности в ваш WordPress плагин — это обязательный шаг для расширения аудитории и повышения удобства использования. Используя стандартные функции WordPress для интернационализации и локализации, вы обеспечите правильное отображение текста на любом языке и упростите процесс перевода.
Если хотите быстро проверить работу перевода, используйте Clearfy Pro — плагин для оптимизации и упрощения работы с WordPress, включая управление языковыми пакетами.