Qt 多语言切换——Qt语言家

  • Qt 多语言切换——Qt语言家
    • 1.修改程序文件
      • 1.1在pro文件中加入说明
      • 1.2语言文字在程序中说明
    • 2.生成ts文件
    • 2.修改ts文件
    • 3. 生成qm文件
    • 4. 加载qm语言包
    • 5. 重新设置界面显示
    • 添加示例
    • 问题:Cannot run compiler 'cl'. Maybe you forgot to setup the environment?

Qt 多语言切换——Qt语言家

1.修改程序文件

1.1在pro文件中加入说明

TRANSLATIONS = lang_English.ts \
               lang_Chinses.ts

  在pri文件中,加入说明,其中“lang_English.ts”与“llang_Chinses.ts”为设置语言文件的名称,这里使用中文与英语两种语言,当你需要其他更多的语言时,添加多个语言文档即可。

1.2语言文字在程序中说明

  为了Qt识别你在程序中需要语言准换的文字,需要将需要转换的文字使用QObject::tr(“…”) 进行标记,否则程序中并不能对其进行识别。例如:

 label->setText(tr( "Hello World"));

  而在ui窗口直接进行添加一些插件中的语言,一般默认可以识别进行翻译的。如果我们想将其关掉,可以选择插件的属性,将toolTip中“可翻译的”直接取消勾选即可。
  

Qt 多语言切换——Qt语言家_第1张图片
  

2.生成ts文件

Qt 多语言切换——Qt语言家_第2张图片
在Qt的菜单栏之中选择:工具->外部->Qt预言家->更新翻译(lupdate)。
生成ts文件

2.修改ts文件

![这里写图片描述](https://img-blog.csdn.net/20180309145352159?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzU0NTE1NzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) —-   利用Qt中自带的Linguist打开刚刚生成的st文件,根据相应的语言,进行语言转换。   
![这里写图片描述](https://img-blog.csdn.net/20180309152843220?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzU0NTE1NzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

3. 生成qm文件

ts文件翻译结束以后,点击保存,然后在Qt Creator中,使用:工具->外部->Qt预言家->部署翻译(lrelease),就会生成需要的qm文件。
  

Qt 多语言切换——Qt语言家_第3张图片

4. 加载qm语言包

将生成的qm文件移动到发布版本中的相应位置,然后在程序中加载。

void MainWindow::changeTr(int language_label)
{
    QString qmFilename;
    static QTranslator* translator;
    if (translator != NULL)
    {
        qApp->removeTranslator(translator);
        delete translator;
        translator = NULL;
    }
    translator = new QTranslator;

    QString runPath = QCoreApplication::applicationDirPath();       //获取文件运行路径

    if(language_label==1)
    {
        qmFilename = runPath + "/lang_Chinese.qm";
    }
    else
    {
        qmFilename = runPath + "/lang_English.qm";
    }
    if (translator->load(qmFilename))
    {
        qApp->installTranslator(translator);
    }
        ui->retranslateUi(this);             // 重新设置界面显示
}

5. 重新设置界面显示

当实现“qApp->installTranslator(translator)”以后,还应该将显示界面重新显示一次进行更新。主界面可以直接借助步骤4中ui->retranslateUi(this)进行重新设置界面显示,但是这个只能更新当前页面,其余页面并不能直接显示出来。需要按照以下格式将每一个需要显示的页面添加相应的程序。

添加示例

dialogdebug.h添加

    void changeEvent(QEvent *e);

dialogdebug.cpp

void Dialogdebug::changeEvent(QEvent *e)
{
    QDialog::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

问题:Cannot run compiler 'cl'. Maybe you forgot to setup the environment?

如果运行的时候提示上边的错误,则说明是没有设置编译器的环境变量,我使用的是VS2017,就以VS2017为例进行设置。
首先进入VS2017安装目录找到cls.exe的目录,一般是”..\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx64\x64”。
然后右击我的电脑属性,按照下图的顺序进行设置,将VS2017目录添加进去即可。
Qt 多语言切换——Qt语言家_第4张图片

你可能感兴趣的:(Qt/PyQt)