我是Qt的初学者。我有一个使用Qt设计的应用程序,它有多个窗口,每个窗口由几个带有硬编码文本的标签组成。为此应用添加多语言支持的最简单方法是什么?我应该使用哪些内置的Qt对象/函数?
我目前的想法是创建一个单独的xml文件,其中包含语言所有标签的文本。然后,一旦用户从菜单中选择语言图标,请加载相关的xml文件。但我不知道该怎么做。任何帮助将非常感谢!
更新 我试图实现给定here的示例。但它抛出以下错误,我无法解决它。 'class Ui :: MainWindow'没有名为'menuLanguage'的成员
QActionGroup * langGroup = new QActionGroup(ui-> menuLanguage);
答案 0 :(得分:1)
Qt有翻译支持。查看Qt Linguist
基本上,您通过调用QObject::tr
标记所有硬编码文本,例如
lbl->setText(tr("My text to translate"));
Qt Linguist解析此类调用的所有源文件和UI表单(使用lupdate.exe)并构建ts
文件。使用Qt Linguist GUI应用程序,您可以翻译它们。使用lrelease,您可以创建一个qm
文件,该文件将在运行时加载,并自动翻译文本
答案 1 :(得分:1)
尝试Qt Linguist:
我给你举了一个简单的例子:
.pro
TRANSLATIONS += translation_fa.ts
.h
#include <QTranslator>
QTranslator translator;
的.cpp
if(translator.load("E:/Qt/Linguist/linguist/translation_fa.qm"))
qDebug()<<"successfully load qm file.";
else
qDebug()<<"problem in load qm file.";
// change language to second language
qApp->installTranslator(&translator);
// change language to default language
qApp->removeTranslator(&translator);
不要忘记使用Qt Linguist Tools。
的问题的示例项目答案 2 :(得分:0)
Qt内置了管理多种语言的功能:
请参阅:https://wiki.qt.io/How_to_create_a_multi_language_application
研究lupdate lrelease和语言学家