`

QT-Linguist国际化的简单实现

    博客分类:
  • Qt
阅读更多

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
1
1
分享到:
评论

相关推荐

    Qt国际化的简单例子

    首先,Qt的国际化是基于Qt Linguist工具和QTranslator类实现的。Qt Linguist是一个用于翻译Qt资源文件(.ts)的图形界面工具,它可以帮助开发者管理和编辑应用程序的翻译。而QTranslator类则负责加载和应用这些翻译。 ...

    Qt-国际化(语言切换)

    Qt的国际化实现主要依赖于两个关键组件:QTranslator类和QLocale类。QTranslator用于加载和应用翻译文件,QLocale则用来处理与特定地区相关的数据格式,如日期、时间、数字和货币等。 1. **QTranslator**:这是Qt的...

    Qt多语言国际化demo

    在本文中,我们将深入探讨如何使用Qt框架进行多语言国际化,并结合Visual Studio 2015进行开发。Qt是一个强大的跨平台应用开发框架,支持多种操作系统,如Windows、Linux、macOS等。它提供了丰富的API和工具,使得...

    Qt程序国际化(简单实用)

    4、将翻译文件发送给专门的翻译人员进行翻译,也可以使用 Qt 自带的 QtLinguist 工具来协助翻译工作。 5、翻译完成后,使用 lrelease 命令或 Qt Creator 的 Tools 菜单下的 External—Qt 语言家—Release ...

    Qt国际化 动态语言切换 多窗口翻译

    Qt 国际化动态语言切换多窗口翻译 在 Qt 中实现国际化是一件非常...Qt 国际化可以通过使用 QTranslator 类和 Linguist 工具来实现。动态语言切换和多窗口翻译可以通过使用 QTranslator 类和 changeEvent 函数来实现。

    qt-embedded-whitepaper-a4.pdf

    - **Qt Linguist**:一款用于翻译 Qt 应用程序的工具。 #### 10. 非图形类 - **集合类**:提供了一系列数据结构,如列表、栈等。 - **输入/输出**:支持文件读写和其他输入输出操作。 - **网络**:提供了一组网络...

    QT-4 programming

    #### 十、国际化 **10.1 文本输入与渲染 (Text Entry and Rendering)** Qt 提供了对多种语言的支持,包括复杂的文字方向和字符集。QFont 类支持多种字体样式,确保正确地显示各种语言。 **10.2 应用程序翻译 ...

    Linux下QT-图形界面开发 (2).pdf

    Qt库包括对不同操作系统的支持,如Qt/X11、Qt Embedded(面向嵌入式系统的版本)、Qt for Windows以及快速开发工具Qt Designer和国际化工具Qt Linguist。其核心特性是良好的封装和模块化设计,使得代码可重用性高。 ...

    Linux下QT-图形界面开发.pdf

    Qt库的设计使得其模块化程度很高,易于重用,同时也提供了快速开发工具Qt Designer和国际化工具Qt Linguist,简化了GUI程序的开发流程。 在Linux环境下,使用QT进行图形界面开发通常涉及以下几个关键步骤: 1. **...

    QT中文国际化使用方法

    下面是一个简单的例子,展示了如何在QT程序中实现中文国际化: ```cpp #include #include #include int main(int argc, char** argv) { QApplication app(argc, argv); // 创建并加载翻译器 QTranslator ...

    qt creator 实现 语言切换

    在Qt Creator中实现语言切换是一项常见的功能,尤其对于面向国际化的软件来说,提供多语言支持是必不可少的。Qt Creator作为一款强大的跨平台开发环境,它自身就具备了切换语言的能力。下面我们将详细探讨如何实现这...

    Qt.rar_QT_如何学习 Qt

    8. **国际化和本地化** - Qt Linguist工具:学习如何使用Qt Linguist进行应用程序的翻译,以便支持多语言。 9. **调试与测试** - 使用Qt Creator的内置调试器进行代码调试,以及单元测试框架Qt Test进行功能验证...

    基于Qt QGraphicsView的简易画图软件.zip

    国际化与本地化: Qt Linguist工具支持应用程序的多语言翻译和本地化工作,确保软件能适应全球市场。 开发工具与生态系统: Qt Creator是一款集成开发环境(IDE),集成了项目管理、代码编辑、调试、版本控制、...

    QT多语言实现快速入门示例

    在开发面向国际化的应用时,多语言支持是必不可少的特性。本示例将帮助开发者快速理解如何在QT项目中实现多语言功能。 首先,我们需要了解QT中的翻译机制。QT使用`.ts`(Translation Source)文件来存储应用程序的...

    Qt[多国语言]

    **Qt多国语言应用** Qt框架为开发支持多国语言的跨平台应用程序提供了强大的支持。在Qt中,实现多国语言通常涉及到两个...结合Qt的国际化和本地化功能,开发者可以轻松构建全球化的软件产品,满足不同地区用户的需求。

    Qt 5编程入门

    - **国际化支持**:Qt支持多种语言和地区的文本显示,通过Qt Linguist工具可以轻松实现应用程序的多语言化。 #### 五、Qt 5应用案例分析 - **桌面应用开发**:Qt广泛应用于桌面应用程序的开发,如音乐播放器、图片...

    基于Qt的通用态势显示平台的设计与实现

    综上所述,基于Qt的通用态势显示平台通过其强大的跨平台能力、多语言国际化支持以及高效的场景—视图显示机制,为军事指挥系统提供了一个灵活、高效、易于维护的态势显示解决方案。该平台不仅降低了开发成本和周期,...

    Qt动态实现各种语言切换

    在软件国际化(i18n)和本地化(l10n)的背景下,实现应用程序支持多种语言的能力变得至关重要。对于使用Qt框架开发的应用而言,其强大的国际化支持使得动态语言切换成为可能。动态语言切换指的是用户在使用应用的...

    Qt应用程序的编程核心技术

    - QtLinguist是专门的国际化工具,帮助开发者将程序文本提取出来,以便进行多语言翻译。 4. **进程间通信** - Qt提供了多种方式进行进程间通信(IPC),如管道、套接字、数据库连接等,使得不同进程间的数据交换...

    QT5教程 完整版.rar

    10. **国际化和本地化**:QT5的国际化功能使得应用能够适应不同的语言环境,教程会教你如何利用Qt Linguist工具实现这一功能。 通过学习QT5教程的完整版,你将具备开发跨平台应用的能力,无论是简单的桌面应用还是...

Global site tag (gtag.js) - Google Analytics