QT动态切换中英文

本文详细介绍了如何在Qt应用中实现动态语言切换功能,包括*.pro文件的配置、使用tr()输出字符串、利用QT自带工具lupdate和linguist生成ts和qm文件,以及如何将qm文件导入工程并进行语言选择。此外,还提供了关键代码示例,确保了应用在不同语言环境下都能正确显示本地化字符串。
摘要由CSDN通过智能技术生成

参考文章:http://blog.csdn.net/wuff1988/article/details/7093522

                    http://blog.csdn.net/wangxueang224/article/details/7802306

我的demo程序下载:http://download.csdn.net/detail/hailmy/8024907

1. *.pro 文件新增

TRANSLATIONS += trans/zh.ts \
                trans/en.ts

2. 程序使用tr()来输出字符串

3. 使用QT自带工具 lupdate 生成ts文件(例如: lupdate demo.pro) 生成在 ./trans/

4. 使用QT自带工具 linguist 生成qm文件

5. 把生成的qm文件导入到工程里面


贴上切换代码

#define current_language "Chinese"
QTranslator *tor;

tor = new QTranslator();
if (current_language == "Chinese") {
    tor->load(":/trans/zh.qm");
} else if (current_language == "English") {
    tor->load(":/trans/en.qm");
}
qApp->installTranslator(tor);
this->ui->retranslateUi(this);

/*
    语言选择
*/
void MainWindow::on_comboBox_3_activated(int index)
{
    switch (index) {
    case 0:
        QApplication::removeTranslator(tor);
        tor->load(":/trans/zh.qm");
        qApp->installTranslator(tor);
        this->ui->retranslateUi(this);
        ui->comboBox_3->setCurrentIndex(0);
        current_language = "Chinese";
        break;
    case 1:
        QApplication::removeTranslator(tor);
        tor->load(":/trans/en.qm");
        qApp->installTranslator(tor);
        this->ui->retranslateUi(this);
        ui->comboBox_3->setCurrentIndex(1);
        current_language = "English";
        break;
    default:
        QApplication::removeTranslator(tor);
        tor->load(":/trans/zh.qm");
        qApp->installTranslator(tor);
        this->ui->retranslateUi(this);
        ui->comboBox_3->setCurrentIndex(0);
        current_language = "Chinese";
        break;
    }
    set_default_Form_conf();
}


 主要注意的是,动态切换完毕后,需要对lineEdit等控件重新setText下初始值。 


http://blog.csdn.net/yulinxx/article/details/43260203 ------------------------------------------ C++ 国际化!!!!! 创建一个空白的Qt工程 添加一个main.cpp #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv) QWidget* pWnd = new QWidget(); QPushButton* pBtn = new QPushButton(QPushButton::tr("Test Translate")) QVBoxLayout* pVlayout = new QVBoxLayout(); pVlayout->addWidget(pBtn) pWnd->setLayout(pVlayout); pWnd->show(); return a.exec(); } 即可运行起来。。。。 此工程中,只有按钮上有文字。。。运行如下图示: 在工程中加入: TRANSLATIONS += testTrans_en.ts (ts文字名可随意取) 然后执行: Tools -> External -> Linguist -> Update Translations(lupdate) 提示完成: /usr/local/Qt5.4.0/5.4/gcc_64/bin/lupdate" finished 在工程中,可以发现多了一个 testTrans_en.ts 文件,此文件可用文本编辑器打开进行查看,如: QPushButton Test Translate 此步骤是将工程中的文字(加tr等包含的文字)进行提取到ts文件中 接下来,在终端运行 x@x:~$ linguist 打开 Qt Linguist 翻译工具,对文字进行逐个翻译并保存 在工程中再执行: Tools -> External -> Linguist -> Release Translations(lrelease) 结果提示:/usr/local/Qt5.4.0/5.4/gcc_64/bin/lrelease" finished 在工程中,可以发现多了一个 testTrans_en.qm文件,此文件为二进制格式文件,即我们最终使用的翻译文件 然后添加Qt资源,将testTrans_en.qm添加进来 修改main.cpp文件,将翻译文件添加进来,最终执行 #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QTranslator qtTranslator; qtTranslator.load(":/translate/testTrans_en.qm") a.installTranslator(&qtTranslator); QWidget* pWnd = new QWidget(); QPushButton* pBtn = new QPushButton(QPushButton::tr("Test Translate")) QVBoxLayout* pVlayout = new QVBoxLayout(); pVlayout->addWidget(pBtn) pWnd->setLayout(pVlayout); pWnd->show() return a.exec() } 最终执行结果:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值