Qt多国语言(国际化)问题小结

whhqget 2011-08-01 10:59:13
作者:嵌入式学院武汉华嵌中心 讲师 李家凯



引言:目前,Qt作为图形开发软件使用的人群越来越多,很多公司的产品有多国语言支持的需求,笔者就教学与项目开发中的经历,小结了Qt多国语言(国际化)问题,仅供参考。



假设我们已经建好一个工程,且可以运行出基本的界面。

1、打开项目工程文件QTDemo.pro,添加如下语句:

TRANSLATIONS += en.ts zh_CN.ts zh_TW.ts



2、然后在命令行窗口中输入以下命令:

lupdate QTDemo.pro

这样就生成了3个语言文件:en.ts,zh_CN.ts,zh_TW.ts



3、用linguist(在QT安装目录下的bin目录中)打开zh_CN.ts(简体中文),选择“编辑”->“翻译文件设置…”,选择Chinese/China:选中某一个字符串,在译文文本框

中输入对应于中文的字符串:

同理,进行zh_TW.ts(繁体中文)文件的翻译,en.ts(英文)文件不用翻译。



4、用 lrelease QTDemo.pro 将对应的.ts文件生成.qm文件,.qm文件比较紧凑、体积小。

5、在程序中添加对国际化的支持,将main.cpp修改为如下内容:

#include <QApplication>

#include <QTranslator>

#include "QtDemo.h"

int main(int argc, char **argv)

{

QApplication app(argc, argv);



//以下3句话是装载的程序

QTranslator translator;

translator.load(QString(argv[1]));

app.installTranslator(&translator);



QtDemo *dlg = new QtDemo;

dlg->show();

return app.exec();

}



重新执行make命令,生成可执行程序。

在运行程序时通过传递命令行参数指定所使用的语言,注意不需要指定扩展名.qm,例如:

./QTDemo zh_CN 就出现中文的界面了,其他的依次类推。
更多技术文章敬请关注:武汉华嵌-嵌入式培训专家,国内领先的嵌入式服务机构,
http://www.embedhq.org
...全文
867 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
一去丶二三里 2013-10-15
  • 打赏
  • 举报
回复
源码地址:http://download.csdn.net/detail/u011012932/5995043
Inhibitory 2013-10-13
  • 打赏
  • 举报
回复
清晰明了,不错的教程。
dongfangyijing2013 2013-10-13
  • 打赏
  • 举报
回复
不错,谢谢分享
whhqhot 2013-10-06
  • 打赏
  • 举报
回复
wuhanlive 2013-08-12
  • 打赏
  • 举报
回复
基于 QT 和 mplayer 的 MP4播放器设计 http://www.embedhq.org/html/jsbw/2011/0826/3245.html
sdhwo 2013-06-22
  • 打赏
  • 举报
回复
比较的急切呢
sdhwo 2013-06-22
  • 打赏
  • 举报
回复
你好,看代码如下:sound sound_array[MAX_SOUNDS]= { {0,QT_TR_NOOP("Grand Piano 1")}, {1,"Grand Piano 2"},   };   定义如下:   struct sound { int id; QString name;   }; 这个是我写的程序,我想用Qt linguist把字符串数组中的字符提取出来进行汉化 但是使用lupdate XXX.pro 后老是提示tr() cannot be called without context这个问题,我在mainwindow.cpp文件中使这样调用这个字符串数组的QString text = QString::number(sound_temp.id+1).sprintf("%03d",sound_temp.id+1)+ sound_temp.name; button_container_sound_left_and_right. get_button_by_index(i)->setText(tr(text.toLatin1())); 请问这个问题如何解决呢 实在是不懂。请问这个问题怎么解决呢
ggkuroky 2012-10-20
  • 打赏
  • 举报
回复
请问动态翻译如何实现呀?
GANZHIABC 2011-08-19
  • 打赏
  • 举报
回复
你好,我是在ubuntu下执行的此操作,但是在译文文本框中根本就不能输入中文.....

这该怎么办呀?
dxms8 2011-08-03
  • 打赏
  • 举报
回复
mark
开始领悟 2011-08-03
  • 打赏
  • 举报
回复
谢谢分享

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