В современных проектах на WordPress часто возникает необходимость сделать тему многоязычной. Это позволяет расширить аудиторию, улучшить SEO и повысить удобство пользователей. В этой статье мы подробно разберем, как добавить поддержку мультиязычности в вашу тему WordPress на примере домена wp-theme.ru. Рассмотрим базовые функции локализации, работу с языковыми файлами и интеграцию с популярными плагинами, такими как Polylang и WPML.
Почему важна мультиязычность в WordPress теме
Мультиязычность — это не просто перевод текста. Это комплексная поддержка языка, включая перевод шаблонных строк, сообщений об ошибках, названий, описаний и даже динамического контента. Правильная реализация мультиязычности повышает качество пользовательского опыта и позволяет вашему сайту работать с разными аудиториями без создания отдельных сайтов.
Кроме того, WordPress предоставляет стандартизированный механизм локализации, который упрощает подготовку темы к переводу и дает возможность использовать переводы, созданные сообществом.
Основные преимущества поддержки нескольких языков
- Рост аудитории и охват новых рынков.
- Улучшение SEO благодаря локализованному контенту.
- Централизованное управление переводами.
- Совместимость с крупными плагинами мультиязычности.
Как подготовить тему для мультиязычности: загрузка текстового домена
Первый шаг — подготовить тему к локализации, зарегистрировав текстовый домен и загрузив языковые файлы. В файле functions.php добавим функцию, которая будет загружать файлы переводов из папки /languages/.
function wp_theme_ru_load_textdomain() {
load_theme_textdomain('wp-theme-ru', get_template_directory() . '/languages');
}
add_action('after_setup_theme', 'wp_theme_ru_load_textdomain');Здесь wp-theme-ru — это уникальный текстовый домен вашей темы. Он должен совпадать с префиксом в функциях перевода (например, __('Текст', 'wp-theme-ru')).
Создайте папку /languages/ в корне темы и положите туда файлы перевода в формате .po и .mo. Для генерации таких файлов удобно использовать программу Poedit или онлайн-сервисы.
Как правильно использовать функции перевода в шаблонах
Для перевода текстов в файлах шаблонов используйте функции:
__('Текст', 'wp-theme-ru')— возвращает переведённую строку._e('Текст', 'wp-theme-ru')— выводит переведённую строку напрямую._n('Одна запись', '%d записей', $number, 'wp-theme-ru')— для множественного числа.
Например, в файле header.php можно написать:
<h1><?php _e('Добро пожаловать на сайт', 'wp-theme-ru'); ?></h1>Автоматизация перевода с помощью плагинов: Polylang и WPML
Хотя базовая локализация переводит только строки темы, для перевода контента сайта нужно использовать плагины мультиязычности. Самые популярные — Polylang и WPML. Рассмотрим их кратко и покажем, как интегрировать тему с этими плагинами.
Интеграция с Polylang
Polylang позволяет создавать разные версии записей и страниц на нескольких языках. Чтобы тема корректно отображала языковые переключатели и учитывала выбранный язык, можно добавить поддержку Polylang в файле functions.php.
function wp_theme_ru_polylang_support() {
if (function_exists('pll_get_post')) {
// Пример получения ID записи на текущем языке
$translated_post_id = pll_get_post(get_the_ID());
}
}
add_action('wp', 'wp_theme_ru_polylang_support');Для вывода переключателя языков можно использовать встроенную функцию:
<?php if (function_exists('pll_the_languages')) {
pll_the_languages(array('dropdown' => 1));
} ?>Интеграция с WPML
WPML — коммерческий плагин с расширенным функционалом. Для поддержки темы достаточно использовать стандартные функции WordPress локализации и следить, чтобы все строки были переведены в .po/.mo файлах.
Если нужно вывести языковое меню, WPML предоставляет функцию:
<?php do_action('wpml_add_language_selector'); ?>Также можно использовать icl_get_languages() для более гибкой кастомизации.
Генерация языковых файлов с помощью WP-CLI
Для удобства обновления языковых файлов можно использовать WP-CLI — командную строку для управления WordPress.
Команда для создания шаблона перевода (.pot):
wp i18n make-pot . languages/wp-theme-ru.pot --exclude=node_modules,vendorДля генерации .po и .mo файлов можно использовать Poedit или плагины, но WP-CLI упрощает интеграцию в процесс разработки и CI/CD.
Обработка динамического контента и пользовательских строк
Часто в теме встречается динамический текст, который выводится программно — например, названия, описания из настроек темы, мета-поля и т.д. Для таких случаев нужно использовать функции локализации и хранить переводы в базе, либо регистрировать пользовательские строки для перевода.
Регистрация пользовательских строк
С помощью функции wp_theme_ru_register_strings() можно зарегистрировать строки для перевода, чтобы они появились в интерфейсе Polylang или WPML.
function wp_theme_ru_register_strings() {
if (function_exists('pll_register_string')) {
pll_register_string('Footer text', get_theme_mod('footer_text'), 'wp-theme-ru');
}
}
add_action('init', 'wp_theme_ru_register_strings');Так вы сможете управлять переводами через админ-панель плагина.
Практические советы по отладке мультиязычности в теме
Чтобы не столкнуться с проблемами, обратите внимание на следующие моменты:
- Всегда используйте одинаковый текстовый домен во всех функциях перевода.
- Не забывайте загружать текстовый домен через
load_theme_textdomainв хукafter_setup_theme. - Проверяйте правильность путей к языковым файлам.
- Используйте инструменты типа Poedit для проверки синтаксиса и корректности файлов .po/.mo.
- Тестируйте тему с разными плагинами мультиязычности и настраивайте поддержку пользовательских строк.
Если вы хотите добавить автоматическую подгрузку перевода для JavaScript, используйте WP функции, например wp_set_script_translations():
function wp_theme_ru_load_scripts() {
wp_enqueue_script('wp-theme-ru-script', get_template_directory_uri() . '/js/script.js', array('jquery'), null, true);
wp_set_script_translations('wp-theme-ru-script', 'wp-theme-ru', get_template_directory() . '/languages');
}
add_action('wp_enqueue_scripts', 'wp_theme_ru_load_scripts');Заключение
Добавление поддержки мультиязычности в тему WordPress — это комплексный процесс, который включает подготовку текстового домена, работу с языковыми файлами и интеграцию с плагинами мультиязычности. Следуя рекомендациям из этой статьи, вы сможете сделать вашу тему wp-theme.ru удобной для пользователей из разных стран и обеспечить качественный перевод всех элементов интерфейса и контента.