gettext 生成的阿拉伯语字符串在 Qt 中显示为乱码 UI

Arabic strings generated by gettext are shown scrambled in Qt UI

我正在使用 Qt4 和 pyside 开发多语言界面。语言在主窗体上运行良好。

我使用了两种本地化方式:

  1. Qt UI 文件的 Qt tr 函数
  2. python 脚本和 Jinja2 html 模板的 Gettext

当我显示带有 gettext 翻译字符串的 Qt 对话框时,阿拉伯字符串显示为乱码。

产生问题的代码:

mb = QtGui.QMessageBox(QtGui.QMessageBox.Warning, _(u"Applying skin"), _(u"You should restart application in order for the skin to take effect"), buttons = QtGui.QMessageBox.Ok)
ret = mb.exec_()

我自己无法测试,但请尝试:

gettext.install('myapp', unicode=True)

或者如果这不起作用,请尝试:

_ = gettext.translation('myapp').ugettext

问题似乎是 Python2 中的默认值是 gettext 到 return bytes 而不是 unicode