Как QTranslator обрабатывает модификаторы локали PyQT?
У меня проблема с загрузкой файла перевода с помощью 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()