Translator Class
class Visindigo::General::TranslatorVisindigo的翻译功能类,用于替代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 开始支持。