Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

Translator Class

class Visindigo::General::Translator

Visindigo的翻译功能类,用于替代Qt自带的翻译功能。. 详情...

头文件: #include <General/Translator.h>
自以下版本: Visindigo 0.13.0

公开成员函数

(自 Visindigo 0.13.0 引入) Translator()
(自 Visindigo 0.13.0 引入) Translator(const QString &nameSpace)
(自 Visindigo 0.13.0 引入) virtual ~Translator()
(自 Visindigo 0.13.0 引入) void addLangFilePath(Visindigo::General::Translator::LangID id, QString path)
(自 Visindigo 0.13.0 引入) QString getNamespace()
(自 Visindigo 0.13.0 引入) void setDefaultLang(Visindigo::General::Translator::LangID lang)
(自 Visindigo 0.13.0 引入) void setLangFilePath(QMap<Visindigo::General::Translator::LangID, QString> langFilePath)
(自 Visindigo 0.13.0 引入) void setNamespace(const QString &nameSpace)
(自 Visindigo 0.13.0 引入) QString tr(const QString &key)

详细说明

Translator是Visindigo利用JSON文件实现的翻译功能类,它不一定比Qt自带的翻译功能具有更好的性能,但它的易用性更好。

与Qt自带的翻译功能相比,Translator的最大特点在于其使用键名而非初始语言的原文本作为翻译的索引,这意味着 在代码中,可以极大程度地避免对文本的修改对翻译功能的影响,从而减少了代码的维护成本。

除此之外,由于Visindigo的模块化设计,为了了避免不同模块间的翻译键名冲突,Translator使用命名空间来区分不同模块的翻译内容。

Visindigo的键名格式如下:

<namespace>::<key>.<subkey>...

其中<namespace>为命名空间,命名空间之后则为Json节点的索引路径,例如:

{
        "Part1": {
                "SubPart1": "This is SubPart1 of Part1",
                "SubPart2": "This is SubPart2 of Part1"
        },
        "Part2": "This is Part2"
}

则可以有如下的键名:

<namespace>::Part1.SubPart1
<namespace>::Part1.SubPart2
<namespace>::Part2

此外,在Visindigo提供的部分从配置文件生成窗口的功能中,(例如Visindigo::Widgets::ConfigWidget、Visindigo::Widgets::QuickMenu等) 对于要支持国际化的文本,其内容应该以"i18n:"开头,后接键名,例如:

i18n:<namespace>::Part1.SubPart1

这样,Visindigo的翻译功能就可以自动识别并进行翻译。若不加"i18n:"前缀,则Visindigo会将其视为普通文本,不进行翻译。

成员函数文档

[since Visindigo 0.13.0] Translator::Translator()

构造Translator对象,默认命名空间为空。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] Translator::Translator(const QString &nameSpace)

构造Translator对象,并设置命名空间。

这个 function 从 Visindigo 0.13.0 开始支持。

[virtual noexcept, since Visindigo 0.13.0] Translator::~Translator()

析构Translator对象。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] void Translator::addLangFilePath(Visindigo::General::Translator::LangID id, QString path)

添加语言文件路径。参数id为语言ID,path为对应的语言文件路径。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QString Translator::getNamespace()

获取当前命名空间。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] void Translator::setDefaultLang(Visindigo::General::Translator::LangID lang)

设置默认语言。默认语言用于在当前语言缺少某个键名的翻译时进行回退。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] void Translator::setLangFilePath(QMap<Visindigo::General::Translator::LangID, QString> langFilePath)

设置语言文件路径。参数langFilePath为一个QMap,其键为语言ID,值为对应的语言文件路径。

语言文件不会在设置后立即加载,只有当Translator被挂载到TranslationHost后,才会按需加载对应的语言文件。

这个 function 从 Visindigo 0.13.0 开始支持。

另请参阅 TranslationHost.

[since Visindigo 0.13.0] void Translator::setNamespace(const QString &nameSpace)

设置命名空间。

这个 function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QString Translator::tr(const QString &key)

翻译键名为key 的文本,并返回翻译结果。如果当前语言和默认语言均缺少该键名的翻译,则返回原键名。

这个 function 从 Visindigo 0.13.0 开始支持。