2012-02-03 3 views
0

Subj: возможно ли это? Например, могу ли я перевести QtGui.QFileDialog().getSaveFileName() кнопку «Сохранить» в «Conservare» и «Отменить» на «Игнорировать»? Можно ли создать мой класс на основе QFileDialog/QFontDialog, не изобретая скорость? Кто-то сказал, что эти функции будут всегда переведены в зависимости от системного языка. Не верьте, моя русская версия OpenSUSE говорит, что это ложь. :-) И русская Windows 7 имеет такое поведение. Все строки, которые я вижу в моих системах, - английский. Я не националист, но я хочу использовать строки на других языках. :-) Благодаря!PyQt4: QFileDialog и локализация QFontDialog

ответ

2

Стандартная установка Qt должна включать около 20 файлов перевода для самой библиотеки Qt.

Объяснение того, как их использовать, можно найти в this section документации Qt i18n.

Вот простой пример PyQt4:

from PyQt4 import QtGui, QtCore 

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.buttons = QtGui.QDialogButtonBox(self) 
     button = self.buttons.addButton(QtGui.QDialogButtonBox.Open) 
     button.clicked.connect(self.handleOpen) 
     button = self.buttons.addButton(QtGui.QDialogButtonBox.Close) 
     button.clicked.connect(self.close) 
     layout = QtGui.QVBoxLayout(self) 
     layout.addWidget(self.buttons) 

    def handleOpen(self): 
     dialog = QtGui.QFileDialog() 
     dialog.exec_() 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    translator = QtCore.QTranslator() 
    if len(sys.argv) > 1: 
     locale = sys.argv[1] 
    else: 
     locale = QtCore.QLocale.system().name() 
    translator.load('qt_%s' % locale, 
     QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)) 
    app.installTranslator(translator) 
    window = Window() 
    window.show() 
    sys.exit(app.exec_()) 
+0

Спасибо! Это было действительно полезно. Только один вопрос: могу ли я использовать разные переводы (по умолчанию Qt и мои собственные) вместе? – ghostmansd

+0

У меня есть некоторые элементы в моем приложении, переведенные через другой qm-файл с помощью QTranslator.translate. – ghostmansd

+0

@ghostmansd. Да, вы можете установить несколько переводчиков. Поиск переводов выполняется в обратном порядке, поэтому вы, вероятно, захотите установить свой собственный 'qm' файл _last_ (см. [Здесь] (http://developer.qt.nokia.com/doc/qt-4.8/qcoreapplication .html # installTranslator)). – ekhumoro

0

Я уже нашел решение: qm. Вы можете получить их от ts файлов, используя lrelease.

Смежные вопросы