Почему ваши переводы не отображаются в WordPress (Руководство по устранению неполадок)
В разработке WordPress нет ничего более разочаровывающего, чем «Тихий сбой».
Вы все сделали правильно. Вы перевели файл .po. Вы скомпилировали его в файл .mo. Вы загрузили его на свой сервер по FTP. Вы очистили кэш.
Вы обновляете страницу, ожидая увидеть испанский, французский или немецкий. Вместо этого вы видите... английский.
Никакого сообщения об ошибке, никакого белого экрана — только упрямый, непереведенный текст. Прежде чем рвать на себе волосы, прочитайте это руководство. Вот 5 самых распространенных причин, по которым переводы не загружаются в WordPress, и способы их устранения.
1. Вы неправильно называете файл
WordPress невероятно строг к именованию файлов. Если вы пропустите символ, он не загрузит файл.
Стандартный формат: {text-domain}-{locale}.mo
- Текстовый домен (Text Domain): Это уникальный идентификатор темы или плагина (например,
woocommerce,twentytwentyfour,my-custom-plugin). - Локаль (Locale): Код локали WP (например,
es_ESдля испанского,fr_FRдля французского).
Распространенные ошибки:
- Название файла просто
es_ES.mo(Это работает только для глобальных файлов ядра WordPress, а не для плагинов). - Использование неправильного дефиса:
my_plugin_es_ES.mo(подчеркивание) вместоmy-plugin-es_ES.mo(дефис). - Угадывание текстового домена. Вы должны проверить код плагина (заголовок
style.cssили функциюload_plugin_textdomain), чтобы найти точный слаг.
2. Вы поместили файл не в ту папку
Куда вы загружаете файл, имеет такое же значение, как и то, как вы его называете. WordPress ищет в определенных каталогах в определенном порядке.
- «Безопасная» системная папка:
/wp-content/languages/plugins/или/wp-content/languages/themes/.- Плюсы: Это безопасно при обновлении плагинов.
- Минусы: Вы должны назвать файл
textdomain-locale.mo.
- Папка автора:
/wp-content/plugins/plugin-name/languages/.- Плюсы: Легко найти.
- Минусы: ОПАСНОСТЬ. Когда вы обновляете плагин, эта папка очищается. Ваши переводы исчезнут.
Лучшая практика: Всегда помещайте свои пользовательские файлы .mo в глобальный каталог /wp-content/languages/, чтобы предотвратить потерю данных во время обновлений.
3. «Тихий убийца»: Испорченный синтаксис в файле .po
Это самая сложная проблема для отладки, и она часто случается с общими инструментами перевода ИИ.
WordPress читает бинарные файлы .mo, которые компилируются из текстовых файлов .po. Если ваш файл .po содержит синтаксические ошибки, файл .mo может быть сгенерирован, но он будет «сломан» внутри.
Как это происходит? Если переводчик (человек или ИИ) испортит форматирование Gettext, строка станет недействительной.
- Пример: Отсутствует закрывающая кавычка
". - Пример: Ломаная переменная (изменение
%sна% s). - Пример: Испорченный счетчик
msgid_plural.
Когда WordPress встречает сломанную запись в файле .mo, он часто пропускает ее или полностью перестает читать файл, возвращаясь к оригинальному английскому.
4. Вы забыли скомпилировать (.po vs .mo)
WordPress не может читать файлы .po напрямую. Это распространенное заблуждение.
.po= Читаемо для человека (Portable Object)..mo= Читаемо для машины (Machine Object).
Если вы загрузите файл my-theme-es_ES.po, но забудете сгенерировать соответствующий файл .mo, ничего не произойдет. Вы должны скомпилировать его.
5. Кэширование (Обычный подозреваемый)
Если вы используете плагины кэширования (WP Rocket, LiteSpeed) или кэширование на стороне сервера (Varnish, Redis), ваш сайт может выдавать кэшированную версию HTML с момента до того, как вы загрузили перевод.
Исправление: очистите все кэши, включая кэш браузера и кэш объектов.
Окончательное исправление: Допустимые файлы с самого начала
Устранение неполадок путей и имен файлов — это просто. Устранение неполадок испорченного синтаксиса (Причина №3) — это кошмар.
Если вы используете инструмент, который ломает ваши переменные кода или портит структуру Gettext, вы потратите часы, задаваясь вопросом, почему файл не работает, не понимая, что сам файл «отравлен».
Вот почему мы создали SimplePoTranslate.
- Блокировка синтаксиса: Мы гарантируем, что каждая строка синтаксически верна, прежде чем вы ее загрузите. Мы блокируем переменные, такие как
%s, чтобы их нельзя было сломать. - Идеальное форматирование: Мы создаем чистые, стандартные файлы
.po, которые компилируются в рабочие файлы.moв 100% случаев. - Плагины не требуются: Вы скачиваете файл и знаете, что он работает. Вам просто нужно загрузить его в правильную папку.
Перестаньте гадать, почему ваши переводы невидимы. Начните с файла, которому можно доверять.
Готовы переводить без головной боли? Начните бесплатно на SimplePoTranslate.com