2017-09-05 7 views
0

Qtを使用してPythonアプリケーションの翻訳ファイルを作成する方法を理解するのに問題があります。Qt国際化に関する質問

私は、OSX 10.11.6で自分のGUIを作成するためにPython 2.7、Qtバージョン5.9.1、PyQt4 4.12.1を使用しています。

今のところ、自分のコードでいくつかの単語を翻訳したかっただけです。

私が理解するところでは、QtLinguistを使用して.tsファイルを開き、単語を翻訳し、.qmファイルを作成してから、Pythonで使用する必要があります。私は今

...私はpylupdate4などによって読み込まれます.PROプロジェクトファイルを、使用する必要があることをもらうQt Linguist pageから

、私は私が.PROファイルを作成するのですか?

は、私が実行してみました:

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

が、結果.PROファイルがpylupdate4XML error: Parse error at line 1, column 1 [...])で読み取ることができません

をこのTutorialから、私が試した:

$ 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'))) 

は、ここであなたがそれを必要とする場合、私のPythonのコードです〜

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

もう一度すべてを実行してください。

+0

ありがとうございました。それは後で問題になりましたが、私の問題は今解決されませんでした。私はまだ適切な翻訳ファイルを作成する方法を知らない。 – Elcook

+0

私は働いていましたが、試してみましょう。その行を次のように変更してみましょう: 'self.myButtons.setText(self.tr(" yes "))' – eyllanesc

+0

それはうまくいきました!作成した.tsファイルを翻訳で編集して.qmファイルを作成することができます。私は問題がpylupdate4を使用していると確信していた... – Elcook