Как 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()
Другие вопросы по тегам