• 4759阅读
  • 11回复

zhengtianzuo系列-Qml动态语言切换 [复制链接]

上一主题 下一主题
离线zhengtianzuo
 

只看楼主 倒序阅读 楼主  发表于: 2017-11-16
此方法需要在Qt5.10或更高版本实现, 在Qt5.10或更高版本实现, 在Qt5.10或更高版本实现
重要的事情说三遍

首先在工程文件.pro中加入TRANSLATIONS = zh_CN.ts en_US.ts
两个翻译文件, 支持中英文两种语言切换

在工程目录下 cmd 执行

```
lupdate main.qml -ts zh_CN.ts
```

```
lupdate main.qml -ts en_US.ts
```
执行完后在代码目录里就可以看到生成了 zh_CN.ts, en_US.ts 两个翻译文件
接下来用Qt的Linguist分别打开和编辑ts文件



然后点击各个源文中的项, 并在下面的译文中填写与语言对应的文字就行了.
全部填写完成, 再运行菜单 文件->发布就会生成对应的.qm文件. 这个文件就是我们程序在实际运行中需要加载的翻译文件了.

代码中的加载过程:

```
void QmlLanguage::setLanguage(int nLanguage)
{
    QTranslator translator;
    if (nLanguage == 0)
    {
        translator.load(":/en_US.qm");
    }else{
        translator.load(":/zh_CN.qm");
    }
    m_app->installTranslator(&translator);
    m_engine->retranslate();
}
```
重点的是这句 m_engine->retranslate();  Qt5.10的新方法, 使Qml界面全部动态重新翻译




需要完整代码请访问 QtQuickExamples
博客地址: https://blog.csdn.net/zhengtianzuo06
Github: https://github.com/zhengtianzuo
个人产品: https://github.com/zhengtianzuo/Silk
产品网站: http://www.camelstudio.cn
离线zzzzzzhuzhu

只看该作者 1楼 发表于: 2017-11-16
哥哥 5.10怎么下载呢。。
离线zhengtianzuo

只看该作者 2楼 发表于: 2017-11-16
回 zzzzzzhuzhu 的帖子
博客地址: https://blog.csdn.net/zhengtianzuo06
Github: https://github.com/zhengtianzuo
个人产品: https://github.com/zhengtianzuo/Silk
产品网站: http://www.camelstudio.cn
离线zzzzzzhuzhu

只看该作者 3楼 发表于: 2017-11-17
回 zhengtianzuo 的帖子
zhengtianzuo:http://download.qt.io/development_releases/qt/5.10/5.10.0-beta4/single/qt-everywhere-src-5.10.0-beta4.zip (2017-11-16 21:34) 

谢谢
离线zzzzzzhuzhu

只看该作者 4楼 发表于: 2017-11-17
有没有旋转菜单的qml例子呢,动画很好看的那种,像3d的那种
离线zhengtianzuo

只看该作者 5楼 发表于: 2017-11-17
回 zzzzzzhuzhu 的帖子
zzzzzzhuzhu:有没有旋转菜单的qml例子呢,动画很好看的那种,像3d的那种 (2017-11-17 15:11) 

有样例吗? 我可以考虑做一个例子出来~
博客地址: https://blog.csdn.net/zhengtianzuo06
Github: https://github.com/zhengtianzuo
个人产品: https://github.com/zhengtianzuo/Silk
产品网站: http://www.camelstudio.cn
离线九重水

只看该作者 6楼 发表于: 2017-11-17
每次都是一个小功能啊。
可不可以,做一个列表,放在一楼,指明小功能的作用,以及链接;
其它楼放这些小功能,方便大家查找。

例如:
一、动态语言切换,传送门:http://www.qtcn.org/bbs/read-htm-tid-65237.html
二、XXXXXXXXXX,传送门:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
三、……

或者弄个大的程序,
离线zhengtianzuo

只看该作者 7楼 发表于: 2017-11-17
回 九重水 的帖子
九重水:[表情] 每次都是一个小功能啊。
可不可以,做一个列表,放在一楼,指明小功能的作用,以及链接;
其它楼放这些小功能,方便大家查找。
例如:
....... (2017-11-17 16:39) 

好主意~~ Github上readme我就写了列表的啊
博客地址: https://blog.csdn.net/zhengtianzuo06
Github: https://github.com/zhengtianzuo
个人产品: https://github.com/zhengtianzuo/Silk
产品网站: http://www.camelstudio.cn
离线zzzzzzhuzhu

只看该作者 8楼 发表于: 2017-11-20
能不能弄一个3D的汽车仪表盘呢,,,很炫的那种,,
离线zzzzzzhuzhu

只看该作者 9楼 发表于: 2017-11-20
回 zhengtianzuo 的帖子
zhengtianzuo:有样例吗? 我可以考虑做一个例子出来~ (2017-11-17 16:09) 

能不能留个qq啊,我发给你
离线zhengtianzuo

只看该作者 10楼 发表于: 2017-11-20
回 zzzzzzhuzhu 的帖子
zzzzzzhuzhu:能不能留个qq啊,我发给你 (2017-11-20 13:03) 

直接发样例图吧 我看看能不能做
博客地址: https://blog.csdn.net/zhengtianzuo06
Github: https://github.com/zhengtianzuo
个人产品: https://github.com/zhengtianzuo/Silk
产品网站: http://www.camelstudio.cn
离线big_mouse

只看该作者 11楼 发表于: 2020-04-23
快速回复
限100 字节
 
上一个 下一个