我在.ts
文件中添加了一些手动条目,每次运行lupdate.exe
命令时,这些条目都会被删除。
lupdate.exe .. -no-obsolete -locations absolute -ts locale_en.ts locale_fr.ts
我希望lupdate.exe
添加缺失的条目,以清除过时的条目,但保留手动条目(对应于要翻译的字符串,但这些字符串的翻译是通过函数进行的,而不是直接调用qsTr
或qTranslate
)
这可能吗?
我的背景:
我在一个纯qml解决方案没有任何C后端,没有任何构建或使机制。lupdate.exe
和lrelease.exe
为手动调用
您可以为手动条目创建一个额外的翻译源(TS)文件,称为additional_locale_fr.ts
,并将其与lupdate
生成的文件合并,例如使用lconvert
生成的locale_fr.ts
。
lconvert -i additional_locale_fr.ts locale_fr.ts -o all_locale_fr.ts
(合并翻译文件(.ts)与现有的。ts文件使用QT实用程序(lconvert))
在这种情况下也很有趣。
您也可以在函数中的字符串周围使用QT_TR_NOOP()
。请看这里和这里。
QT_TR_NOOP与动态转换一起使用函数qsTr()和qsTranslate()。它将字符串标识为需要翻译(因此可以通过lupdate识别),但是离开实际转换为动态函数。