wplang.ru wordpress WP Lang

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

Зачем нужна поддержка языков в теме 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/). Алгоритм:

  1. Создайте новый проект и выберите файл style.css или любой PHP-файл темы в качестве источника;
  2. Укажите текстовый домен — wplang-mytheme;
  3. Poedit найдёт все строки, обёрнутые в __() и подобные функции;
  4. Переведите строки на нужный язык;
  5. Сохраните файл с именем 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.

×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