Зачем нужна поддержка языков в теме WordPress
Если вы создаёте собственную тему WordPress, важно обеспечить её готовность к локализации. Это позволит вашим пользователям переводить интерфейс темы на нужные им языки, что расширит аудиторию и улучшит пользовательский опыт. Поддержка языков особенно актуальна, если вы планируете распространять тему или использовать её на многоязычном сайте.
В WordPress локализация реализуется через функции для интернационализации (i18n) и файлы переводов (.po/.mo). В этой статье мы подробно рассмотрим, как добавить поддержку языков в тему, создать и подключить файлы переводов, а также приведём примеры кода.
Основные шаги для добавления поддержки языков в тему
1. Подготовка темы к локализации
Первым делом нужно убедиться, что все выводимые в шаблонах строки текста обёрнуты в специальные функции WordPress, которые позволяют их переводить. Основные функции:
__()— возвращает переведённую строку;_e()— выводит переведённую строку сразу;_x()и_ex()— используются при необходимости контекста;esc_html__()иesc_html_e()— для безопасного вывода HTML-текста.
Пример использования в файле header.php:
<h1><?php echo wplang__mytheme__('Добро пожаловать на мой сайт'); ?></h1>Обратите внимание, что мы используем префикс wplang__mytheme для функции, чтобы избежать конфликтов. Ниже покажем, как определить такую функцию.
2. Инициализация текстового домена темы
В файле functions.php необходимо зарегистрировать текстовый домен, который будет использоваться для переводов. Это делается с помощью функции load_theme_textdomain. Пример:
function wplang_mytheme_load_textdomain() {
load_theme_textdomain( 'wplang-mytheme', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'wplang_mytheme_load_textdomain' );Здесь 'wplang-mytheme' — текстовый домен, а папка /languages в корне темы — место для файлов переводов.
3. Создание обёрточных функций для удобства
Чтобы не писать каждый раз __() с доменом, создадим свои функции. В functions.php добавьте:
function wplang__mytheme( $text ) {
return __( $text, 'wplang-mytheme' );
}
function wplang_e_mytheme( $text ) {
_e( $text, 'wplang-mytheme' );
}Теперь в шаблонах можно писать:
<?php wplang_e_mytheme('Текст для перевода'); ?>Создание и работа с файлами переводов .po и .mo
4. Генерация файлов перевода
Для создания файлов перевода удобно использовать программу Poedit (https://poedit.net/). Алгоритм:
- Создайте новый проект и выберите файл
style.cssили любой PHP-файл темы в качестве источника; - Укажите текстовый домен —
wplang-mytheme; - Poedit найдёт все строки, обёрнутые в
__()и подобные функции; - Переведите строки на нужный язык;
- Сохраните файл с именем
ru_RU.po(для русского) в папку/languagesвашей темы. Poedit автоматически создаст бинарный файлru_RU.mo.
5. Автоматическая загрузка перевода
WordPress автоматически загрузит нужный перевод согласно текущей локали сайта, если в теме подключён текстовый домен и есть соответствующие файлы .mo. Для проверки переключите язык в настройках WordPress и убедитесь, что переводы отображаются.
Советы по организации и расширению поддержки языков
6. Использование WPML и Polylang
Если на сайте используется мультиязычность через популярные плагины WPML или Polylang, убедитесь, что ваша тема совместима с ними. В частности, при использовании ACF или других плагинов создавайте переводы полей, а также проверяйте, что вызовы функций перевода корректны.
Для совместимости с WPML можно использовать функцию icl_register_string для регистрации динамических строк, если они не обрабатываются стандартными методами.
7. Оптимизация загрузки переводов
Для снижения нагрузки на сайт рекомендуется минимизировать количество строк для перевода и не дублировать одинаковые фразы. В случае больших проектов может помочь плагин Clearfy Pro (подробнее на WPSHOP), который оптимизирует работу WordPress и может помочь с управлением языковыми файлами.
Пример полной реализации локализации в теме
В файле functions.php добавим следующий код:
<?php
function wplang_mytheme_load_textdomain() {
load_theme_textdomain( 'wplang-mytheme', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'wplang_mytheme_load_textdomain' );
function wplang__mytheme( $text ) {
return __( $text, 'wplang-mytheme' );
}
function wplang_e_mytheme( $text ) {
_e( $text, 'wplang-mytheme' );
}
?>В шаблоне, например header.php:
<header>
<h1><?php wplang_e_mytheme('Добро пожаловать на мой сайт'); ?></h1>
</header>Создайте в папке /languages файлы ru_RU.po и ru_RU.mo с переводом строки «Добро пожаловать на мой сайт».
Заключение
Добавление поддержки языков в тему WordPress — это обязательный этап для создания качественного продукта, удобного для международной аудитории. Основные шаги — обёртывание строк в функции i18n, регистрация текстового домена, создание и подключение файлов перевода. Используйте инструменты Poedit для генерации переводов, а при необходимости — интегрируйте с плагинами мультиязычности.
Для более глубокой оптимизации и управления языковыми файлами рекомендую обратить внимание на инструменты, представленные на WPSHOP.