gpt4 book ai didi

qt - 自动化自定义 QTranslator 上下文

转载 作者:行者123 更新时间:2023-12-04 12:57:38 24 4
gpt4 key购买 nike

Qt lupdate 和 QTranslator 将源字符串分组到独占上下文中。这意味着在一个上下文中定义的翻译将无法在不同的上下文中访问。

C++ 中的默认上下文是已覆盖的类的名称 QObject::tr() .声明性 QML 中的默认上下文是没有扩展名的当前文件名。要覆盖翻译上下文,可以使用 qApp->translate( "context", "source" )qsTranslate( "context", "source" )在 C++ 或 QML 中。

我希望能够在大型项目中使用单个通用翻译上下文,我发现为每个翻译功能指定翻译上下文非常乏味。是否有任何现有或 future 的 Qt 翻译框架扩展可以简化此任务?我正在寻找像 tr( "source" ) 一样简单的东西和 qsTr( "source" ) ,但使用系统范围或项目范围的默认上下文。有任何想法吗?

最佳答案

您可以使用 Q_DECLARE_TR_FUNCTIONS() 应用于仅作为上下文的类定义的宏:

class CONTEXT_CLASS {
Q_DECLARE_TR_FUNCTIONS(CONTEXT_CLASS)
};

其中 CONTEXT_CLASS 可以像您希望的那样短,假设为 X(希望这不会与您的代码中的其他任何内容冲突)。这将使您的 tr() 语句
X::tr("source");

不要尝试#define 来缩短X::tr,因为这不会被翻译工具识别。

关于qt - 自动化自定义 QTranslator 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com