当前位置: 首页 > news >正文

建设网站类的论文中国建设银行手机银行下载官方网站

建设网站类的论文,中国建设银行手机银行下载官方网站,磁力天堂最新版地址,不到网站是为什么引入 在代码里面写中文就很low#xff0c;运行时多语言切换是客户端程序都应该具备的。 qt国际化其实就是qt中字符串的字符集编码的设置。当然这个设置不是简单的选择一下什么语言就好#xff0c;这个需要编程人员来处理的。 通常对于非拉丁字符(主要指​​latin1​​​字符…引入 在代码里面写中文就很low运行时多语言切换是客户端程序都应该具备的。 qt国际化其实就是qt中字符串的字符集编码的设置。当然这个设置不是简单的选择一下什么语言就好这个需要编程人员来处理的。 通常对于非拉丁字符(主要指​​latin1​​​字符集)的字符串就需要使用到​​unicode​​​字符集而通常使用​​UTF-8​​​编码。如果只是本地使用一下直接使用​​​​包含文件就可以了。但是有时候设计到网络传输等情况就要考虑这些了。 QT提供了​​QTextCodec​​类来进行文本字符集的转换操作。 本文的重点不在于此。深入学习可以看 ​ QTextCodec 字符编码​​ ​ ​Qt 编码问题QTextCodec​​ 本文的重点在于QT界面显示的中文化。 1、控制需要翻译的文本 在编写QT程序的时候对于要翻译的文本应当使用​​tr()​​包含起来。 我们先来看看​​tr​​函数的原型注意这是一个静态函数。 QString QObject::tr(const char * sourceText, const char * disambiguation 0, int n -1)因为Qt中的类都继承自​​QObject​​​类所以这里直接使用了​​tr​​​如果不是在继承自QT的类中使用应该用​​Object::tr(…)​​来调用。 这还不是很准确在宏定义​​Q_OBJECT​​​展开后会创建一个​​QMetaObject​​​对象即​​static const QMetaObject staticMetaObject;​​这个可以看看源码 对于Q_OBJECT的解析可以看Qt信号与槽机制的基石-MOC详解 #define Q_OBJECT \public: \Q_OBJECT_CHECK \static const QMetaObject staticMetaObject;\Q_OBJECT_GETSTATICMETAOBJECT \virtual const QMetaObject *metaObject() const; \virtual void *qt_metacast(const char *); \QT_TR_FUNCTIONS \virtual int qt_metacall(QMetaObject::Call,int, void **); \private:展开一个宏定义​​QT_TR_FUNCTIONS​​​而这里面定义了一个内联的​​tr​​​函数。可以看出这里实际是使用了一个静态对象​​staticMetaObject​​​的成员函数​​tr​​。 # define QT_TR_FUNCTIONS \static inline QString tr(const char *s, const char *c 0) \{ return staticMetaObject.tr(s, c); } \static inline QString trUtf8(const char *s,const char *c 0) \{ return staticMetaObject.trUtf8(s, c); } \static inline QString tr(const char *s,const char *c, int n) \{ return staticMetaObject.tr(s, c, n); } \static inline QString trUtf8(const char *s,const char *c, int n) \{ return staticMetaObject.trUtf8(s, c, n); }例如对于一个​​QLabel​​​控件将其显示的文本使用​​tr​​括起来。tr是经过多级函数调用才实现了翻译操作是有代价的所以不该用的时候最好不要用。 QLable *label new QLable(tr(hello),this);这次还是以一个​​hello world​​为例。 先看hello.h #ifndef WIDGET_H #define WIDGET_H #include QWidgetclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent 0);~Widget(); public slots:void btn_click(); };#endif // WIDGET_H再看hello.cpp #include widget.h #include QPushButton #include QMessageBoxWidget::Widget(QWidget *parent): QWidget(parent) {//创建一个PushButtonQPushButton * btn new QPushButton(tr(click me),this);//连接信号和槽connect(btn,SIGNAL(clicked()),this,SLOT(btn_click())); }Widget::~Widget() { }void Widget::btn_click() {QMessageBox::information(NULL, tr(click button),tr(hello world), QMessageBox::Yes); }2、lupdate更新翻译 在上面源文件中的相关字符串已经使用​​tr​​​函数包装起来了。现在要做的就是更新这些要翻译的字符串到​​ts​​​文件。 ​​lupdate​​​就是用于扫描​​pro​​​文件中指定的代码或UI文件中被​​tr​​包装起来的文本的工具 lupdate的使用 ​​lupdate​​的使用可以使用​​lupdate --help​​来查看。 粗略的说一下这个工具的用法 使用方法: lupdate [选项] [项目文件]… lupdate [选项] [源文件 | 路径 | lst 文件]…-ts ts 文件 | lst 文件 lst文件是一个文本文件保存一些文件名称一行一个 常用选项说明-ts …指定输出文件。-codecfortr指定为 tr() 调用假设的编解码器。只有与-ts 有效。-extensions [,]…扩展支持的文件后缀。扩展名列表必须用逗号分隔。默认值:‘java,jui,ui,c,c,cc,cpp,cxx,ch,h,h,hh,hpp,hxx,js,qs,qml’。-no-recursive指定不递归扫描的目录-recursive递归扫描指定目录-I or -I附加的包含文件目录-no-ui-lines对ui文件的扫描不保留行号-pro.Pro 文件的名称。对于具有.pro 文件语法但不同的文件后缀的文件非常有用。-source-language [_]指定新文件的源字符串的语言。默认值Posix 标准。-target-language [_]指定新文件翻译的语言。如果未指定则猜测系统语言。lst-file从 lst 文件读取附加文件的名称 (每行一个)。 生成ts文件 1. 在命令行中指定方式生成 这里只生成一个翻译文件​​zh_hans.ts​​​其实可以跟多个文件名来生成多个用于翻译的​​ts​​​文件。这个方式会忽略掉​​pro​​文件中指定要生成的翻译文件。 oo-pc:~/hello$ lupdate hello.pro -ts zh_hans.ts Updating zh_hans.ts...Found 3 source text(s) (3 new and 0 already existing)2. 在​​pro​​文件中指定 这里我们先修改一个​​hello.pro​​文件。 这是原本的​​hello.pro​​文件 QT core gui TARGET hello TEMPLATE app SOURCES main.cpp\hello.cpp HEADERS hello.h LIBS -lxcb现在我们添加一句 TRANSLATIONS zh_hans.ts添加之后使用​​lupdate​​​来生成​​zh_hans.ts​​文件 oo-pc:~/hello$ lupdate hello.pro3. linguits翻译文本 生成了​​ts​​​文件后就要进行翻译了。​​ts​​​文件实际上是类似于​​xml​​文件的我们可以直接打开它来翻译。 直接翻译 打开ts文件我们只需要在​​​​和​​​​之间填写我们翻译后的文件即可。 例如我们将​click me​翻译为点击我。则修改为 messagelocation filenamewidget.cpp line9/sourceclick me/sourcetranslation typeunfinished点击我/translation /message如果你认为翻译合格了没有问题了可以将​​translation type“unfinished”​​​中的​​typeunfinished​​删除。 使用linguits工具翻译 1、点击菜单栏 文件 -- 打开 弹出文件选择对话框后选择生成的ts文件 2、设置源语言和目标语言然而并没什么用 1、选择要翻译的短语 2、填写翻译的文本 3、翻译完成后记得保存 4. lrelease发布翻译 所谓发布翻译就是使用​​lrelease​​工具将​​ts​​文件转换输出不包含多余信息的​​qm​​文件qm文件是二进制文件非文本文件。 我们先来看看翻译后的​​ts​​文件。 ?xml version1.0 encodingutf-8? !DOCTYPE TS TS version2.1 languagezh_CN contextnameWidget/namemessagelocation filenamewidget.cpp line9/sourceclick me/sourcetranslation点击我^_^/translation/messagemessagelocation filenamewidget.cpp line20/sourceclick button/sourcetranslation单击按钮/translation/messagemessagelocation filenamewidget.cpp line21/sourcehello world/sourcetranslation你好 世界/translation/message /context /TS使用​​lrelease​​​生成​​qm​​文件 oo-pc:~/hello$ lrelease zh_hans.ts -qm zh_hans.qm​​lrelease​​使用简要说明 使用方法: lrelease [选项] 项目文件 lrelease [选项] ts 文件 [-qm qm 文件] 选项说明-idbased使用 Id 而不是源字符串作为消息的键-compressQM 文件压缩-nounfinished不使用未完成的翻译-removeidentical如果源文本与翻译后的文本相同不使用这个-markuntranslated如果消息有没有真正的翻译使用源文本和 5. 在程序中使用翻译文件 在QT程序中要使用翻译文件需要使用到类​​QTranslation​​​。现在来修改​​main.cpp​​. #include widget.h #include QApplication #include QTranslatorint main(int argc, char *argv[]) {QApplication a(argc, argv);QTranslator tsor; //创建翻译器tsor.load(zh_hans.qm); //加载语言包a.installTranslator(tsor); //安装翻译器Widget w;w.show();return a.exec(); }参考 QT国际化(lupdate/linguits/lrelease)
http://www.dnsts.com.cn/news/35283.html

