如何在QT多种语言支持中映射正确的语言

How to map the correct language in Qt multiple language supports?

本文关键字:语言 映射 支持 QT      更新时间:2023-10-16

我需要在基于QT的产品中添加多种语言。我做了一些Google并得到了一些想法。但是,我找不到一个答案:'.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>

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

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

仅出于完整性,QTranslator还使用此类文件名后缀来找到正确的.QM文件以加载当前语言环境。更多信息在这里。

有关其他信息,一个很好的起点是关于多语言应用程序的QT Wiki页面。