Как перевести тему WordPress (и сделать ее многоязычной)

Как работает перевод тем WordPress, шаг за шагом: текстовые домены, языковые пакеты, Loco Translate и Poedit, жестко запрограммированные строки и что меняется, когда вам нужен многоязычный сайт.
Нет данных карты Никаких обязательств

· Обновлено · Алекс Б · Блог

Подведите итог этому посту следующим образом: 9 мин чтения

То, как вы переводите тему WordPress, зависит от того, что вам нужно. Если весь ваш сайт будет работать на одном языке, отличном от английского, переключите язык сайта в разделе Настройки → Общие и позвольте WordPress загрузить языковой пакет темы или отредактировать тему .po/.mo файлы перевода с помощью таких инструментов, как Loco Translate или Poedit. Если вы хотите, чтобы посетители могли выбирать между несколькими языками, вам нужен многоязычный плагин, который переводит текст темы и ваш контент для каждого языка, поскольку только файлы перевода темы переключают весь сайт на один язык.

Ключевые выводы

  • Строки темы (кнопки, метки, “Читать далее”, “Результаты поиска для…”) находятся в коде темы и транслируются через текстовый домен и .po/.mo файлы.
  • Темы из каталога WordPress.org автоматически получают языковые пакеты с translate.wordpress.org при изменении языка сайта.
  • Сохраняйте пользовательские переводы там, где обновления темы не могут их перезаписать: wp-content/languages/themes/ или защищенная папка Loco Translate.
  • Текст, не завернутый в функции перевода, не может быть переведен .po файлы. Исправьте это в дочерней теме или используйте инструмент, который переводит визуализированную страницу.
  • Для многоязычного сайта каждому языку нужен свой URL-адрес и hreflang. А .mo файл этого не предоставляет.

Во-первых, какой вид “перевода” вам нужен?

Ваша цельЧто использовать
Весь сайт на одном языке (например, сайт только на немецком языке на английскую тему)Настройка языка сайта плюс файлы перевода темы
Исправьте несколько тематических фраз, которые отсутствуют или неверны в вашем языкеLoco Translate или Poedit для редактирования переводов темы
Посетители выбирают английский, немецкий, французский языки…Многоязычный плагин, который переводит строки темы и контент на каждый язык

Большинство вопросов “как перевести мою тему” на самом деле относятся к третьему случаю, поэтому вторая половина этого руководства посвящена этому. Во-первых, как работает перевод тем.

Как работает перевод тем WordPress

Готовая к переводу тема оборачивает каждую видимую строку в функцию перевода с помощью темы текстовый домен, уникальный идентификатор, соответствующий слагу темы. Пример из WordPress Theme Handbook: тема Fabled Sunset использует текстовый домен fabled-sunset, заявлено в style.css как Text Domain: fabled-sunset (Ресурсы для разработчиков WordPress).

В шаблонах темы строки выглядят так:

<?php esc_html_e( 'Read more', 'fabled-sunset' ); ?>
<?php echo esc_html( sprintf( __( 'Search results for: %s', 'fabled-sunset' ), get_search_query() ) ); ?>

Переводы хранятся в .po файлы (читаемые человеком) и скомпилированные в .mo файлы, которые на самом деле использует WordPress. В справочнике перечислены два места, где WordPress ищет перевод темы, исходя из локали сайта:

  • wp-content/themes/your-theme/{domain-path}/{locale}.mo
  • wp-content/languages/themes/{textdomain}-{locale}.mo

Начиная с WordPress 6.5, переводы также можно загружать из .l10n.php файлы — более быстрый формат PHP, который теперь включают языковые пакеты WordPress.org. Если бы только а .mo файл существует, он по-прежнему загружается, как и раньше (Сделать WordPress Core).

Шаг 1: проверьте, готова ли ваша тема к переводу

  1. Откройте тему style.css и ищите а Text Domain: линия.
  2. Ищите а languages папка (или аналогичная), содержащая .pot файл шаблона.
  3. Точечная проверка файла шаблона: строки должны быть обернуты такими функциями, как __(), _e(), esc_html__() или esc_html_e(), каждый с текстовым доменом.

