qt-02-国际化软件文本
来源:互联网 发布:java 数组 属于 那个类 编辑:程序博客网 时间:2024/05/16 10:43
以前没怎么研究国际化的问题,因为根本用不到。
目前发现如果软件要跨国使用,确实要考虑的。
基本教程:
0>. 所有代码的字符串都应该使用 tr()或者translate()函数 包裹起来。tr()函数tr()中不要有变量对于变量使用 "%1".arg()方式扩展对于静态字符串:可以使用 x = QT_TR_NOOP("我是字符串")宏标记,然后赋值给 tr(x)translate()函数同样的使用问题对于静态字符串可以使用 QT_TRANSLATE_NOOP包裹禁止 const char* 赋值给 QString在头文件定义宏QT_NO_CAST_FROM_ASCII 即可或者在 .pro文件定义 DEFINES += QT_NO_CAST_FROM_ASCII对于字符串可以用两种方法包裹tr()支持翻译QLantin1String()不支持翻译1>.生成翻译文件给 qtbasic.pro 配置选项:TRANSLATIONS = qtbasic.ts qtbasic_chinese.ts生成文件:lupdate.exe qtbasic.pro然后看到输出文件qtbasic.ts qtbasic_chinese.ts注:默认Qt\4.8.7\translations文件夹下面就有很多 翻译文件2>. 配置翻译内容运行翻译器:linguist.exe 配置翻译内容:每一项配好, 打钩表示OK生成二进制:linguist的 "发布..." 菜单或者运行 lrelease.exe *.ts3>.代码运行set_default_translation("qtbasic_chinese.ts")
QTranslator& get_default_translator(){static QTranslator* appTranslator = 0;if(!appTranslator){appTranslator = new QTranslator();qApp->installTranslator( appTranslator );}return *appTranslator;}bool set_default_translation(const QString& filename){return get_default_translator().load(filename);}
widget中响应事件的代码:
void qtbasic::on_actionEnglish_triggered(){qtutils::set_default_translation("translations/qtbasic.qm");this->retranslateUi(this);}void qtbasic::on_actionChinese_triggered(){qtutils::set_default_translation("translations/qtbasic_chinese.qm");this->retranslateUi(this);}
测试效果:
看来这个效果翻译效果不错
0 0
- qt-02-国际化软件文本
- qt使用QTranslator QObject::tr(“”)软件国际化
- QT实现文本编辑器软件
- qt国际化
- Qt 国际化
- qt国际化
- Qt国际化
- Qt国际化
- QT国际化
- QT国际化
- Qt国际化
- Qt国际化
- QT国际化
- qt国际化
- QT 国际化
- Qt国际化
- qt 国际化
- qt 国际化
- hello
- 【Shell脚本】逐行处理文本文件 && 空格变换行
- Elasticsearch搜索引擎学习记录2-数据同步
- Android 图片单选/多选、拍照、裁剪、压缩。视频选择和录制
- java中的标识符和注释的相关基础
- qt-02-国际化软件文本
- Log4J的简单使用
- Android studio Gradle Error:Configuration with name 'default' not found.
- 获取手机中的视频
- macbook(os系统下)eclipse链接虚拟机上的hadoop,报错java.net.connectionexcpetion
- 蓝牙后台传输数据
- I/O流之打印流
- gulp启本地服务(node启本地服务)
- 干货集中营客户端