2017-09-05 18 views
0

Qt를 사용하여 파이썬 응용 프로그램에 대한 번역 파일을 만드는 방법을 알아내는 데 어려움이 있습니다.Qt 국제화에 대한 질문

저는 파이썬 2.7, Qt 버전 5.9.1 및 PyQt4 4.12.1을 사용하여 OSX 10.11.6에서 내 GUI를 만듭니다.

지금은 단지 내 코드에서 몇 마디를 번역하고 싶었습니다.

내가 이해하는 한, QtLinguist를 사용하여 .ts 파일을 열고 단어를 번역하고 .qm 파일을 만든 다음 파이썬에서 사용합니다. pylupdate4로 읽을 수 있습니다 나는이 .PRO 프로젝트 파일을 사용할 필요가 있음을 얻을 Qt Linguist page에서

, 등등 ... 이제

, 나는 내가 .PRO 파일을 만들려면 어떻게해야합니까?

내가 실행 시도 :

$ qmake -project myfile.py 
$ pylupdate4 myfile.pro -ts file.ts 

을하지만 결과 .PRO 파일이 Tutorial에서 pylupdate4 (XML error: Parse error at line 1, column 1 [...])

읽을 수 없습니다, 나는 시도 :

$ pylupdate4 myfile.py -ts file.ts 

어떤 Qt 언어학자가 열 수없는 빈 .ts 파일을 만듭니다.

내 브라우저에서 열어 본 15 개의 탭이 도움이되지 않는 것일 수 있습니다. 당신이 문자열을 통과해야합니다 당신 self.tr 사용하는 경우

import sys 
import os.path as osp 
import os 
from PyQt4 import QtGui, QtCore 

class MainWindow(QtGui.QWidget): 

    def __init__(self): 
     super(MainWindow,self).__init__() 

     # Set MainWindow geometry, use settings of last session. If it's first session, 
     # use defaulted settings 
     self.settings = QtCore.QSettings('Paul',QtCore.QSettings.NativeFormat) 
     self.resize(self.settings.value("size", QtCore.QSize(500, 300)).toSize()) 
     self.move(self.settings.value("pos", QtCore.QPoint(5, 5)).toPoint()); 

     self.initUI() 


    def closeEvent(self, e): 
     #Save MainWindow geometry session when closing the window 
     self.settings.setValue("size",self.size()) 
     self.settings.setValue("pos",self.pos()) 
     e.accept() 

    def initUI(self): 

     self.hbox = QtGui.QVBoxLayout(self) # Create Vertival box layout to put the buttons 
     self.myButtons = QtGui.QPushButton('button',self) #create push button 
     self.myButtons.setStyleSheet("""QPushButton { background-color: red; font:bold 20px}""") 
     self.myButtons.setToolTip('Push this button') 
     self.myButtons.setText(self.tr(QtCore.QString('yes'))) 
     comboBox=QtGui.QComboBox(self) #create drop down menu 
     comboBox.addItem('Portugues') 
     comboBox.addItem('English') 
     self.hbox.addWidget(comboBox,1,QtCore.Qt.AlignRight) #add drop down menu to box layout 
     self.hbox.addStretch(3)  # set separation between buttons 
     self.myButtons.clicked.connect(self.buttonClicked) # what should the button do 
     self.hbox.addWidget(self.myButtons,1,QtCore.Qt.AlignRight) #add button to box layout 


     self.setWindowTitle('Test2') 


     self.show() 


    def buttonClicked(self): 

     msbox= QtGui.QMessageBox() 
     choice=msbox.warning(self,'ok',"This button doesn't do anything!!!") 


     if choice == QtGui.QMessageBox.No: 
      print('nanan') 
     else: 
      print('Bye') 
      self.settings.setValue("size",self.size()); 
      self.settings.setValue("pos",self.pos()); 
      sys.exit() 

def main(): 

    app = QtGui.QApplication(sys.argv) 
    translator = QtCore.QTranslator() 
    translator.load("~/basefiles/translations/qt_pt.qm") 
    app.installTranslator(translator) 
    ex = MainWindow() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 
+0

pyqt4의 버전은 무엇입니까? – eyllanesc

+0

버전 4.12.1, 최신 버전 Riverbank 다운로드 페이지 – Elcook

답변

0

아닌 QString 변수, 귀하의 경우는 변경 :

self.myButtons.setText(self.tr(QtCore.QString('yes'))) 

여기 당신이 그것을 필요로하는 경우에 내 파이썬 코드입니다 ~

self.myButtons.setText(self.tr("yes")) 

그리고 모든 것을 다시 실행하십시오.

+0

도움을 주셔서 감사합니다. 그건 나중에 문제가 되었 겠지만, 지금은 내 문제를 해결하지 못했습니다. 나는 여전히 적절한 번역 파일을 만드는 방법을 모른다. – Elcook

+0

나는 일했지만, 계속 시도해 보도록하자. 그 줄을 다음과 같이 변경해 보자 :'self.myButtons.setText (self.tr ("yes"))' – eyllanesc

+0

그 일을했습니다 !! 이제 생성 된 .ts 파일을 내 번역으로 편집하고 .qm 파일을 만들 수 있습니다. 나는 문제가 pylupdate4를 사용할 때라고 확신했다 ... – Elcook