zoukankan      html  css  js  c++  java
  • VS Qt国际化操作

    开发一个软件的时候有时候会遇到需要进行国际化的操作,也就是说一些显示可能因为需求而要改为另一种语言,像一些常见的软件是会提供一些语言包,然后再软件中加载就可以更换显示语言了,今天这一篇讲的就是这个,而且暂时针对VS下开发Qt而言,如果在Qt Creator上开发的话,可能会有不同,但是大致还是一样的。

    在VS上开发Qt的项目的话是,Qt的VS插件是很有用的,现在我们的国际化操作也是要依赖这一个小插件的,这里以VS2013为例(VS2015基本上是一样的),VS2013安装好Qt的插件之后位于下图的位置:

    待我们写好一个Qt项目之后就可以使用插件生成一个翻译文件。

    简单写一个超级简单的空白界面,我只设置标题,代码如下:

    this->setWindowTitle(tr("bearoom"));

    这里要说明的就是需要翻译的字符串是要用tr()包装起来的,如上面的tr("bearoom"),然后运行一下确认是英文没错吧:

    接下来就要生成一个翻译文件啦,就是直接点第一张图片的插件的选项,然后会弹出一个窗口选择语言和文件名:

    这里我选择中文简体,中国的,确定之后就会在工程下生成这个文件:

    然后在VS打开该文件,一般会默认用Qt的Linguist打开,如下:

    然后就要可以看到我代码里面有哪些字符串被tr()包围着的,然后选择该字符串,并在下方输入中文翻译:

    翻译好了之后我们需要讲文件发布出来,也就是release需要注意这里不是保存,而是release为一个qm文件:

    release之后可以看到工程目录下多了一个qm文件:

    这个不是在VS中,而是在工程的文件夹下的,然后需要翻译的时候就加载这个文件即可,加载的代码如下:

        #include <QTranslator>
        
        int main(int argc, char *argv[])
        {
        	QApplication a(argc, argv);
        
        	QTranslator *tran = new QTranslator;
        	tran->load("qt5_ch01_zh.qm");
        	a.installTranslator(tran);
        
        	qt5_ch01 w;
        	w.show();
        	return a.exec();
        }

    然后运行程序的时候就可以看到标题已经被翻译了

    这里我觉得需要注意的点是写代码的时候一定要用英文来写,包括软件上显示的名称都要用英文来命名比较好,然后需要显示为中文的时候就使用这种方法来实现,如果一开始就用中文的话,要把工程转到Linux下开发的时候就很尴尬了,可能存在编码问题,因为VS一般默认是用GB2312来编码,如果在Linux下用UTF-8的话是可以转的,但是cpp文件或.h文件就是乱码了,反而比较麻烦。

    不恨天涯行役苦,

    只恨西风,吹梦成今古。

    明日客程还几许,

    沾衣况是新寒雨。

    上善若水,为而不争。
  • 相关阅读:
    删除重复数据
    jquery删除文件
    统计目录下文件数及大小
    koa generator
    如何做单测? 单测和开发占比应该是多少?集成测试
    webpack之loader和plugin简介
    服务端渲染
    请求头包含哪些部分
    vue的高阶组件
    amd,cmd规范
  • 原文地址:https://www.cnblogs.com/Bearoom/p/12489395.html
Copyright © 2011-2022 走看看