Qt 添加翻译文件,实现中英文界面切换
2017-11-10 09:30
633 查看
一、编程环境
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
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实现多国语言(即界面翻译)可实时进行切换
- JS+XMLDOM+XSL:实现中英文界面切换、排序、分页显示、增删改查XML文件数据源
- Qt实现多国语言(即界面翻译)可实时进行切换
- Qt翻译文件结合VS实现语言切换(多语言国际化)
- JS+XMLDOM+XSL:实现中英文界面切换、排序、分页显示、增删改查XML文件数据源
- Qt 界面上控制中英文显示切换
- QT5 添加多个qm翻译文件
- Qt4.5多国语界面动态切换的实现(转载)
- fragment中添加ViewPager实现界面切换,动态添加radiobutton
- Android实现Activity界面切换添加动画特效的方法
- Qt系统对话框中文化及应用程序实现重启及使用QSS样式表文件及使用程序启动界面
- wince实现应用程序界面中英文切换(EVC4.0)
- VC++ 通过INI配置文件,实现多国语言切换界面
- Fragment 实现tab页卡切换并保存界面状态,动态添加Fragment
- 实现 Eclipse 中英文界面快速切换
- Activity实现欢迎界面并添加动画切换效果
- Qt添加界面文件的背景图片
- Qt系统对话框中文化及应用程序实现重启及使用QSS样式表文件及使用程序启动界面
- Qt 国际化之二:多国语界面动态切换的实现