Loco Translate 与主题冲突导致乱码,通常是因为翻译文件编码格式错误或文件保存路径被主题覆盖。优先检查文件编码是否为 UTF-8 无 BOM,并确认翻译文件未存放在会被主题更新覆盖的目录。
先说结论:解决乱码的核心是统一文件编码为 UTF-8 无 BOM,并将翻译文件保存至 WordPress 全局语言目录以避免主题更新覆盖。
- 先确认:检查 .po 和 .mo 文件编码是否包含 BOM 头
- 先处理:将翻译文件移动到 wp-content/languages/themes 目录
- 再验证:清除缓存后刷新前台页面检查文字显示
快速处理思路
此类问题不适合纯命令操作,建议通过后台界面调整文件路径和编码设置。
第一步进入 Loco Translate 插件界面,找到对应主题的翻译文件。第二步在编辑器底部将编码格式强制设置为 UTF-8。第三步将保存路径从主题目录修改为系统语言目录。
为什么会这样
乱码的根本原因是文件编码不一致或主题加载了错误的翻译文件版本。
WordPress 主题更新时可能会覆盖主题目录内的翻译文件,导致 Loco Translate 编辑的内容丢失或恢复为旧编码。此外,部分主题函数会优先加载主题目录下的 .mo 文件,若该文件编码含 BOM 头,PHP 解析时会产生乱码。
分步处理
按以下顺序操作可隔离冲突并修复显示问题。
步骤 1:备份当前翻译文件
在 Loco Translate 编辑界面点击保存前,先下载 .po 文件到本地。若操作失误,可通过 FTP 将备份文件传回 wp-content/languages/themes 目录。
步骤 2:修正文件编码
在 Loco Translate 编辑器底部找到 Encoding 选项,选择 UTF-8。确保不选择 UTF-8 with BOM,BOM 头会导致 PHP 输出额外字符引发乱码。
步骤 3:更改保存路径
在模板位置(Template Location)选项中,选择 System 或 Languages 目录,避免选择 Author 或 Theme 目录。系统目录路径通常为 wp-content/languages/themes。
步骤 4:清除缓存
若站点使用缓存插件或服务器缓存,需清除 OPCache 和页面缓存。翻译文件变更不会自动触发缓存刷新。
怎么验证是否生效
通过前台页面显示和调试模式确认修复结果。
刷新网站前台,检查原本乱码的文本是否恢复正常。开启 WordPress 调试模式,查看 wp-content/debug.log 是否有加载翻译文件相关的警告。若调试日志无报错且前台显示正常,则冲突已解决。
常见坑
操作过程中需注意以下高风险环节。
主题更新会覆盖主题目录内的翻译文件,导致修复失效。部分缓存插件会缓存文本域加载结果,修改文件后需手动清除。子主题未正确继承父主题文本域时,翻译文件无法生效。
常见问题
更新主题后翻译文件丢失怎么办?
将翻译文件保存至 wp-content/languages/themes 目录可避免丢失。该目录不受主题更新影响,WordPress 会优先加载此处文件。
为什么修改了编码还是乱码?
可能是浏览器缓存或服务器 OPCache 未刷新。尝试强制刷新浏览器并重启 PHP 服务。
子主题需要单独配置翻译吗?
视主题开发规范而定,通常建议针对父主题文本域进行翻译。若子主题有独立文本域,需单独生成对应语言文件。
参考来源
WordPress.org 插件页面:Loco Translate https://wordpress.org/plugins/loco-translate/
WordPress 开发者文档:国际化指南 https://developer.wordpress.org/plugins/internationalization/