2012-02-03 2 views
0

Subj : 가능합니까? 예를 들어 QtGui.QFileDialog().getSaveFileName() 버튼을 "저장"버튼을 "Conservare"로 바꾸고 "취소"를 "무시"로 번역 할 수 있습니까? 속도를 발명하지 않고 QFileDialog/QFontDialog을 기반으로 수업을 만들 수 있습니까? 누군가는 시스템 로케일에 따라 이러한 기능이 항상 번역 될 것이라고 말했습니다. 믿지 마라. OpenSUSE의 러시아어 버전은 그것이 거짓말이라고 말한다. :-) 러시아어 Windows 7은 이러한 동작을합니다. 내 시스템에서 볼 수있는 모든 문자열은 영어입니다. 나는 민족 주의자가 아니지만 다른 언어로 된 문자열을 사용하고 싶습니다. :-) 감사!PyQt4 : QFileDialog 및 QFontDialog 현지화

답변

2

표준 Qt 설치에는 Qt 라이브러리 자체에 대해 20 개 정도의 번역 파일이 포함되어야합니다.

Qt i18n 문서의 this section에서 사용법에 대한 설명을 볼 수 있습니다.

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

감사 :

여기에 기본 PyQt4 예입니다! 정말 유용했습니다. 단 하나의 질문 : 다른 번역 (기본 Qt와 내 번역)을 함께 사용할 수 있습니까? – ghostmansd

+0

QTranslator.translate와 함께 다른 qm 파일을 통해 번역 된 앱의 일부 요소가 있습니다. – ghostmansd

+0

@ghostmansd. 네, 여러 번역사를 설치할 수 있습니다. 번역을위한 검색은 역순으로 이루어 지므로 자신의'qm' 파일 _last_ ([here] (http://developer.qt.nokia.com/doc/qt-4.8/qcoreapplication .html # installTranslator)). – ekhumoro

0

이미 해결책을 찾았습니다 : qm 개의 파일. lrelease을 사용하여 ts 개의 파일을 가져올 수 있습니다.