【问题标题】:How to map the correct language in Qt multiple language supports?如何在 Qt 多语言支持中映射正确的语言?
【发布时间】:2019-07-03 20:33:18
【问题描述】:

我需要为我们基于 Qt 的产品添加多种语言。我做了一些谷歌搜索并得到了一些想法。但是,我找不到一个答案:“.ts”文件如何知道是哪种语言?

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

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

TS version="2.1" language="zh_CN"

然后我用'linguist'工具打开新的'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>

【问题讨论】:

    标签: c++ qt localization


    【解决方案1】:

    实际上,lupdate 解析名称文件以获取语言。它使用与QLocale 类似的方法。

    一旦您有了语言环境,您就可以使用QLocale::nativeLanguageName 之类的方法来获取语言名称(在本例中为该语言的语言名称)。

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

    更多信息,一个好的起点是自己的Qt's wiki page about multi-language applications

    【讨论】:

      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      相关资源
      最近更新 更多