WordPress. Перевод темы

24.04.2019

Теги: CMSWordPressФайлШаблонСайта

Итак, у нас есть тема на русском языке и мы хотим перевести ее на английский. Первое, что нужно сделать — создать директорию languages в папке темы. Потом добавить в комментарий к файлу стилей темы style.css строку «Text domain: some_domain». Далее, вешаем вызов функции load_theme_textdomain() на событие after_setup_theme:

[wp-content]
    [themes]
        [test_theme]
            [assets]
            [languages]
            style.css
            index.php
            header.php
            footer.php

Комментарий в файле стилей:

/*
Theme Name: Тестовая тема
Text domain: test_theme
*/

Вызов функции load_theme_textdomain():

add_action(
    'after_setup_theme',
    function() {
        /*
         * Загружаем файл перевода темы в память
         */
        load_theme_textdomain(
            // domain — идентификатор, чтобы потом обращаться к нашему переводу;
            // чаще всего в качестве идентификатора используется имя папки темы
            'test_theme',
            // директория, где расположены файлы перевода темы
            get_template_directory() . '/languages'
        );
    }
);

Следующий шаг, если это не было сделано сразу, — заменить везде в шаблонах вывод на русском языке вызовами функций:

  • __() — Переводит строку, используя файл перевода и возвращает для обработки.
  • _e() — Переводит строку, используя файл перевода и выводит на экран.
  • esc_html__() — Переводит строку, заменяет в ней спецсимволы на HTML-сущности и возвращет для обработки.
  • esc_html_e() — Переводит строку, заменяет в ней спецсимволы на HTML-сущности и выводит на экран.
  • esc_attr__() — Переводит строку, заменяет в ней спецсимволы на HTML-сущности и возвращет для обработки.
  • esc_attr_e() — Переводит строку, заменяет в ней спецсимволы на HTML-сущности и выводит на экран.

Например:

<a href="<?php the_permalink(); ?>" class="read-more">
    Читать далее
</a>
<a href="<?php the_permalink(); ?>" class="read-more">
    <?php _e('Читать далее', 'test_theme'); ?>
</a>

Далее, устанавливаем и активируем плагин Loco Translate. Это плагин-переводчик для WordPress, позволяющий делать перевод темы и плагинов прямо в административной панели сайта.

Первым делом нужно создать шаблон, т.е. файл some_domain.pot. Этот файл должен содержать все фразы, которые нужно перевести. Плагин Loco Translate умеет анализировать исходные коды темы и находить в них вызовы функций __(), _e() и т.п. И на основе этого анализа создает POT-файл.

POT-файл (Portable Object Template) — содержит оригинальные строки перевода (без перевода). Этот файл является основой для создания PO-файла (для создания перевода на любой язык). POT-файл не является обязательным файлом, перевод можно делать и без него.

Теперь можно переводить, а плагин Loco Translate создаст файлы en_US.po и en_US.mo.

  • PO-файл (Portable Object) — содержит оригинальные строки перевода и сам перевод этих строк. Его можно изменять в любом текстовом редакторе. Из .po файла автоматически создается .mo файл.
  • MO-файл (Machine Object) — скомпилированный вариант PO-файла. Cодержит бинарные данные, которые парсит WordPress и создает из них данные для перевода отдельных строк.

Поиск: CMS • WordPress • Шаблон сайта • Перевод • Translate • load_theme_textdomain • POT • PO • MO • Файл

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.