首页 > 编程知识 正文

qt的中英文翻译,qt输入中文

时间:2023-05-05 14:26:17 阅读:150278 作者:4787

使用Qt Linguist工具,有两种方法可以执行以下操作(Windows操作系统) : 首先说明第一个,因为*.pro工程文件存在于一个软件系统中,所以可以使用它以命令行格式生成最终需要的或更新的*.qm文件。 但是,如果更新*.ts和*.qm文件,则必须将最后生成的*.qm文件放在系统可调用的文件中。 否则,打开软件进行确认,结果为

例如,如果您将自己使用的*.pro (项目文件(称为myproject.pro ) )放在e驱动器上名为example的文件夹下,请将命令行替换为example路径下。 以命令行格式生成系统所需的*.ts源文件必须调用此项目文件,因此如果未设置路径,则必须设置要调用的路径。例如,在设置了e :." exammy e :." examplelreleasemyproject.pro,按回车,然后用Qt Linguist打开刚打开的tt1.ts文件,将需要内部翻译的内容翻译成文字然后返回运行时环境,使用命令行e :." examplelreleasett1. ts,最终生成系统可以调用的*.qm文件。 这将导致在整个操作过程中最终需要。 但是,必须强调,这还不是最后一次操作。 此处生成的*.qm文件存储在原始设置的目录中,并且不能由系统调用。 因此,您必须将此文件移动到系统可以调用的目录中。

这样,第一种方式就完成了。 但是,在实际操作中,还是会有不少挫折。 因为这样,在最终调试程序时,需要翻译的内容可能没有完全显示出来,或者在*.ts文件中显示出来。 即使更新了翻译内容,在Qt Linguist中打开*.ts文件时,其中的某些部分的内荣不会显示为黑色实体,而是无法更改的灰色实体,或者无法完全显示所有内容。 此时,即使想进行翻译,也无可奈何,无法将所有的内容翻译完。 最终变成系统的表示。 实际上,这是因为在上一个路径中设置的*.pro项目文件没有完全包含所有系统内容,特别是系统插件。 由于翻译源文件*.ts是依赖于项目文件生成的,因此翻译内容也不完整。 在这种情况下,可以采用以下第二种方法。

接下来要讲的是非主流的方式,或许还有其他更好的方式,但这个方法也还很实用,应用者可以选择性地采用,还有更好的方法。 再次感谢您的介绍。

如果系统已经生成了*.ts文件,则可以使用Qt Linguist直接打开*.ts文件,而无需使用lupdate myproject.pro命令行工具。 在右上方的栏中翻译文本,确认完成后单击“保存”,选择文件的release选项生成*.qm文件。 此时,用户可以直接设置*.qm文件的保存路径,而无需如上所述将*.qm文件移动到单独的指定路径,从而节省大量时间和精力。

用这个就可以了吗? 答案是否定的。 否则,我想我遇到了前面第一种方法说的瓶颈,但没办法。 在说以下内容之前,我建议使用软件——UltraEdit。 这是一个可以同时编辑或显示多个不同类型文件的软件。 感兴趣的用户可以试试。 果然是实用的软件。 我们还是要进入正题,但必须说明这种方法往往适用于更新或添加的翻译内容,特别是适用于包含插件的大程序。 用这个软件可以直接打开*.ts文件。 另外,也可以直接编辑美丽的海燕。 第一次看里面的东西,可能会有点隐藏,但是仔细看的话就可以使用了,找到诀窍也不需要花时间。 找到自己需要添加或修改的文件,直接点赞海燕添加新的必要翻译原文和翻译文字即可。 或者,也可以修改旧的内容。 在这种情况下,使用Qt Linguist更方便。 如下所示:

加载BMP文件用于加载BMP文件

和其中间部分作为一个单元,可以增加或修改新的内容,仍然方便实用,可以说是可以解决的实用方式。 修改完成后,单击“保存”从Qt Linguist的release中生成*.qm文件即可。 以下步骤相同。 省略说明。

以上是两种Qt翻译工具的使用方法,如果还有其他更好或可行的方法,请不要吝惜介绍。

简单的样品

QT-Linguist国际化的简单实现

QT-Linguist工具主要用于项目的多语言翻译过程。 首先简要说明整个多语言处理过程,最后介绍Linguist的使用方法。

QT项目要实现多语言,需要做以下两件事:

1 )确认各个用户可见的字符串中使用了tr ) )函数

2 )启动APP应用程序时,使用QTranslator加载翻译文件(.qm )

(一)编写源代码

类SpeedLinguist :

Cpp代码#ifndefSPEEDLINGUIST_H_

#defineSPEEDLINGUIST_H_

#包含

>

#include 

class SpeedLinguist: public QWidget

{

Q_OBJECT

public:

SpeedLinguist(QObject *parent = 0);

};

#endif

Cpp代码  #include "speedlinguist.h"

#include 

#include 

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工具生成,后面会详细介绍生成过程:

Cpp代码  #include "speedlinguist.h"

#include 

#include 

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();

}

编写好代码之后,打开命令行终端,执行命令:

Terminal代码  qmake -projecct

生成工程文件tmp.pro,打开tmp.pro文件,添加一行翻译配置:

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工具自动识别目标语言。

(二)生成语言包:

(1)执行命令:

Terminal代码  lupdate tmp.pro

生成翻译源文件speedlinguist_zh_cn.ts和speedlinguist_en.ts,如下图所示

(2)使用命令:

Terminal代码  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)使用命令:

Terminal代码  lrelease tmp.pro

生成二进制文件.qm,在上面主函数main()被使用。如下图所示

以上3个步骤的结果是,生成了翻译语言包,以.qm作为后缀的文件。下来,执行命令:

Terminal代码  qmake

生成Makefile文件后,执行命令:

Terminal代码  mingw32-make

提一下,我在windows中测试,使用minGW编译器。执行完该命令后,生成可执行文件tmp.exe(前提没有修改.pro文件的目标文件名),通过命令运行程序,如下图所示:

也可以,通过修改main()函数,加载speedlinguist_en.qm文件,使用生成英式英文语言包。还有在上面生成.qm文件的步骤中,也可以使用linguist工具的直接生成,而无需输入命令,方法是在完成翻译后,打开菜单File,点击Release选项,生成.qm文件。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。