Qt实现多国语言(即界面翻译)可实时进行切换

新建一个Qt Widgets Application的工程,

然后在UI界面上放置QLabel以及一个按钮

最终要实现点击按钮,实现QLabel上的文字进行中英切换


大致步骤:

1.由界面的UI信息,生成ts文件

2.由ts文件,翻译后,生成qm文件

3.通过代码调用qm文件,进行语言切换

Qt实现多国语言(即界面翻译)可实时进行切换_第1张图片

然后,在工程的pro文件下添加:

TRANSLATIONS += qzher_en.ts

再在QtCreate菜单中,如下,选择Update Translations,就会生成一个 qzher_en.ts (此文件在工程目录下,即和main.cpp同级)

Qt实现多国语言(即界面翻译)可实时进行切换_第2张图片

我们可以用记事本打开此ts文件,内容大致如下:

它主要是一个xml文件,里面包含了UI所有的文字信息

Qt实现多国语言(即界面翻译)可实时进行切换_第3张图片

下一步,则需要将此文字信息进行对应地进行翻译

Linux下,则打开安装目录下的: linguist

Qt实现多国语言(即界面翻译)可实时进行切换_第4张图片

Windows则在开始菜单中可以找到:

Qt实现多国语言(即界面翻译)可实时进行切换_第5张图片

在打开的Liguist,把上一步生成的qzher_en.ts打开,选择Source text 进行逐个翻译

翻译完后,将 qzher_en.ts 进行保存

Qt实现多国语言(即界面翻译)可实时进行切换_第6张图片

然后再回到QtCreate中,点击Release Translations

通过此步,可以实现qzher_en.ts 生成一个对应的 qzher_en.qm

此 qm 文件,即最终需要的,它为一个二进制文件,包含需要的多国语言翻译信息

Qt实现多国语言(即界面翻译)可实时进行切换_第7张图片

有了翻译信息后,再进行软件的翻译处理。

在此,通过一个按钮点击进行实时切换:

核心代码:

通过一个变量控制中英文来回切换,并能通过一个按钮打开翻译网站

 

#include 

void MainWindow::onTranslation()

{

    if(!m_bTranslator)

    {

        //  翻译文件

        m_qtTranslator.load(":/qzher_en.qm");

        qApp->installTranslator(&m_qtTranslator);

        ui->retranslateUi(this);

    }

    else

    {

        qApp->removeTranslator(&m_qtTranslator);

        ui->retranslateUi(this);

    }

    m_bTranslator = !m_bTranslator;

}

 

 

#include 

#include 

void MainWindow::onOpenLink()

{

    QDesktopServices server;

    server.openUrl(QUrl("http://www.shicimingju.com/chaxun/list/25681.html"));

}

 

Qt实现多国语言(即界面翻译)可实时进行切换_第8张图片

Qt实现多国语言(即界面翻译)可实时进行切换_第9张图片

只进行了诗词的翻译,按钮的文字未进行翻译,所以按钮一直没变,当然,按钮也可以进行翻译,内容和诗词一样

注: 本文所采用诗词翻译来源于 诗词名句网 http://www.shicimingju.com/chaxun/list/25681.html

源码下载:http://download.csdn.net/detail/sinat_35523212/9603246



原文:http://qzher.com/?p=589


青哲科技 致力于良心IT教育 

深圳QQ群: 3260 23167

你可能感兴趣的:(qt)