我正在使用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 方法。然而,这不起作用,字符串不会被翻译。为什么呢?