如何在QT多种语言支持中映射正确的语言
How to map the correct language in Qt multiple language supports?
我需要在基于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页面。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 将函数类成员映射到类本身内部
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 使用std::函数映射对象方法
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++映射分割错误(核心转储)
- 内联映射初始化的动态atexit析构函数崩溃
- 使用"std::unordereded_map"映射到"std::list"对象
- 如何从多映射中删除特定的重复项
- 在未初始化映射的情况下,将值插入到映射的映射中
- QT通过C++添加映射QML项目
- 在c++中访问int到类对象的映射时出错
- 在C++中搜索嵌套多映射值
- 错误处理.将系统错误代码映射到泛型
- 如何在QT多种语言支持中映射正确的语言
- 如何从C或C 语言级别安全访问内存映射的硬件寄存器
- Java 编程语言中的数据类型如何映射到本机编程语言(如 C 和 C++)中的数据类型
- 在 C 语言中打印映射/过滤器/减少函数时出现问题