看来您混合了两件事:Qt 本身的翻译(通过 qt_xx.qm 文件提供并与 Qt 一起分发)和您自己的翻译。
这里有一个使用 Qt 本身的俄语翻译文件的示例:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class MyWindow(QWidget):
def __init__(self, parent=None):
super(QWidget, self).__init__(parent)
self.hbox = QHBoxLayout(self)
self.myButtons = QDialogButtonBox(self)
self.hbox.addWidget(self.myButtons)
button = self.myButtons.addButton(QDialogButtonBox.Open)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
translator = QTranslator()
print translator.load("qt_ru", QLibraryInfo.location(QLibraryInfo.TranslationsPath))
app.installTranslator(translator)
ui = MyWindow()
ui.show()
sys.exit(app.exec_())
如果您需要自己的翻译,那么i18n with Qt的Produce translations部分可以为您提供帮助。您需要提供项目文件、翻译文件 (.ts) 并使用 Qt Linguist 工具。
您可以通过安装多个翻译器来混合 Qt 本身的翻译和您自己的应用程序翻译。
请注意,在加载翻译器时,您不必在文件名中添加 .qm 扩展名。