使用Loco Translate完成WordPress翻译后网站未生效,插件缺失load_theme_textdomain
解决WordPress插件翻译不生效的问题
嘿,我碰到过好几个类似的翻译不生效的情况,给你梳理几个关键排查点,应该能搞定你的问题:
1. 先确认插件有没有加载翻译的核心代码
你提到插件里没找到load_theme_textdomain——其实这个函数是给主题用的,插件要加载翻译得用load_plugin_textdomain才对!如果插件主文件里连这个函数都没有,那你生成的MO/PO文件再正确也白搭。
解决办法:打开插件的主文件(比如o2.php),在合适的位置(比如文件开头,或者插件初始化的钩子里)加上这段代码:
add_action( 'plugins_loaded', 'o2_load_translations' ); function o2_load_translations() { // 把o2换成插件实际的文本域,你可以在插件的pot文件里找到这个名称 load_plugin_textdomain( 'o2', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); }
如果插件里没有languages目录,就手动新建一个,翻译文件要放在这里才行。
2. 核对翻译文件的命名和存放路径
- 文件名必须严格匹配格式:
{文本域}-{语言代码}.mo/.po,比如你站点是简体中文,那就是o2-zh_CN.mo和o2-zh_CN.po(注意是下划线,不是横杠) - 一定要把文件放在插件的
languages目录里,别放错到主题目录或者WordPress全局语言目录了(除非你特意配置了,但默认插件优先加载自己目录的翻译)
3. 检查Loco Translate的保存设置
在Loco Translate编辑翻译的时候,记得:
- 模板文件要选插件自带的
.pot文件,如果没有,就让Loco从插件代码里自动提取生成一个 - 保存位置选「插件语言目录」,别选主题或者自定义目录,不然插件找不到这些文件
4. 强制刷新翻译缓存
有时候WordPress会偷偷缓存翻译,光清浏览器缓存不够:
- 去后台「设置」→「常规」,把站点语言随便改成另一种,保存后再改回你需要的语言,触发翻译重新加载
- 或者用FTP删掉
wp-content/languages/plugins里对应的插件翻译文件,让Loco重新生成一份
最后再提醒一句
主题的翻译函数和插件的是分开的,别搞混啦!插件必须用load_plugin_textdomain,这是很多小众插件容易漏掉的点,补上之后应该就能正常显示翻译了。
内容的提问来源于stack exchange,提问作者Stax
相关产品推荐
相关产品推荐

