如何在QtLinguist .ts文件中定义单个上下文,而不是每个文件都有一个上下文?
我需要这个,因为我有相同的字符串显示在不同的文件中,我想要相同的翻译(并且没有重复)
答案 0 :(得分:3)
从C ++开始,您可以使用静态函数QCoreApplication::translate(const char* context, const char* text)
而不是传统的QObject::tr(const char* text)
,逐个字符串地显式指定转换上下文(有关详细信息,请参阅此文档:{{ 3}})
e.g。
menuItem->setText(QCoreApplication::translate("UniversalContext", "Exit"));
同样,您可以使用qsTranslate(context, text)
函数a la在QML中指定上下文
Text { text: qsTranslate("UniversalContext", "hello") }
lupdate
所有这些内容都属于相同的上下文(重复字符串只会在.ts
文件中显示一次)
如果你有很多字符串,并且在每次调用translate/qsTranslate
时指定上下文都会很痛苦,那么创建1-arg宏(c ++)或js函数(qml)应该相当简单作为包装。