为什么您的翻译没有在WordPress中显示(故障排除指南)
在这个WordPress开发中,没有比“静默失败”更令人沮丧的了。
您做对了一切。您翻译了.po文件。您将其编译为.mo文件。您通过FTP将其上传到服务器。您清除了缓存。
您刷新页面,期望看到西班牙语、法语或德语。 相反,您看到的......是英语。
没有错误消息,没有白屏——只有顽固的、未翻译的文本。在您抓狂之前,请阅读本指南。以下是翻译无法在WordPress中加载的5个最常见原因以及如何修复它们。
1. 您命名的文件错误
WordPress对文件命名非常严格。如果您错过一个字符,它将不会加载该文件。
标准格式为:{text-domain}-{locale}.mo
- 文本域(Text Domain): 这是主题或插件的唯一ID(例如,
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函数)以找到确切的slug。
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文件中的语法损坏
这是最难调试的问题,并且经常发生在通用AI翻译工具中。
WordPress读取二进制.mo文件,这些文件是从.po文本文件编译而来的。如果您的.po文件包含语法错误,.mo文件可能会生成,但在内部是“损坏”的。
这是怎么发生的? 如果翻译人员(人类或AI)搞砸了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文件,这些文件可以100%编译成工作的.mo文件。 - 无需插件: 您下载该文件,并且知道它有效。您只需要将其上传到正确的文件夹。
停止猜测为什么您的翻译不可见。从您可以信任的文件开始。
准备好毫无头痛地翻译了吗?在SimplePoTranslate.com免费开始