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

WordPress主题使用mo文件翻译含超链接文本不生效该如何解决?

WordPress主题国际化问题修复方案

核心问题排查&修复步骤

  • 问题1:带上下文的翻译函数与POT条目不匹配
    你使用了带上下文的翻译函数esc_html_x(),第二个参数是翻译上下文,但你的POT文件中对应的msgid "Link"条目没有声明msgctxt "link text for Link",导致翻译系统无法匹配到对应条目,直接返回原始英文。
    修复:重新生成POT文件,确保上下文参数被正确识别同步,或直接将esc_html_x()改为esc_html__(),去掉第二个上下文参数(该场景下无必须区分上下文的必要)。
  • 问题2:转义函数使用错误
    你在输出带链接的字符串时使用了esc_html__(),该函数会将翻译结果中的所有HTML标签转义为实体字符,后续传入的<a>标签也会被转义成纯文本显示。同时你把不需要翻译的URL放入了翻译函数中,属于冗余操作,还存在翻译误改URL的风险。
    修复:调整输出代码为:
    $anchor = esc_html__( 'Link', 'my-theme' );
    // URL无需翻译,直接写死即可
    $domain = esc_url( 'https://myaddress.com' );  
    $link   = sprintf( '<a href="%s" rel="noopener" target="_blank">%s</a>', $domain, $anchor );
    // 翻译字符串本身不含HTML,直接用__()即可
    echo sprintf( __( 'Check this %1$s', 'my-theme' ), $link );
    
  • 问题3:MO文件命名不符合规范
    确认Loco Translate生成的MO文件命名符合WordPress要求:必须为{文本域}-{语言标识}.mo,比如简体中文对应my-theme-zh_CN.mo、繁体中文对应my-theme-zh_TW.mo,且文件确实存放在主题根目录的languages文件夹内,无路径、拼写错误。
  • 问题4:子主题场景下加载路径错误
    如果你当前激活的是子主题,get_template_directory()返回的是父主题路径,会导致无法读取子主题内的语言包,需要将加载代码调整为:
    function my_theme_textdomain() {
        load_theme_textdomain( 'my-theme', get_stylesheet_directory() . '/languages' );
    }
    add_action( 'after_setup_theme', 'my_theme_textdomain' );
    
  • 问题5:站点语言未切换
    确认WordPress后台设置 → 常规 → 站点语言已经切换为目标语言,否则系统默认加载英文语言包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:06:04