【发布时间】:2014-04-29 15:39:51
【问题描述】:
我正在开发 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() 中编写翻译代码,因此这些全局变量不会被翻译。 我更喜欢第二种方法,因为我们可以在一个文件中列出所有 UI 字符串并轻松维护它们。我想知道有什么方法可以本地化在 Global Scope 中声明的字符串(就像我在第二种方法中使用的那样)?
【问题讨论】:
标签: c++ qt localization translation