欢迎来到天天文库
浏览记录
ID:44252838
大小:429.50 KB
页数:14页
时间:2019-10-20
《Qt基础知识之国际化》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Qt基础知识之国际化范旭龙fanxulong@gmail.com2021/9/81Qt国际化国际化就是使应用程序能够支持不同的国家和语言。QT内置的国际化支持使得程序员只做简单的工作就可以完成国际化过程.2021/9/82显示文本的国际化程序中要显示给用户的文本,一定要让它经过QApplication::translate()函数的处理。通常,只需要调用QObject::tr()函数,如下例所示,假设LoginWidget是QWidget的派生类(当然,同时也是QObject的派生类)LoginWidget::LoginWidget(
2、){QLabel*label=newQLabel(tr("Password:"),this);...}绝大多数的用户可见字符,都要象上面那样写。2021/9/83如果不在QObject/QWidget的派生类中,可以调用某个类的tr()函数,也可以调用直接QApplication::translate()函数,如:voidsome_global_function(LoginWidget*logwid){QLabel*label=newQLabel(LoginWidget::tr("Password:"),logwid);}voidsa
3、me_global_function(LoginWidget*logwid){QLabel*label=newQLabel(qApp->translate("LoginWidget","Password:"),logwid);}2021/9/84使用QString::arg()作参数使用printf()函数向字符串中插入参数的方法在国际化文本中并不适用,因为在不同的语言中,参数的顺序可能并不一样,如:星期一,我要上班,在英语中的习惯表达为:IhavetoworkonMonday,可见星期一对应的Monday由第一个参数变成第二个参数,
4、QString::arg()提供了这种灵活性:voidFileCopier::showProgress(intdone,inttotal,constQString¤t_file){label.setText(tr("%1of%2filescopied.Copying:%3").arg(done).arg(total).arg(current_file));}以上的"%1of%2filescopied.Copying:%3",在翻译成中文时,可以写成"正在拷贝:%3,已完成:%1,总共:%2",可见参数的顺序可以任意
5、调整,而代码不需要改动。2021/9/85生成翻译2021/9/86以$QTDIR/examples/dialog/configdilaog为例:1、在.pro文件中加入两句话TRANSLATIONS=configdialog_zh_CN.ts2021/9/872、使用lupdate生成翻译文件lupdateconfigdialog.pro目录下生成configdialog_zh-CN.ts文件2021/9/88打开翻译器linguist在翻译器中打开.ts文件,开始翻译lreleaseconfigdialog.pro//生成二进制文
6、件*.qm2021/9/892021/9/8102021/9/8112021/9/8122021/9/813ThankYou!2021/9/814
此文档下载收益归作者所有