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

xgettext无法提取GTK4 Builder文件中可翻译字符串的问题

xgettext无法提取GTK4 Builder文件中可翻译字符串的问题

嘿,我之前也碰到过一模一样的问题!其实xgettext默认对GTK4 Builder文件的支持需要一些小调整,尤其是你这种由blueprint-compiler生成的glade文件,咱们一步步来解决:

  • 先检查xgettext版本:旧版本的xgettext对GTK4的Builder格式支持不太到位,建议用0.21及以上版本。你可以在终端里跑 xgettext --version 确认一下版本号,要是版本太低就更新一下。

  • 指定正确的文件类型参数:xgettext需要明确知道这是Glade/Builder文件,所以执行提取命令的时候要加上--language=Glade参数,完整命令大概是这样:

    xgettext --language=Glade -o messages.pot builder.glade
    

    这个参数会让xgettext专门解析Builder文件里的可翻译属性,比如窗口的title、按钮的label这些。

  • 优先从Blueprint源文件提取(更靠谱):既然你的glade文件是由.blp文件生成的,直接从Blueprint源文件提取翻译字符串会更准确,还能避免生成文件里的格式问题。用blueprint-compiler自带的提取命令就行:

    blueprint-compiler extract builder.blp -o blueprint.pot
    

    如果还有其他代码里的翻译字符串,可以用msgcat把多个pot文件合并:

    msgcat blueprint.pot your_code.pot -o combined.pot
    
  • 确保字符串标记为可翻译:在Blueprint文件里,要给需要翻译的字符串加上下划线前缀,比如:

    title: _("My App")
    

    这样blueprint-compiler生成glade文件时,会自动加上translatable="yes"属性,xgettext就能准确识别这些字符串了。

  • 指定编码格式:你的文件是UTF-8编码的,加上--from-code=UTF-8参数能避免编码识别错误,命令调整为:

    xgettext --language=Glade --from-code=UTF-8 -o messages.pot builder.glade
    

按照这些步骤试一下,应该就能顺利提取到可翻译字符串啦!

备注:内容来源于stack exchange,提问作者Joel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:29:33