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?的主要内容,如果未能解决你的问题,请参考以下文章