Qt国际化:中文化(汉化)(续)

来源:互联网 发布:mac sdk manager 编辑:程序博客网 时间:2024/05/12 05:28

之前一篇文章讲解了Qt国际化的一些步骤。

今天这篇文章将会讲解一些ts文件的制作技巧,以及使用方法。

根据标准的流程:我们使用tr("Hello");然后使用lupdate *.pro制作ts文件。

但是如果我们需要把所有被翻译的文件放置在某个特定的文件中例如:QDefine.h(个人习惯把所有的字符串都定义在这个文件中,使用格式例如:const g_QStringName[5]={};).

这个时候我们使用的是QString数组,那么又该怎么进行国际化?

这里就涉及到ts文件制作了。

首先在代码中对QString进行处理;

格式:

const g_QStringName = "Hello";

QPushButton*m_pBtn = new QPushButton;

m_pBtn->setText(tr(g_QStringName .toUtf8.data()));

这里之所以使用toUft8是考虑到国际化对于uft8支持比较好。

但是以上虽然用tr包裹了但是使用lupdate *.pro是无法生成对于项的。

于是我们就需要手动往ts文件中添加该项。

假设这个函数是在类QMenuFrame这个类中 ;

我们打开一个ts文件发现其实他的书写格式是一个xml文件。

有自己的格式:

<context><name></name><message><source></source><translation></translation><message></context>

context段落格式;

name表示类名字;

message是每个需要翻译字符串起始

source是字符串原始;

translation是翻译后的字符;

根据我们的例子,如果原始ts中没有QMenuFrame这个类;

那么我们就自己编写:

<context><name>QMenuFrame</name><message><source>Hello</source><translation>你好</translation><message></context>

将修改后的ts用Linguist生成新的*.qm文件即可。就能把这个QString翻译过来。





原创粉丝点击