Qt 添加翻译文件,实现中英文界面切换

一、编程环境

Ubuntu14.02 32位、桌面版Qt4.8.1、嵌入式版Qt4.8.5


二、应用场景:

周立功开发板3352

三、添加qm文件

1、生成ts文件

    打开终端,调用lupdate工具,在工程目录下生成ts文件,命令格式如下

       &DesktopQTDIR/bin/lupdate -codecfortr utf-8 -verbose Portable_Immunoassay.pro -ts trans.ts

   说明:DesktopQTDIR:Qt软件安装路径,本人是安装QtSDK集成环境,默认安装在home路径下(/home/wiz/QtSDK/Desktop/Qt/4.8.1/gcc/bin/lupdate)

       -codecfortr:   设置编码格式   (没设置的话,用linguist打开ts文件时原文、短语表单窗口中显示的是乱码,设置之后原文显示的是中文,短语和表单中还是乱码,查过一些资料,说是需要重新编译生成linguist工具)

               -verbose:用于更新ts文件,当程序或界面发生变化时,需要用到。

       -ts:制定生成ts文件名

2、翻译ts文件

   打开Linguist软件,文件---打开  选择生成ts文件,选择原文语言和译文语言后,为检测到的中文添加译文,翻译完成后保存


 3、生成qm文件

    通过终端调用lrelease工具来生成qm文件,命令格式如下:(当然linguist也可生成,但是生成后的qm文件,移植到开发板上,调用没有效果!!!要命,果断放弃)

       &DesktopQTDIR/bin/lrelease trans.ts -qm qt4_en.qm


 4、将qm文件移植到开发板中

     可以通过U盘或者scp命令进行传送

scp qt4_en.qm root@192.168.15.236:/opt/


四、程序中需要添加翻译文件的调用

    1、在pro工程文件下需要添加一行:TRANSLATIONS    += ./trans.ts

     2、在main.cpp文件添加qm文件调用   (添加系统设置使能,就可以实现中英文界面切换)

    if (getSystemSetting(ENGLISH))
    {
        QTranslator *trans = new QTranslator;
        if(trans->load(a.applicationDirPath()+"/qt4_en.qm"))
        {
            a.installTranslator(trans);
            qDebug()<<"load qm";
        }
    }


至此,就可以实现英文界面和中文界面切换了。以下是本人翻译过程中需要注意的点:

1.程序中所有出现的中文都需要用tr()函数包含起来

2.所有中文都需要进行翻译,不建议空着,因为调用英文界面时没有翻译的也是显示空。

3.用tr()函数有时会用到 arg()  函数,所以中文中含有%n的地方,还是用原有的格式

4.关于\r\n的问题,翻译时会将\r\n 一起翻译,最后会出现不换行的现象,所以建议tr()函数之后,在调用append()函数来补充结尾的  \r\n



参考网址:http://blog.csdn.net/yangxiao_0203/article/details/7488967





Qt 中,可以通过重新加载 `qm` 文件实现中英文切换。`qm` 文件Qt 语言国际化的文件格式,包含了翻译后的字符串和相应的语言信息。 以下是实现中英文切换的步骤: 1. 在项目中添加多语言支持,可以通过 Qt Creator 的 `File -> New File or Project -> Files and Classes -> Qt -> Qt Resource File` 创建一个 `.qrc` 文件,然后在其中添加 `ts` 文件作为翻译文件。可以通过 Qt Linguist 编辑 `ts` 文件,将翻译后的字符串保存到 `qm` 文件中。 2. 在代码中加载 `qm` 文件,可以通过 `QTranslator` 类实现。比如,在 `main()` 函数中加载 `qm` 文件: ``` int main(int argc, char *argv[]) { QApplication a(argc, argv); // 加载默认语言的 qm 文件 QTranslator translator; translator.load(QLocale::system(), "myapp", "_", ":/translations"); a.installTranslator(&translator); // ... } ``` 这里使用了 `QLocale::system()` 来获取当前系统的默认语言,然后通过 `load()` 函数加载相应的 `qm` 文件。`_:translations` 表示 `qm` 文件所在的文件夹。 3. 在界面添加一个按钮或者菜单项,用于触发中英文切换。在按钮的槽函数中,重新加载相应的 `qm` 文件,然后更新界面文本即可。比如: ``` void MainWindow::on_switchLanguage_triggered() { // 加载中文的 qm 文件 QTranslator translator; translator.load("myapp_zh", ":/translations"); qApp->installTranslator(&translator); // 更新界面文本 ui->retranslateUi(this); } ``` 在这个示例代码中,我们在按钮槽函数中加载了中文的 `qm` 文件,并通过 `retranslateUi()` 函数来更新界面文本。需要注意的是,如果此时有打开的对话框,也需要调用对话框的 `retranslateUi()` 函数来更新对话框的文本。 以上就是通过重新加载 `qm` 文件实现中英文切换的方法。需要注意的是,重新加载 `qm` 文件会使程序重新分配内存,可能会导致一定的性能消耗,因此应该根据实际情况进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值