1. 修改工程文件 .pro ,加入翻译源文件 hello_world.ts:

TRANSLATIONS += \
        Resource/translations/hello_world.ts

写代码时需要注意下面两点:  
2. 源码用 utf-8 字符集
3. 源码中需要翻译的字符串必须用英文(不能有中文或其它语言),则需要用 tr()  函数。  
例如:

QMessageBox::information(this,tr("Information"),tr("Hello world."));

4.更新翻译源文件:  
工具-》外部-》qt 语言家-》更新翻译(lupdtae)  
工具 lupdate 自动分析工程文件 .pro ,找到翻译源文件 hello_world.ts ;然后会分析源码中包含在 tr 中的字符串,写入到翻译源文件 hello_world.ts 中。翻译源文件是一个 xml 文件。

<context>
     <name>Hello</name>
     <message>
  <location filename="HelloWorld.ui" line="14"/>
  <source>Frame</source>
  <translation type="unfinished"></translation>
     </message>
 </context>

5、修改翻译源文件 hello_world.ts :  
5.1. 你可以直接编辑翻译源文件进行翻译
5.2. 你也可以用工具 linguist 进行翻译

6. 在代码中加载需要的翻译资源文件  
6.1. 把翻译资源文件放到程序的资源文件中  
把翻译资源文件放到程序的资源文件中后,就会被当做程序的资源编译进程序中。所以访问翻译资源文件的方式与其它资源的访问方式相同。即:“:/translat/hello_world.qm” 。
用“:/”来指定是从资源中加载。
例如:

//本地化程序资源  
 QTranslator myappTranslator;
 //把翻译文件放在了程序资源中  
 myappTranslator.load(":/translations/hello_world.qm");
 qApp->installTranslator(&myappTranslator);

6.2. 从翻译资源文件中直接加载

//本地化程序资源  
 QTranslator myappTranslator;
 //把翻译文件放在了程序资源中  
 myappTranslator.load("C:/translations/hello_world.qm");
 qApp->installTranslator(&myappTranslator);

7. 编译:
工具-》外部-》qt 语言家-》更新翻译(lrelease)  
翻译完翻译源文件后,需要翻译编译工具(lrelease)把翻译源文件编译成翻译资源文件 hello_world.qm 。

8. qt 资源:
qt 翻译资源在安装目录下的 translate 目录下。

9. 在程序中做翻译菜单:
当语言进行切换时,需要调用 ui->retranslateUi(this); 更新主窗口。  
如果非主窗口,则这个函数会触发 void changeEvent(QEvent *e) 事件。 
例如:

void CHelloWorld::changeEvent(QEvent *e)
 {
     LOG_MODEL_DEBUG("MainWindow", "MainWindow::changeEvent.e->type:%d", e->type());
     switch(e->type())
     {
     case QEvent::LanguageChange:
  ui->retranslateUi(this);
  break;
     }
 }

http://blog.csdn.net/kl222/article/details/38681303

