QTranslator 如何处理语言环境修饰符 PyQT?

Posted

技术标签:

【中文标题】QTranslator 如何处理语言环境修饰符 PyQT?【英文标题】:How does QTranslator handle locale modifiers PyQT? 【发布时间】:2014-02-13 08:23:18 【问题描述】:

我在使用 QTranslator 加载翻译文件时遇到问题,因为其中包含语言环境修饰符。我使用的代码是,

from PyQt4 import QtCore, QtGui
from locale import getdefaultlocale

locale = getdefaultlocale()

app = QtGui.QApplication(sys.argv)

translator = QtCore.QTranslator(app)
translator.load('/usr/share/my_application/tr/qt_%s.qm' % locale[0])
app.installTranslator(translator)

此代码适用于几乎所有语言环境,但包含修饰符的语言环境除外(例如 sr_RS@latin.UTF-8)。在这种情况下,无论其名称如何,它都不会加载翻译文件。

我似乎不知道给翻译文件起什么名字,或者我需要实现什么新代码才能让这段代码正常工作。

提前致谢,乔希

【问题讨论】:

【参考方案1】:

语言环境名称通常采用以下形式:

    language[_territory][.codeset][@modifier]

但最后两个元素的顺序可能会有所不同。

从 Qt 翻译文件的角度来看,很难看出最后两个组件有什么相关性。因此,显而易见的做法是将它们剪掉,只使用语言和领土。

最简单的方法是使用QLocale:

    qm = 'qt_%s.qm' % QLocale().name()

【讨论】:

以上是关于QTranslator 如何处理语言环境修饰符 PyQT?的主要内容,如果未能解决你的问题,请参考以下文章

有符号数和无符号数在一起如何处理的

将 NSString 转换为 AXUIElementPostKeyboardEvent 的 keyCode+修饰符

使用 Perl/Moose,修饰符返回的值会发生啥变化?

从套接字读取时如何处理阻塞的 read() 调用?

如何处理sql中的关键字(例如',%)

编程语言如何处理大数算术