cd c:\temp;mkdir testi18n
cd testi18n
2.新建最简单cpp
i18n.cpp
#include <QApplication>
#include <QLabel>
#include <QTranslator>
#include <QDebug>
#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();
}
{
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
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>
<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)
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中