То, как вы переводите тему 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}.mowp-content/languages/themes/{textdomain}-{locale}.mo
Начиная с WordPress 6.5, переводы также можно загружать из .l10n.php файлы — более быстрый формат PHP, который теперь включают языковые пакеты WordPress.org. Если бы только а .mo файл существует, он по-прежнему загружается, как и раньше (Сделать WordPress Core).
Шаг 1: проверьте, готова ли ваша тема к переводу
- Откройте тему
style.cssи ищите аText Domain:линия. - Ищите а
languagesпапка (или аналогичная), содержащая.potфайл шаблона. - Точечная проверка файла шаблона: строки должны быть обернуты такими функциями, как
__(),_e(),esc_html__()илиesc_html_e(), каждый с текстовым доменом.
Если в теме нет ни одного из них, ее строки жестко закодированы и не могут быть переведены с помощью файлов перевода. Перейдите к разделу “Исправление жестко закодированных строк” ниже или к разделу «Многоязычность».
Шаг 2: сначала попробуйте языковой пакет
Для тем, размещенных в каталоге тем WordPress, в руководстве указано, что вам “не нужно загружать переводы”: WordPress проверяет wp-content/languages и загружает переводы из проекта Translating WordPress.
- Перейти к Настройки → Общие и выберите свой Язык сайта.
- Перейти к Панель управления → Обновления и нажмите Обновление переводов если будет предложено.
- Посетите сайт. Если волонтеры темы перевели ее на ваш язык, большинство строк уже будут переведены.
Премиум-темы, купленные в другом месте, обычно поставляются сами по себе languages вместо этого проверьте папку; проверьте документацию темы на наличие включенных языков.
Шаг 3: отредактируйте или завершите перевод
Если строки отсутствуют или вам не нравится формулировка, отредактируйте файлы перевода.
Вариант A: Loco Translate (внутри WordPress)
Loco Translate “обеспечивает редактирование файлов перевода WordPress в браузере” и может сохранять пользовательские переводы в защищенный языковой каталог, wp-content/languages/loco/themes, поэтому обновления темы не перезаписывают их (Каталог плагинов WordPress.org).
- Установите и активируйте Loco Translate.
- Перейти к Loco Translate → Темы и выберите свою тему.
- Нажмите Новый язык, выберите язык и выберите Обычай (защищенное) местоположение.
- Найдите строку, введите перевод и нажмите Сохранять. Локо компилирует
.moфайл для вас.
Вариант B: Poedit (на вашем компьютере)
- Скачать тему
.potфайл (или существующий.poдля вашего языка). - Откройте его в Poedit, создайте новый перевод для своей локали и переведите строки.
- Сохранять. Поэдит пишет и то, и другое
.poи скомпилированный.mo. - Переименуйте файлы в
{textdomain}-{locale}, напримерfabled-sunset-de_DE.poи.mo, и загрузите их наwp-content/languages/themes/.
Не помещайте пользовательские файлы в папку темы: обновление темы заменяет эту папку и ваши переводы ею.
Исправление жестко закодированных строк
Когда тема печатает текст напрямую (<a>Read more</a>), ни один файл перевода не может до него добраться. Ваши варианты, от самых чистых до самых быстрых:
- Спросите автора темы чтобы сделать строки переводимыми. Это помогает каждому пользователю темы.
- Переопределить шаблон в дочерней теме. Скопируйте файл шаблона в дочернюю тему и оберните строку:
esc_html_e( 'Read more', 'my-child-theme' );. Загрузите переводы вашей детской темы с помощьюload_child_theme_textdomain()наafter_setup_themeкрючок, как показано в справочнике. - Используйте инструмент, который переводит визуализированную страницу а не код, который подхватывает жестко закодированный текст вместе со всем остальным.
Примечание для разработчиков: начиная с WordPress 6.7, WordPress предупреждает, когда тема или плагин загружает переводы слишком рано, до after_setup_theme или init (Сделать WordPress Core). Если вы видите а _load_textdomain_just_in_time обратите внимание, что после обновления исправление относится к коду, загружающему текстовый домен.
Также помните, что не является частью темы: содержимое страницы и поста, созданные вами меню, текст виджета, отредактированные вами шаблоны блоков, текст настройщика и макеты конструктора страниц хранятся в базе данных. Файлы перевода тем их не трогают.
Перевод темы для многоязычного сайта
А .mo файл переключает язык строк темы для всего сайта. Он не может показывать немецкий язык одному посетителю и французский — другому, а также не переводит ваш контент. Для сайта на нескольких языках вам нужны еще три вещи:
- Каждый переведенный фрагмент текста, включая строки темы, меню, виджеты, контент и вывод плагинов, такие как кнопки WooCommerce и оформление заказа.
- Отдельный URL-адрес для каждого языка, например
/de/и/fr/. Google рекомендует разные URL-адреса для каждой языковой версии, а не файлы cookie или настройки браузера (Центр поиска Google). - Аннотации Хрефланга связывание версий, чтобы поисковые системы показывали правильную. Видеть как добавить теги 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 и переведите свою тему и контент вместе.