Qt ts文件 translator字段各种type
时间: 2023-08-11 07:07:51 浏览: 124
在Qt的ts文件中,translator字段的type属性可以有以下几种取值:
1. user:表示该翻译者是用户自行添加的,而不是在项目中预定义的翻译者。
2. system:表示该翻译者是系统默认提供的翻译者,一般不需要修改。
3. google:表示该翻译者使用谷歌翻译引擎进行翻译。
4. bing:表示该翻译者使用必应翻译引擎进行翻译。
5. youdao:表示该翻译者使用有道翻译引擎进行翻译。
6. sdl:表示该翻译者使用SDL翻译引擎进行翻译。
7. systran:表示该翻译者使用Systran翻译引擎进行翻译。
8. promt:表示该翻译者使用Promt翻译引擎进行翻译。
这些type属性可以用在Qt的lupdate和lrelease命令中,指定不同的翻译引擎进行翻译。需要注意的是,部分翻译引擎需要在Qt的安装目录下安装相应的插件才能使用。
相关问题
Qt ts文件 translator字段的几种type类型,如unfinished等代表什么含义
除了我之前提到的几种type类型外,Qt的ts文件中的translator字段还有一些特殊的type类型,它们代表的含义如下:
1. unfinished:表示该翻译项目还未完成,需要进一步的翻译工作。
2. obsolete:表示该翻译项目已经过时,不再使用,需要删除。
3. ignore:表示该翻译项目应该被忽略,不需要进行翻译。
4. finished:表示该翻译项目已经完成翻译,可以被使用。
这些特殊的type类型可以在Qt的Linguist工具中使用,帮助翻译人员更好地管理翻译项目。其中,unfinished和obsolete类型的翻译项目会被标记为“黄色”,ignore类型的翻译项目会被标记为“灰色”,finished类型的翻译项目会被标记为“绿色”。
Qt 以xml方式读取翻译.ts文件的内容,把每个翻译字段存储到一个Map里面
以下是 Qt 以 XML 方式读取翻译 .ts 文件的内容,并将每个翻译字段存储到一个 `QMap` 中的代码示例:
```cpp
#include <QCoreApplication>
#include <QTranslator>
#include <QXmlStreamReader>
#include <QFile>
#include <QMap>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
// 创建翻译器对象
QTranslator translator;
// 加载翻译文件并以 XML 格式读取
QFile file("myapp_zh_CN.qm");
if (file.open(QIODevice::ReadOnly)) {
QByteArray data = file.readAll();
translator.loadFromData(data, "myapp_zh_CN.qm");
file.close();
}
// 解析 XML 文件内容并存储到 QMap 中
QMap<QString, QString> translations;
QXmlStreamReader xml(&data);
while (!xml.atEnd() && !xml.hasError()) {
QXmlStreamReader::TokenType token = xml.readNext();
if (token == QXmlStreamReader::StartElement && xml.name() == "message") {
QString key, value;
while (!(xml.tokenType() == QXmlStreamReader::EndElement && xml.name() == "message")) {
if (xml.tokenType() == QXmlStreamReader::StartElement && xml.name() == "source") {
xml.readNext();
key = xml.text().toString();
} else if (xml.tokenType() == QXmlStreamReader::StartElement && xml.name() == "translation") {
xml.readNext();
value = xml.text().toString();
}
xml.readNext();
}
if (!key.isEmpty() && !value.isEmpty()) {
translations.insert(key, value);
}
}
}
// 输出 QMap 中的翻译内容
QMap<QString, QString>::iterator i;
for (i = translations.begin(); i != translations.end(); ++i) {
qDebug() << i.key() << ": " << i.value();
}
// 安装翻译器
app.installTranslator(&translator);
// 使用翻译
QString msg = QObject::tr("Hello World!");
qDebug() << msg;
return app.exec();
}
```
在上述代码中,我们首先创建了一个 `QTranslator` 对象,并使用 `loadFromData` 函数从名为 `myapp_zh_CN.qm` 的文件中以 XML 格式读取翻译内容。注意,我们需要使用 `QFile` 类先打开文件,再读取文件内容。接下来,我们使用 `QXmlStreamReader` 类解析 XML 文件内容,并将每个翻译字段存储到一个 `QMap` 中。最后,我们输出了 `QMap` 中的翻译内容,以及使用 `tr` 函数翻译了一个字符串,并使用 `qDebug` 输出了翻译后的结果。
阅读全文