相关文章:

  • 梅州建设工程交易中心网站外网访问内网wordpress
  • 大连做网站o2o服务平台
  • 匿名ip访问网站受限怎么在本地搭建网站
  • 域名注册空间网站国家电网公司人力资源招聘平台
  • 爬虫 做资讯网站cms内容网站管理系统
  • 游戏网站建设成功案例四川住房与城乡建设厅网站
  • 网站关键词优化代码团队建设网站介绍
  • 手机网站制作价格潍坊网站制作套餐
  • 闵行网站搭建哪里有建自己的网站用多少钱
  • net网站建设语言建筑服务网站企业
  • 临潼网站建设个体工商注册查询平台
  • 做网站的技术路线十三五专业建设规划
  • 网站建设百度推广说词2手房产App网站开发
  • 网站有竞价的统计怎么加百度统计正能量网站地址链接免费
  • 漯河网站建设e如何建设网站公司
  • 教你如何建设一个模板网站网站建设费进什么科目
  • 网站更改了资料 百度什么时侯来抓取wordpress 标签列表
  • 做资源分享网站怎么样新建的网站百度搜索不到
  • 重庆造价工程建设信息网站中国菲律宾概念股
  • 宿迁网站建设价格低互动营销用在哪些推广上面
  • 商城网站开发的完整流程网站建设的工具
  • 功能型类的网站百度小说风云榜排名完结
  • 车牌照损坏在网站做的能用吗搜索引擎优化的名词解释
  • 山东省专业群建设网站长宁区网站建设网页制
  • 高端品牌网站建设兴田德润可信赖校园网站建设计划
  • wordpress植物网站泰安集团网站建设方案
  • 做seo网站优化哪家强校园加盟网站建设
  • 在线 建站单页面网站带后台wordpress好用吗
  • 做公司网站联系公司嘉兴网站制作哪里好
  • 经典网站模板滕州外贸软件公司