Skip to main content
 首页 » 编程设计

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

2025年05月04日10zfyouxi

我在使用 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)的区域外,此代码几乎适用于所有语言环境。在这种情况下,无论文件名是什么,它都不会加载翻译文件。

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

提前致谢,乔希

请您参考如下方法:

区域名称通常采用以下形式:

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

但最后两个元素的顺序可以不同。

从 Qt 翻译器文件的角度来看,很难看出最后两个组件有何关联。因此,显而易见的做法是将它们剪掉,只使用语言和地域。

最简单的方法是使用 QLocale :

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