qt 国际化(翻译时会触发changeEvent)的更多相关文章

  1. Qt 国际化翻译

    简介 Qt Linguist 提供了一套加速应用程序翻译和国际化的工具.Qt 使用单一的源码树和单一的应用程序二进制包就可同时支持多个语言和书写系统. 使用 QTranslator 来加载生成的 qm ...

  2. Qt国际化(Q_DECLARE_TR_FUNCTIONS() 宏给非Qt类添加翻译支持,以前没见过QTextEncoder和QTextDecoder和QLibraryInfo::location()和QEvent::LanguageChange)

    Internationalization with Qt 应用程序的国际化就是使得程序能在国际间可用而不仅仅是在本国可用的过程. Relevant Qt Classes andAPIs 以下的类支持Q ...

  3. 【Qt】Qt国际化【转】

    简介 Qt国际化属于Qt高级中的一部分,本想着放到后面来说,上节刚好介绍了Qt Linguist,趁热打铁就一起了解下. 对于绝大多数的应用程序,在刚启动时,需要加载默认的语言(或最后一次设置的语言) ...

  4. QT国际化 一 (lupdate/linguits/lrelease)

    QT国际化(lupdate/linguits/lrelease) 本文由乌合之众瞎写http://www.cnblogs.com/oloroso/ qt国际化其实就是qt中字符串的字符集编码的设置.当 ...

  5. Qt国际化详细介绍,中文乱码以及解决方案

    Qt国际化的一般步骤 运行 lupdate,从应用程序的代码中提取所有界面上的可见字符.        这些可见字符必须被 tr() .QCoreApplication::translate().Qt ...

  6. QT国际化(中英转换)

    转载:https://blog.csdn.net/u012528526/article/details/54707233 QT国际化(中英转换) 我们都知道在安卓中,想做国际化很简单,只需要建立对应的 ...

  7. Ios国际化翻译工具

    IOS Translation Tool(IOS国际化翻译工具) 介绍 当IOS项目国际化的时候,手工去翻译每一个字符串是一件非常痛苦的事情.尤其是当项目中存在N多种语言.而且又很难保证,手工翻译的准 ...

  8. 给iview项目加一个i18n国际化翻译

    看了上一篇博客吗?我们就根据那一篇博客来,用里面的项目,进行我们接下来国际化翻译项目. 我们安装vue-i18n和js-cookie npm install vue-i18n npm install ...

  9. QT中QLineEdit的editingFinished()信号在按下回车时会触发两次的解决办法

    class MyLineEdit : public QLineEdit { Q_OBJECT public: MyLineEdit(QWidget * parent = 0) : QLineEdit( ...

随机推荐

  1. css Tab选项卡

    css tab 选项卡据说有2中实现方式 1. target css3 2. 描点 2的 核心原理是利用描点显示问题(描点父级 overflow). <style> body,div,ul ...

  2. You raise me up

    You raise me up, so I can stand on mountains;You raise me up, to walk on stormy seas;I am strong, wh ...

  3. java基础系列——线程池

    一.线程池的创建 我们可以通过ThreadPoolExecutor来创建一个线程池. public ThreadPoolExecutor(int corePoolSize, int maximumPo ...

  4. LitJson解析遇到的坑

    今天在些项目的时候,遇到一个坑,现在跟大家分享一下 我遇到的错误是MissingMethodException: Method not found: 'Default constructor not ...

  5. POSIX扩展正则表达式函数

    1.ereg()函数和eregi()函数 函数语法: bool ereg/eregi ( string pattern, string string [, array regs] ) 函数功能: 在字 ...

  6. 求模和求余(附加C语言实现)

    求模和求余的总体计算步骤如下: 1.求整数商  c = a/b 2.计算模或者余数 r = a - c*b 求模和求余的第一步不同,求余在取c的值时向0方向舍入;取模在计算c的值时向无穷小方向舍入. ...

  7. 转:C++中多态是怎样实现的?

    多态是一种不同的对象以单独的方式作用于相同消息的能力,这个概念是从自然语言中引进的.例如,动词“关闭”应用到不同的事务上其意思是不同的.关门,关闭银行账号或关闭一个程序的窗口都是不同的行为:其实际的意 ...

  8. ComboBox控件绑定数据源

    最近在研究机房收费系统的组合查询的方法时,看到了ComboBox控件可以进行数据绑定,我觉得这个功能真的很不错,可以给我省去很多的麻烦. 下面是我组合查询窗体界面 一.数据转换方法 现在我们开看一下我 ...

  9. BZOJ 1037 [ZJOI2008]生日聚会Party(单调DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1037 [题目大意] 现在有n个男生,m个女生排成一行,要求不存在一个区间男女之差大于k ...

  10. (92) Web Crawling: How can I build a web crawler from scratch? - Quora

    (92) Web Crawling: How can I build a web crawler from scratch? - Quora How can I build a web crawler ...