星期四, 四月 02, 2015

QT 5 i18n sample(or example ) step by step

1.新建一个目录 
  cd c:\temp;mkdir testi18n
cd testi18n

2.新建最简单cpp
 i18n.cpp
#include <QApplication>
#include <QLabel>
#include <QTranslator>
#include <QDebug>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);

    // translation file for application strings
    QTranslator translator;
   bool result= translator.load("superapp_zh_CN",":/i18n"); //这里的:/i18n 可以参考后面的 i18n.qrc 中的prefix中的对应关系
   qDebug()<<"load resource flag:"<<result;
               app.installTranslator(&translator);
                 qDebug()<<QLocale::system().name();
QLabel * label = new QLabel(QObject::tr("Hello"));//应该根据语言切换
           qDebug()<<QObject::tr("Hello"); //应该根据语言切换
label->show();
app.exec();
}
3.创建项目文件
 qmake -project //建立testi18n.pro文件
4.编辑项目文件,加入i18n 字典说明
    在testi18n.pro中加入英文和中文两个数据字典文件:
TRANSLATIONS    = superapp_en_US.ts \
                     superapp_zh_CN.ts 
5.创建资源文件
 lupdate testi18n.pro //第3步建立
  C:\temp\qt\testi18n>lupdate testi18n.pro
Updating 'superapp_en_US.ts'...
    Found 1 source text(s) (0 new and 1 already existing)
Updating 'superapp_zh_CN.ts'...
    Found 1 source text(s) (0 new and 1 already existing)

6.使用linguist来编辑翻译字典
    注意打开打开翻译翻译必须确认,也就是蓝色的对号,然后保存,如果不保存,最后生成字典二进制资源文件的时候,将不会被编译,
    直接打开.ts文件可以看到,没有点对号确认的字典项目对应 一个type="unfinished",只有确认了之后,才变成标准的
<translation type="unfinished">你好世界</translation>
 linguist里 确认后变成:
        <translation>你好世界</translation>
7.编译生成二进制字典文件
 lrelease testi18n.pro
C:\temp\qt\testi18n>lrelease testi18n.pro
Updating 'C:/temp/qt/testi18n/superapp_en_US.qm'...
    Generated 1 translation(s) (1 finished and 0 unfinished)
Updating 'C:/temp/qt/testi18n/superapp_zh_CN.qm'...
    Generated 1 translation(s) (1 finished and 0 unfinished)

8.建立资源文件i18n.qrc
  <RCC>
<qresource prefix="/i18n" > //注意prefix 是用来标明在最终二进制文件中资源文件的引用目录,可以是唯一的任意字符串
<file>superapp_en_US.qm</file>
<file>superapp_zh_CN.qm</file>
</qresource>
</RCC>
9.将资源文件加入项目文件testi18n.pro中
RESOURCES +=i18n.qrc

10.生成Makefile文件
   qmake testi18n.pro

11.编译生成.exe文件
   make

12.运行
 release\testi18n.exe