QtLinguist:定义单个上下文

时间:2015-04-22 12:20:49

标签: qt qml

如何在QtLinguist .ts文件中定义单个上下文,而不是每个文件都有一个上下文?

我需要这个,因为我有相同的字符串显示在不同的文件中,我想要相同的翻译(并且没有重复)

1 个答案:

答案 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)应该相当简单作为包装。