关闭

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

1385人阅读 评论(1) 收藏 举报
分类:

新建一个Qt Widgets Application的工程,

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

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


大致步骤:

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

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

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

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

TRANSLATIONS += qzher_en.ts

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

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

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

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

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

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

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

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

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

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

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

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

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

核心代码:

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

 

#include <QApplication>

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 <QDesktopServices>

#include <QUrl>

void MainWindow::onOpenLink()

{

    QDesktopServices server;

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

}

 

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

注: 本文所采用诗词翻译来源于 诗词名句网 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

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9162次
    • 积分:262
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:2篇
    • 译文:0篇
    • 评论:3条
    文章分类
    文章存档