WordPress插件keydesign-addon翻译失效问题求助
我来帮你一步步排查这个翻译失效的问题,都是开发者常踩的坑,咱们逐个解决:
1. 确认翻译文件的命名规则
WordPress对翻译文件的命名有严格要求,必须是 {文本域}-{语言代码}.mo 和 .po。你的文本域是keydesign,波斯语的代码是fa_IR,所以正确的文件名应该是:
keydesign-fa_IR.mokeydesign-fa_IR.po
你之前用的keydesign-addon-fa_IR.mo和fa_IR.mo都不符合规则,WordPress找不到对应的文件,自然不会加载翻译。
2. 验证翻译文件的存放路径
你的加载代码里写了dirname(plugin_basename(__FILE__)) . '/languages/',假设这段代码在插件根目录的主文件(比如keydesign-addon.php)里,那么翻译文件必须放在:wp-content/plugins/keydesign-addon/languages/ 目录下。
可以手动检查这个目录是否存在,文件是否上传正确,权限是否正常(一般设置为755或644)。
3. 检查加载代码的正确性
虽然你的代码看起来没问题,但可以加个调试判断,确认翻译文件是否被成功加载:
add_action( 'plugins_loaded', 'keydesign_addon_load_textdomain' ); function keydesign_addon_load_textdomain() { $loaded = load_plugin_textdomain( 'keydesign', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); // 调试用,可在前台查看是否返回true(生产环境记得删掉) if ( !$loaded ) { error_log( 'KeyDesign插件翻译文件加载失败' ); } }
如果日志里出现加载失败的提示,说明路径或者文件有问题,再回头检查第2步。
4. 确认站点语言设置
很多人会忽略这一点:你需要在WordPress后台的「设置」→「常规」里,把「站点语言」设置为「波斯语(fa_IR)」。如果站点语言还是默认的英语,WordPress不会加载波斯语的翻译文件。
5. 排查Loco Translate的配置问题
用Loco Translate的时候,要注意这几点:
- 打开Loco Translate后,选择「插件」→找到你的
keydesign-addon插件 - 点击「新建语言」,选择「波斯语(Iran)」,然后确保「保存位置」选择「插件语言目录」(也就是我们之前说的
languages/目录) - 翻译完成后点击「同步」,确保所有需要翻译的文本都被抓取到,然后保存生成
.mo文件 - 检查Loco Translate的「设置」里,是否开启了「自动加载翻译」,如果禁用了也会导致翻译失效
6. 清除缓存
最后别忘了清除WordPress的缓存插件(如果有的话),以及浏览器缓存。有时候旧的缓存会导致新的翻译不生效。
如果以上步骤都试过还是不行,你可以再检查一下所有翻译文本的调用是否都正确使用了keydesign这个文本域,有没有拼写错误(比如写成key-design或者keydesign-addon)。
内容的提问来源于stack exchange,提问作者elnaz

