QT-Linguist国际化的简单实现
QT-Linguist工具主要用在项目的多语言翻译处理过程中,所有先简单介绍一下整个多语言处理过程,最后介绍Linguist的用法。
QT项目实现多语言,必须做两件事:
1)确保每一个用户可见的字符串都使用了tr()函数
2)在应用程序启动的时候,使用QTranslator载入一个翻译文件(.qm)
(一)编写源码
类SpeedLinguist:
#ifndef SPEEDLINGUIST_H_
#define SPEEDLINGUIST_H_
#include <QtCore/QObject>
#include <QtGui/QWidget>
class SpeedLinguist: public QWidget
{
Q_OBJECT
public:
SpeedLinguist(QObject *parent = 0);
};
#endif
#include "speedlinguist.h"
#include <QtGui/QPushButton>
#include <QtGui/QVBoxLayout>
SpeedLinguist::SpeedLinguist(QObject *parent)
{
QPushButton *pushButton = new QPushButton(tr("lingust default")); //翻译工具linguist的依据tr()函数
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(pushButton);
this->resize(480,240);
this->setLayout(layout);
}
在主函数中,必须载入翻译文件,下面代码中的speedlingiust_zh_cn.qm文件,由linguist工具生成,后面会详细介绍生成过程:
#include "speedlinguist.h"
#include <QtGui/QApplication>
#include <QtCore/QTranslator>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//载入翻译文件
QTranslator translator;
translator.load("speedlingiust_zh_cn.qm"); //语言包文件,由linguist工具生成
app.installTranslator(&translator);
SpeedLinguist speedLinguist;
speedLinguist.show();
return app.exec();
}
编写好代码之后,打开命令行终端,执行命令:
qmake -projecct
生成工程文件tmp.pro,打开tmp.pro文件,添加一行翻译配置:
TRANSLATIONS = speedlinguist_zh_cn.ts speedlinguist_en.ts
如下图所示:
其作用是,指明在项目中生成翻译源文件speedlinguist_zh_cn.ts和speedlinguist_en.ts,两者空格隔开。说明一下,文件后缀ts是英文translation source的简写;名称后缀zh_cn表明speedlinguist_zh_cn.ts是中文翻译源文件,很显然,en对应英式英文。建议使用这种方式命名文件,目的是方便linguist工具自动识别目标语言。
参考地址:http://blog.interidea.org/2010/07/18/%E8%AF%AD%E8%A8%80%E5%8C%85%E7%BC%A9%E5%86%99/
(二)生成语言包:
(1)执行命令:
lupdate tmp.pro
生成翻译源文件speedlinguist_zh_cn.ts和speedlinguist_en.ts,如下图所示
(2)使用命令:
linguist
打开linguist工具后,使用linguist工具打开speedlinguist_zh_cn.ts文件。
在这里,我们看到linguist工具针对tr()函数的字符串参数进行翻译。在linguist工具中,对speedlinguist.cpp文件里的代码
QPushButton *pushButton = new QPushButton(tr("lingust default"));
的字符串“lingust default”翻译成中文“欢迎来到中国”,保存,当然,这样翻译在语言上讲,是不正确的。
同理,使用linguist工具打开speedlinguist_en.ts文件进行翻译,暂且翻译成“Welcome to England”。
(3)使用命令:
lrelease tmp.pro
生成二进制文件.qm,在上面主函数main()被使用。如下图所示
以上3个步骤的结果是,生成了翻译语言包,以.qm作为后缀的文件。下来,执行命令:
qmake
生成Makefile文件后,执行命令:
mingw32-make
提一下,我在windows中测试,使用minGW编译器。执行完该命令后,生成可执行文件tmp.exe(前提没有修改.pro文件的目标文件名),通过命令运行程序,如下图所示:
也可以,通过修改main()函数,加载speedlinguist_en.qm文件,使用生成英式英文语言包。还有在上面生成.qm文件的步骤中,也可以使用linguist工具的直接生成,而无需输入命令,方法是在完成翻译后,打开菜单File,点击Release选项,生成.qm文件。
- 大小: 60.8 KB
- 大小: 41 KB
- 大小: 54.1 KB
- 大小: 18 KB
分享到:
相关推荐
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
即使不开发Qt应用程序,Qt Creator也是一个简单易用且功能强大的IDE。[2] Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括: 一个高级的C++代码编辑器 上下文感知帮助系统 可视化调试器 源代码...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
Laravel开发-linguist Laravel框架易于本地化
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
资源分类:Python库 所属语言:Python 资源全名:django-linguist-0.6.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Qt知识点梳理 —— 国际化 QtLinguist 应用;对应文章:https://lizhifun.blog.csdn.net/article/details/112912105
Qt Creator是跨平台的 ... 在功能方面,Qt Creator 包括项目生成向导、高级的 C++ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 qmake 构建工具等。
Qt_Linguist 4.8.1汉化版(汉化工具QT语言文件qm翻译器)
快速开始安装使用选择的包管理器将库添加到您的依赖项中: npm install programming-linguist yarn add programming-linguist用法首先创建一个新的Project ,然后使用其中的语句向其添加SourceFile ,最后合成该...
1、Qt语言家(Qml版)。 2、提供更加简洁/清晰/实用的UI (自我感觉良好Ծ‸ Ծ)。 3、极易上手,so,可以给翻译人员使用。
Qt的翻译工具
Qt Linguist中文版是款很实用并且使用范围也比较广泛的辅助办公翻译工具,Qt Linguist最新版支持的格式包括 ts、qm、po、xlf (XLIFF),它的主要任务只是读取翻译文件、为翻译人员提供友好的翻译界面。软件同时还以...
evbean大神和dbzhang800大神都曾强烈批判过这种写法,原因有三
使用QT开发软件的多语言版本是很方便的,借助QT-Linguist工具和几个函数就可以实现了。 第一步:在.pro文件中添加TRANSLATIONS项,例如: TRANSLATIONS = xxx_ZH_cn.ts \ xxx_GB_en.ts 其中XXX_ZH_cn可以任意命名,...
i18n-translate-qt-ts 通过Google Translate API自动将Qt Linguist TS文件翻译成其他语言。 注意:使用需要商业Google API密钥。 用法: i18n-translate-qt-ts <googleTranslateApiKey> <workingFolder> ...
国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),说起Qt,就不能避开国际化,国际化步骤: 如果Qt程序中有QObject::tr()包裹的字符串,对这个应用程序的翻译主要包含三步: ①....
国际化!!!!! 创建一个空白的Qt工程 添加一个main.cpp #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv) QWidget* pWnd = new QWidget(); ...