Если в теме нет ни одного из них, ее строки жестко закодированы и не могут быть переведены с помощью файлов перевода. Перейдите к разделу “Исправление жестко закодированных строк” ниже или к разделу «Многоязычность».

Шаг 2: сначала попробуйте языковой пакет

Для тем, размещенных в каталоге тем WordPress, в руководстве указано, что вам “не нужно загружать переводы”: WordPress проверяет wp-content/languages и загружает переводы из проекта Translating WordPress.

  1. Перейти к Настройки → Общие и выберите свой Язык сайта.
  2. Перейти к Панель управления → Обновления и нажмите Обновление переводов если будет предложено.
  3. Посетите сайт. Если волонтеры темы перевели ее на ваш язык, большинство строк уже будут переведены.

Премиум-темы, купленные в другом месте, обычно поставляются сами по себе languages вместо этого проверьте папку; проверьте документацию темы на наличие включенных языков.

Шаг 3: отредактируйте или завершите перевод

Если строки отсутствуют или вам не нравится формулировка, отредактируйте файлы перевода.

Вариант A: Loco Translate (внутри WordPress)

Loco Translate “обеспечивает редактирование файлов перевода WordPress в браузере” и может сохранять пользовательские переводы в защищенный языковой каталог, wp-content/languages/loco/themes, поэтому обновления темы не перезаписывают их (Каталог плагинов WordPress.org).

  1. Установите и активируйте Loco Translate.
  2. Перейти к Loco Translate → Темы и выберите свою тему.
  3. Нажмите Новый язык, выберите язык и выберите Обычай (защищенное) местоположение.
  4. Найдите строку, введите перевод и нажмите Сохранять. Локо компилирует .mo файл для вас.

Вариант B: Poedit (на вашем компьютере)

  1. Скачать тему .pot файл (или существующий .po для вашего языка).
  2. Откройте его в Poedit, создайте новый перевод для своей локали и переведите строки.
  3. Сохранять. Поэдит пишет и то, и другое .po и скомпилированный .mo.
  4. Переименуйте файлы в {textdomain}-{locale}, например fabled-sunset-de_DE.po и .mo, и загрузите их на wp-content/languages/themes/.

Не помещайте пользовательские файлы в папку темы: обновление темы заменяет эту папку и ваши переводы ею.

Исправление жестко закодированных строк

Когда тема печатает текст напрямую (<a>Read more</a>), ни один файл перевода не может до него добраться. Ваши варианты, от самых чистых до самых быстрых:

  1. Спросите автора темы чтобы сделать строки переводимыми. Это помогает каждому пользователю темы.
  2. Переопределить шаблон в дочерней теме. Скопируйте файл шаблона в дочернюю тему и оберните строку: esc_html_e( 'Read more', 'my-child-theme' );. Загрузите переводы вашей детской темы с помощью load_child_theme_textdomain() на after_setup_theme крючок, как показано в справочнике.
  3. Используйте инструмент, который переводит визуализированную страницу а не код, который подхватывает жестко закодированный текст вместе со всем остальным.

Примечание для разработчиков: начиная с WordPress 6.7, WordPress предупреждает, когда тема или плагин загружает переводы слишком рано, до after_setup_theme или init (Сделать WordPress Core). Если вы видите а _load_textdomain_just_in_time обратите внимание, что после обновления исправление относится к коду, загружающему текстовый домен.

Также помните, что не является частью темы: содержимое страницы и поста, созданные вами меню, текст виджета, отредактированные вами шаблоны блоков, текст настройщика и макеты конструктора страниц хранятся в базе данных. Файлы перевода тем их не трогают.

Перевод темы для многоязычного сайта

А .mo файл переключает язык строк темы для всего сайта. Он не может показывать немецкий язык одному посетителю и французский — другому, а также не переводит ваш контент. Для сайта на нескольких языках вам нужны еще три вещи:

  1. Каждый переведенный фрагмент текста, включая строки темы, меню, виджеты, контент и вывод плагинов, такие как кнопки WooCommerce и оформление заказа.
  2. Отдельный URL-адрес для каждого языка, например /de/ и /fr/. Google рекомендует разные URL-адреса для каждой языковой версии, а не файлы cookie или настройки браузера (Центр поиска Google).
  3. Аннотации Хрефланга связывание версий, чтобы поисковые системы показывали правильную. Видеть как добавить теги hreflang.

