Qt多国语言国际化

Qt自己提供了一种国际化的方案,而不是採用INI配置文件的方式。

使用QString。QTranslator等类和tr()函数可以非常方便的完毕增加国际化的支持。

(1)使用QString对象表示全部用户可见的文本,QString採用的是内部Unicode编码实现。
(2)使用tr()函数获取全部须要翻译的文本。
(3)使用QString::arg()组织动态文本。

eg:QString str = tr("Mission status: %1 of %2 are completed".arg(x).arg(y));

(4)使用QTranslator::load()和QCoreApplication::installTranslator()读取相应的翻译后的资源文件。并安装QTranslator对象。
详细操作例如以下:
第一步
在你的pro里面增加 TRANSLATIONS = xx.ts

第二步
用lupdate 操作pro 将要翻译的提取到ts文件。命令是 lupdate xx.pro

第三步
用 linguist 打开刚才的ts文件,linugist是在qt的bin的文件夹里面, 是一个界面工具 打开linguist 后用菜单条file ->open 打开 对应的ts文件 如刚才myexec_zh.ts 打开后你会看到左边是对应的类 右边的上半部 是对应的类里面tr 里面的内容 所以在程序里面 tr里面的都是e文 到这里就用上了下半部是你要翻译的语言的对应的东西,就是你输入中文的地方 要注意的就是 那些标点符号 不妨用e文输入状态的如save as.... 就应该是 另存为.... 而不是 另存为。。

。。

注意后面的标点的区别,当中绿色的表示翻译好了,叹号的表示没有翻译对,交叉的表示没有翻译 第四步 先用 linguist 菜单保存你翻译好的ts文件,接着用linguist界面工具里面菜单file里面的release...,点击这个就会弹出对话框 提示你输入 qm文件的文件名称。用默认的就能够了。按确定后你会在ts文件所在的文件夹看到一个qm后缀名的个文件,这就程序翻译器要用到的文件。 第五步。在你的程序里面使用刚才得到的qm文件,方法例如以下: int main(int argc,char **argv) { QApplication app(argc,argv); QTranslator qtTranslator(0); qtTranslator.load("test.qm", "."); //和名字对应 app.installTranslator(&qtTranslator); Window window; window.setFont(QFont("unifont", 16)); //设置字体 window.setMaximumSize(0, 0); window.showMinimized(); return app.exec(); } 注意要在界面的前面安装翻译器。

 
对于须要动态改变语言的,假设已经安装了第一步
在你的pro里面增加 TRANSLATIONS = xx.ts

第二步
用lupdate 操作pro 将要翻译的提取到ts文件 命令是 lupdate xx.pro

第三步
用 linguist 打开刚才的ts文件,linugist是在qt的bin的文件夹里面, 是一个界面工具 打开linguist 后用菜单条file ->open 打开 对应的ts文件 如刚才myexec_zh.ts 打开后你会看到左边是对应的类 右边的上半部 是对应的类里面tr 里面的内容 所以在程序里面 tr里面的都是e文 到这里就用上了下半部是你要翻译的语言的对应的东西。就是你输入中文的地方 要注意的就是 那些标点符号 不妨用e文输入状态的如save as.... 就应该是 另存为.... 而不是 另存为。。。。注意后面的标点的区别,当中绿色的表示翻译好了。叹号的表示没有翻译对,交叉的表示没有翻译

第四步
先用 linguist 菜单保存你翻译好的ts文件。接着用linguist界面工具里面菜单file里面的release...,点击这个就会弹出对话框 提示你输入 qm文件的文件名称,用默认的就能够了。

按确定后你会在ts文件所在的文件夹看到一个qm后缀名的个文件。这就程序翻译器要用到的文件。 第五步。在你的程序里面使用刚才得到的qm文件 方法例如以下 int main(int argc,char **argv) { QApplication app(argc,argv); QTranslator qtTranslator(0); qtTranslator.load("test.qm", "."); //和名字对应 app.installTranslator(&qtTranslator); Window window; window.setFont(QFont("unifont", 16)); //设置字体 window.setMaximumSize(0, 0); window.showMinimized(); return app.exec(); } 注意一定要在安装界面前安装翻译器。

 
对于须要动态改变语言的情况。能够定义一个static的QTranslator对象以方便移除和又一次安装。

借鉴代码例如以下:

void LangSwitch::changeTr(const QString& langCode) {     static QTranslator* translator;     if (translator != NULL)     {         qApp->removeTranslator(translator);         delete translator;         translator = NULL;     }     translator = new QTranslator;     QString qmFilename = "lang_" + langCode;     if (translator->load(QString("D:/QtPro/CH14/CH1402/LangSwitch/")+qmFilename))     {         qApp->installTranslator(translator);     } }
posted on 2017-07-16 21:59  ljbguanli  阅读(225)  评论(0编辑  收藏  举报