使用硬编码文本向Qt应用添加多语言选项

时间:2017-11-14 10:55:01

标签: c++ qt5 multilingual

我是Qt的初学者。我有一个使用Qt设计的应用程序,它有多个窗口,每个窗口由几个带有硬编码文本的标签组成。为此应用添加多语言支持的最简单方法是什么?我应该使用哪些内置的Qt对象/函数?

我目前的想法是创建一个单独的xml文件,其中包含语言所有标签的文本。然后,一旦用户从菜单中选择语言图标,请加载相关的xml文件。但我不知道该怎么做。任何帮助将非常感谢!

更新 我试图实现给定here的示例。但它抛出以下错误,我无法解决它。 'class Ui :: MainWindow'没有名为'menuLanguage'的成员

QActionGroup * langGroup = new QActionGroup(ui-> menuLanguage);

3 个答案:

答案 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

image

这是关于github download here.

的问题的示例项目

答案 2 :(得分:0)

Qt内置了管理多种语言的功能:

请参阅:https://wiki.qt.io/How_to_create_a_multi_language_application

研究lupdate lrelease和语言学家