首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt MultiLanguage应用

Qt MultiLanguage应用
EN

Stack Overflow用户
提问于 2018-03-20 12:01:40
回答 2查看 429关注 0票数 1

基本上,我试图在Qt中制作一个多语言的应用程序。为此,我在hindi.ts cmd终端中使用lupdatelrelease命令创建了lupdate文件和lrelease文件。我有一个,其中有一个组合框,根据所选语言,我将该值加载到注册表中。如下图所示,图1是我的程序的结构,fig2是语言设置的UI

1.我的项目中的小部件框图

2.语文指南页

代码:

代码语言:javascript
复制
void Form_LanguageSettings::on_pbtn_Submit_clicked()
{
    QSettings settings("HKEY_CURRENT_USER\\MyProject\\Employee", QSettings::NativeFormat);
    settings.setValue("language", ui->cmb_Language->currentText());

}

因此,在更新时没有问题。但是,当我想将它从注册表检索到ListOfDepartment Widget时,我以这样的方式检索它:

代码语言:javascript
复制
QSettings settings("HKEY_CURRENT_USER\\MyProject\\Employee", QSettings::NativeFormat);

QApplication *app;
QString SelectedLanguage;
SelectedLanguage=settings.value("language").toString();
if(SelectedLanguage.toLower() != "english")
{
    if(SelectedLanguage=="hindi")
    {
        QTranslator translation;

        translation.load("C:/MyProject/LanguagePack/ObjectFiles/HindiDevanagari.qm");
        app->installTranslator(&translation);
    }
}

这样,我就无法加载相应的语言。如果我在main.cpp文件中手动加载一种特定的语言,它就会加载,但是如果我通过应用程序中的设置小部件来加载它,它就不能工作。当语言设置要在一个单独的小部件中完成时,我如何处理这个问题?我对QT的多语种很陌生。拜托,有什么帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-20 13:12:01

试着使用:

代码语言:javascript
复制
QTranslator* translation = new QTranslator();
translation->load("C:/MyProject/LanguagePack/ObjectFiles/HindiDevanagari.qm");
QApplication::instance()->installTranslator(translation);
//or also QApplication::installTranslator(translation), it is static

在您的代码中,QTranslator实例在if块的末尾被销毁,app变量没有分配。

票数 1
EN

Stack Overflow用户

发布于 2018-03-20 13:13:18

可能的话,您应该使用简短的文件名和QDir加载翻译。

代码语言:javascript
复制
QTranslator * translation =new QTranslator();
QString dir ("C:/MyProject/LanguagePack/ObjectFiles");
translation->load ("HindiDevanagari", dir);
app->installTranslator (translation);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49383692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档