QTranslator如何处理区域设置修饰符PyQT?

时间:2014-02-13 08:23:19

标签: python python-2.7 pyqt4 locale qtranslator

我在使用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)

此代码几乎适用于除包含修饰符(E.G. sr_RS@latin.UTF-8)的每个语言环境。在这种情况下,它不会加载翻译文件,无论它的名称是什么。

我似乎无法弄清楚要为翻译文件命名的内容,或者我需要实现哪些新代码才能使代码正常运行。

先谢谢,乔希

1 个答案:

答案 0 :(得分:1)

区域设置名称通常采用以下格式:

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

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

从Qt翻译文件的角度来看,很难看出最后两个组件如何以任何方式相关。因此,显而易见的事情就是将它们修剪掉,只使用语言和领域。

最简单的方法是使用QLocale

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