在构造函数之外使用PySide进行翻译

时间:2014-03-12 10:32:47

标签: python qt internationalization

我正在使用pySide并尝试国际化我的项目。问题是,如果我不通过构造函数翻译它们,则不会翻译任何字符串。 我想在其他方法中翻译字符串。可能是什么问题?

这是我的模块:

    class InterpolationView(QWidget):

     def __init__(self, parent=None, flags=Qt.Widget):
       super(InterpolationView, self).__init__(parent, flags)
       load_ui('ui/wizards/interpolation/interpolation_view.ui', self)
       self.stepGroupBox.setTitle(Dictionary.map_interpolation_view["step_planning"])

我从 init 方法中注入的 .ui 文件翻译我的字符串。翻译来自名为 Dictionary 的模块,其中包含所有必要的翻译:

    class Dictionary(object):

       map_interpolation_view = None

     def __init__(self):
       super(Dictionary, self).__init__()
       self.initialize_dictionary()

     def initialize_dictionary(self):
       Dictionary.map_interpolation_view = dict()
       Dictionary.map_interpolation_view["step_planning"] = QApplication.translate("Dictionary", "Step Planning")

词典 MyPlugin 模块中初始化,这是一个python插件。这也是我初始化我的翻译器的地方。

    class MyPlugin(Plugin):

def __init__(self, context):
    super(MyPlugin, self).__init__(context)
    translate_to_german = True
    if(translate_to_german):
        translator = load_translation('de')
        application = QCoreApplication.instance()
        application.installTranslator(translator)
    self.__dictionary = Dictionary()

我想摆脱这个特殊的 Dictionary 模块,只需翻译这样的字符串:

    class InterpolationView(QWidget):

     def __init__(self, parent=None, flags=Qt.Widget):
       super(InterpolationView, self).__init__(parent, flags)
       load_ui('ui/wizards/interpolation/interpolation_view.ui', self)


     def translate(self):
       self.stepGroupBox.setTitle(QApplication.translate("InterpolationView", "Step Planning"))

并且可以从任何其他类调用 translate 方法。然而,这不起作用,字符串不会被翻译。为什么呢?

0 个答案:

没有答案