You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress未识别自定义文章类型_x()函数翻译问题排查

排查WordPress自定义文章类型_x函数翻译不生效的问题

我来帮你解决这个_x函数翻译失效的问题,结合你的代码和Poedit的使用场景,大概率是上下文参数匹配或者Poedit配置的问题,咱们一步步排查:

1. 确认Poedit中_x字符串的上下文完全匹配

_x函数的核心是第二个参数(上下文),WordPress会通过「文本内容+上下文+文本域」的组合来匹配翻译。你的代码里:

_x( 'Projects', 'post type general name', 'maria' )

这里的上下文是post type general name,你需要打开Poedit,找到这条翻译条目,检查「上下文」列的内容是否和代码里的第二个参数完全一致——包括空格、拼写、大小写都不能错。比如如果Poedit里上下文写成了post-type-general-name或者少了空格,WordPress就找不到对应的翻译,只能显示原文。

2. 确保Poedit正确抓取带上下文的_x字符串

有时候Poedit默认的解析规则没正确识别_x的上下文,你需要检查解析器设置:

  • 打开Poedit,进入「编辑 > 首选项 > 解析器」
  • 找到PHP解析器,查看其关键字列表里是否有_x:1,2c(这个规则告诉Poedit:抓取_x的第1个参数作为翻译文本,第2个参数作为上下文)
  • 如果没有这个规则,点击「添加」,关键字填_x:1,2c,保存后重新扫描主题文件,确保所有带上下文的_x字符串都被正确导入。

3. 验证翻译文件的命名与加载

WordPress对翻译文件的命名和加载路径有严格要求:

  • 翻译文件命名必须是文本域-语言代码.mo,比如你的文本域是maria,德语(德国)的文件应该是maria-de_DE.mo(注意是de_DE,不是de)
  • 把.mo文件放在主题的languages目录下,同时确保主题在functions.php里正确加载翻译:
    function maria_load_textdomain() {
        load_theme_textdomain( 'maria', get_template_directory() . '/languages' );
    }
    add_action( 'after_setup_theme', 'maria_load_textdomain' );
    
  • 检查WordPress后台「设置 > 常规」里的站点语言是否设置为Deutsch (Deutschland)(对应语言代码de_DE),语言代码不匹配的话翻译也不会生效。

4. 检查文本域的一致性

确保所有_x函数的第三个参数(文本域)都是'maria',同时Poedit项目设置里的「文本域」也设置为maria——文本域是大小写敏感的,必须和代码里完全一致。

5. 清除缓存

最后别忘了清除缓存:

  • 如果用了WordPress缓存插件,比如WP Rocket、W3 Total Cache,先清除插件缓存
  • 浏览器按Ctrl+F5强制刷新,避免旧的缓存内容干扰显示

按照上面的步骤排查,尤其是前两点(上下文匹配和Poedit解析规则),应该就能解决_x函数翻译不生效的问题了。

内容的提问来源于stack exchange,提问作者wandervogel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:05:53