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

如何用Linguist与lrelease生成专有语言的翻译语言文件?

解决lupdate无法识别自定义pm()函数的问题

lupdate默认只识别Qt自带的翻译标记(比如tr()、QT_TR_NOOP()),你的pm()是自定义函数,得手动配置让它被扫描到,按以下步骤操作:

1. 配置自定义翻译函数识别

  • 如果项目有Qt的.pro文件,直接在文件里添加一行:
    TRANSLATION_FUNCTIONS += pm
    
    这行代码的作用是告诉lupdate,把pm()当作包含待翻译字符串的函数处理。
  • 要是没有.pro文件,可直接在lupdate命令里指定要识别的函数:
    lupdate -recursive '.' -ts HAUSMITTEIL_de.ts -tr-function pm
    

2. 确保待翻译字符串为字面量

lupdate只能扫描到硬编码在代码里的字符串字面量,比如pm("Datum")这种格式。如果你的专有语言是动态生成C++代码的,要保证最终生成的代码中,pm()的第一个参数是直接写死的字符串,不能是变量或动态拼接的内容,否则lupdate无法捕获。

3. 重新生成ts文件

  • 用.pro文件的情况:先执行qmake更新配置,再运行
    lupdate your_project.pro
    
  • 直接用命令的情况:重新执行带-tr-function参数的lupdate命令

完成后生成的HAUSMITTEIL_de.ts文件里,就会包含"Datum"、"Seite %1!"这些待翻译条目了。

后续操作

  • 用Qt Linguist打开ts文件完成翻译
  • 执行lrelease HAUSMITTEIL_de.ts -qm HAUSMITTEIL_de.qm生成最终可用的qm语言文件

内容的提问来源于stack exchange,提问作者Andy A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:20:41