QtLinguist:定义单个上下文
QtLinguist: Define a single context
如何在 QtLinguist .ts 文件中定义单个上下文,而不是每个文件一个上下文?
我需要这个,因为我有相同的字符串出现在不同的文件中,我想要相同的翻译(并且没有重复)
在 C++ 中,您可以使用静态函数 QCoreApplication::translate(const char* context, const char* text)
而不是传统的 QObject::tr(const char* text)
逐个字符串地显式指定翻译上下文(有关详细信息,请参阅此文档: http://doc.qt.io/qt-5/qcoreapplication.html#translate)
例如
menuItem->setText(QCoreApplication::translate("UniversalContext", "Exit"));
同样,你可以使用qsTranslate(context, text)
函数在QML中指定上下文,a la
Text { text: qsTranslate("UniversalContext", "hello") }
这些都将被 lupdate
选择为属于同一上下文(重复的字符串只会在您的 .ts
文件中出现一次)
如果你有很多字符串并且在每次调用 translate/qsTranslate
时指定上下文会很痛苦,你应该相当简单地创建一个 1-arg 宏 (c++) 或一个 js 函数 ( qml) 作为包装器。
如何在 QtLinguist .ts 文件中定义单个上下文,而不是每个文件一个上下文?
我需要这个,因为我有相同的字符串出现在不同的文件中,我想要相同的翻译(并且没有重复)
在 C++ 中,您可以使用静态函数 QCoreApplication::translate(const char* context, const char* text)
而不是传统的 QObject::tr(const char* text)
逐个字符串地显式指定翻译上下文(有关详细信息,请参阅此文档: http://doc.qt.io/qt-5/qcoreapplication.html#translate)
例如
menuItem->setText(QCoreApplication::translate("UniversalContext", "Exit"));
同样,你可以使用qsTranslate(context, text)
函数在QML中指定上下文,a la
Text { text: qsTranslate("UniversalContext", "hello") }
这些都将被 lupdate
选择为属于同一上下文(重复的字符串只会在您的 .ts
文件中出现一次)
如果你有很多字符串并且在每次调用 translate/qsTranslate
时指定上下文会很痛苦,你应该相当简单地创建一个 1-arg 宏 (c++) 或一个 js 函数 ( qml) 作为包装器。