gpt4 book ai didi

c++ - 使用在全局范围内声明的 Qt 本地化字符串

转载 作者:行者123 更新时间:2023-11-28 00:29:48 25 4
gpt4 key购买 nike

我正在开发 Qt UI 应用程序并对 UI 字符串进行本地化。在我的应用程序中,我使用 QLabel 并动态设置文本。我尝试了两种设置本地化文本的方法。在执行应用程序时,我可以看到,在我的第一种方法中,字符串正在本地化,但在第二种方法中,它们没有。

//Approach 1:
//ui.cpp
//Directly hardcoding the values
labelBox1->setText(QApplication::translate("context","test string"));

//Approach 2:
//UI_Consts.h
static const QString str = QT_TRANSLATE_NOOP("Context","Test String");
//variable 'str' is in global scope

//ui.cpp
#include "UI_Consts.h"
...
labelBox1->setText(str);

当我调试为什么第二种方法不起作用时,我发现全局变量在执行 main 函数之前被初始化。我们通常在 main() 中为翻译编写代码,因此这些全局变量不会被翻译。我更喜欢第二种方法,因为我们可以在一个文件中列出所有 UI 字符串并轻松维护它们。我想知道有什么方法可以本地化在全局作用域中声明的字符串(就像在我的第二种方法中使用的那样)?

最佳答案

嗯,这不是 Qt 翻译系统的用途...

但如果你想那样做,你可以编写一个函数(或实现一个包含所有字符串的类/结构)来初始化所有字符串变量main 中加载翻译后() - 当然这会产生更多代码 :D

关于c++ - 使用在全局范围内声明的 Qt 本地化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369220/

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