您的位置:首页 > 编程语言 > Qt开发

Qt 翻译 多国语言 本地化。。。Step by Step

2015-01-29 01:40 513 查看
国际化!!!!!

创建一个空白的Qt工程

添加一个main.cpp

#include <QApplication>

#include <QPushButton>

#include <QLayout>

#include <QTranslator>

int main(int argc, char *argv[])

{

QApplication a(argc, argv)

QWidget* pWnd = new QWidget();

QPushButton* pBtn = new QPushButton(QPushButton::tr("Test Translate"))

QVBoxLayout* pVlayout = new QVBoxLayout();

pVlayout->addWidget(pBtn)

pWnd->setLayout(pVlayout);

pWnd->show();

return a.exec();

}

即可运行起来。。。。 此工程中,只有按钮上有文字。。。运行如下图示:



在工程中加入: TRANSLATIONS += testTrans_en.ts (ts文字名可随意取)

然后执行: Tools -> External -> Linguist -> Update Translations(lupdate)



提示完成: /usr/local/Qt5.4.0/5.4/gcc_64/bin/lupdate" finished

在工程中,可以发现多了一个 testTrans_en.ts 文件,此文件可用文本编辑器打开进行查看,如:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE TS>

<TS version="2.1" language="en_US">

<context>

<name>QPushButton</name>

<message>

<location filename="main.cpp" line="13"/>

<source>Test Translate</source>

<translation type="unfinished"></translation>

</message>

</context>

</TS>

此步骤是将工程中的文字(加tr等包含的文字)进行提取到ts文件中

接下来,在终端运行 x@x:~$ linguist 打开 Qt Linguist 翻译工具,对文字进行逐个翻译并保存



在工程中再执行: Tools -> External -> Linguist -> Release Translations(lrelease)

结果提示:/usr/local/Qt5.4.0/5.4/gcc_64/bin/lrelease" finished

在工程中,可以发现多了一个 testTrans_en.qm文件,此文件为二进制格式文件,即我们最终使用的翻译文件

然后添加Qt资源,将testTrans_en.qm添加进来



修改main.cpp文件,将翻译文件添加进来,最终执行

#include <QApplication>

#include <QPushButton>

#include <QLayout>

#include <QTranslator>

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QTranslator qtTranslator;

qtTranslator.load(":/translate/testTrans_en.qm")

a.installTranslator(&qtTranslator);

QWidget* pWnd = new QWidget();

QPushButton* pBtn = new QPushButton(QPushButton::tr("Test Translate"))

QVBoxLayout* pVlayout = new QVBoxLayout();

pVlayout->addWidget(pBtn)

pWnd->setLayout(pVlayout);

pWnd->show()

return a.exec()

}

最终执行结果:



工程下载:

我的资源中:

Qt5翻译基础工程-Translate.tar.gz Qt5 多国语言 C++ Ubuntu 14.04 Qt5

http://download.csdn.net/detail/yulinxx/8405723
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: