如何在Qt多语言支持中映射正确的语言?

时间:2019-07-03 20:33:18

标签: c++ qt localization

我需要在基于Qt的产品中添加多种语言。我做了一些谷歌,有一些想法。但是,我找不到一个答案:'。ts'文件如何知道使用哪种语言?

例如,在示例项目中:i18n。

我删除了原始的“ i18n_zh.ts”文件,并使用“ lupdate”创建了一个新的“ i18n_zh.ts”文件。然后,我查看了新文件的内容。它有这行:

TS version="2.1" language="zh_CN"

然后我使用“语言学家”工具打开新的“ i18n_zh.ts”文件,发现Qt知道这是中文翻译。

Qt怎么知道它是中文?映射表在哪里?文件名中的'_zh'暗示什么吗?

新的“ i18n_zh.ts”文件中的某些内容:

?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>MainWindow</name>
<message>
    <location filename="../languagechooser.cpp" line="176"/>
    <location filename="../mainwindow.cpp" line="85"/>
    <source>English</source>
    <translation type="unfinished"></translation>
</message>

1 个答案:

答案 0 :(得分:0)

有效地,lupdate解析名称文件以获取语言。它使用与QLocale相似的方法。

有了语言环境后,就可以使用QLocale::nativeLanguageName之类的方法来获取语言名称(在这种情况下为该语言的语言名称)。

仅出于完整性考虑,QTranslator还使用此类文件名后缀来查找要为当前语言环境加载的正确.qm文件。更多信息here

有关其他信息,一个不错的起点是自己的Qt's wiki page about multi-language applications