Как ConveyThis справляется с этим

Плагин ConveyThis для WordPress (1000+ активных установок на WordPress.org, оценка 4,4/5 из 145 оценок) транслирует страницу, которую отображает WordPress, поэтому строки темы, жестко закодированный текст, меню, виджеты, контент и вывод плагина транслируются вместе, без каких-либо .po файлы для обслуживания. Это полезно, когда тема не готова к переводу или когда вы не хотите управлять файлами перевода для каждого языка.

На практике:

  • Автоматически сначала черновик, затем редактирование. Страницы переводятся машиной, и вы уточняете любую строку в визуальном редакторе, который показывает ее на месте на странице, чтобы вы могли видеть, подходит ли переведенная метка кнопки.
  • Последовательные условия. А глоссарий сохраняет названия брендов и продуктов непереведенными или переведенными одинаково везде.
  • URL-адреса, готовые к SEO. Каждый язык обслуживается из собственной подпапки или поддомена с переведенными метазаголовками и описаниями, а также автоматическим hreflang. Вы также можете настройте переведенные URL-адреса.
  • Исключения. Сохраняйте определенные страницы или элементы на языке оригинала правила исключения.
  • 210 языков, включая языки с правым на левый, такие как арабский и иврит.

The Страница интеграции WordPress охватывает установку, и пошаговое руководство проходит через настройку. Если производительность на большом сайте вызывает беспокойство, ознакомьтесь с нашим руководством многоязычная производительность WordPress.

Устранение неполадок: почему строка темы не переводится

  • Неправильный текстовый домен. Домен в вызове функции должен совпадать с доменом в style.css и в имени файла.
  • Неправильное имя файла или локаль. de_DE нет de; файл должен точно соответствовать языку сайта.
  • Файл в неправильной папке, или перезаписано обновлением темы.
  • Струна не завернута в функции перевода (жестко закодированной).
  • Строка берется из плагина или базы данных, а не тема. Ищите переводы плагина или редактируйте сам контент.
  • Кэширование. Очистите кэши страниц и объектов после изменения файлов перевода.

Часто задаваемые вопросы

Как перевести тему WordPress на другой язык?

Установите язык сайта в разделе «Настройки», «Основные», затем обновите переводы. Если в теме нет языкового пакета или вы хотите другую формулировку, создайте или отредактируйте ее перевод с помощью Loco Translate или Poedit и сохраните его в wp-content/languages/themes или защищенной папке Loco.

Где хранятся файлы перевода тем WordPress?

WordPress ищет в папке собственного языка темы и в wp-content/languages/themes, используя файлы с именами текстового домена и локали, например fabled-sunset-de_DE.mo. Пользовательские переводы безопаснее всего выполнять вне папки темы.

Удалит ли обновление темы мои переводы?

Да, если вы сохранили их в папке темы. Вместо этого храните их в wp-content/languages/themes или в защищенном каталоге Loco Translate.

Могу ли я перевести тему, которая не готова к переводу?

Не с файлами перевода. Либо оберните строки в функции перевода в дочерней теме, либо используйте инструмент, который переводит визуализированную страницу, например ConveyThis.

Делают ли файлы .po и .mo мой сайт многоязычным?

Нет. Они меняют язык строк темы для всего сайта. Многоязычному сайту необходим перевод контента, URL-адрес для каждого языка и hreflang, что и обеспечивает многоязычный плагин.

Переведите весь сайт, а не только тему

Если ваша цель — сделать так, чтобы посетители сайта могли читать на нескольких языках, вы можете создать учетную запись ConveyThis, установите плагин WordPress и переведите свою тему и контент вместе.

Поделиться:
G2 High Performer Spring 2023
G2 Easiest Setup Fall 2024
G2 Best Support Spring 2025