求助:WordPress站点专属插件100%翻译却无法生效
排查WordPress站点专属插件翻译不生效的常见原因
嘿,我明白这种明明显示翻译完成但就是不生效的挫败感!咱们一步步拆解可能的问题,大部分情况都是些容易忽略的细节:
1. 文本域声明错了(最常见的坑)
你的主插件文件mysitecore.php里必须明确标注插件的文本域,而且要和翻译文件名的前缀完全一致(大小写也不能错)。
先检查主文件顶部的插件注释里有没有这段:
/* Plugin Name: My Site Core Text Domain: mysitecore Domain Path: /mysitecore/languages/ */
重点注意:
Text Domain必须和你的翻译文件名前缀(mysitecore-hu_HU.po里的mysitecore)完全匹配;Domain Path是关键!你的主文件在plugins/根目录,翻译文件在plugins/mysitecore/languages/,所以相对路径得写/mysitecore/languages/,如果之前写的是/languages/,WordPress会去plugins/languages/找文件,自然找不到你的翻译!
另外,注册自定义文章类型时,所有要翻译的字符串(比如名称、描述)都得用__()或_e()函数,并指定文本域:
register_post_type( 'my_custom_post', array( 'labels' => array( 'name' => __( 'My Custom Posts', 'mysitecore' ), 'singular_name' => __( 'My Custom Post', 'mysitecore' ), ), // 其他参数... ) );
要是这里没加文本域,WordPress会用默认的default文本域,根本不会调用你的翻译文件。
2. MO文件有问题或者权限不足
虽然你导出了.mo文件,但可能生成不完整,或者服务器读不到它:
- 打开PoEdit,重新从
.po文件导出一次.mo,确保编码是UTF-8; - 检查服务器上
languages目录和.mo文件的权限,一般目录设为755,文件设为644,保证WordPress能读取。
3. 站点语言设置不匹配
去WordPress后台的设置→常规→站点语言,确认是不是选的「匈牙利语(Hungarian)」(对应hu_HU)。如果站点语言和翻译文件的locale不匹配,翻译肯定不会生效。
4. Loco Translate的缓存或同步问题
有时候Loco显示100%完成,但实际没同步到生成的.mo文件:
- 打开Loco Translate找到你的插件,点击「同步」按钮,确保所有需要翻译的字符串都被抓取到;
- 重新生成
.mo文件,或者手动替换服务器上的.mo; - 清一下WordPress的缓存(如果用了缓存插件的话),旧缓存会挡住新翻译的生效。
5. 自定义文章类型注册时机不对
要是你注册自定义文章类型的代码执行得太早,在翻译文件加载之前就运行了,字符串自然没法被翻译。确保代码挂在init钩子上:
add_action( 'init', 'register_my_custom_post_type' ); function register_my_custom_post_type() { // 这里写注册自定义文章类型的代码 }
这样能保证翻译文件已经加载完成,再注册类型,字符串才能被正确翻译。
先排查这些点,大概率能解决问题。如果还是不行,可以打开WordPress的调试模式,看看有没有相关错误提示,能帮你更快定位。
内容的提问来源于stack exchange,提问作者Feralheart
相关产品推荐
相关产品推荐

