gettext 生成的阿拉伯语字符串在 Qt 中显示为乱码 UI
Arabic strings generated by gettext are shown scrambled in Qt UI
我正在使用 Qt4 和 pyside 开发多语言界面。语言在主窗体上运行良好。
我使用了两种本地化方式:
- Qt UI 文件的 Qt tr 函数
- 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
。
我正在使用 Qt4 和 pyside 开发多语言界面。语言在主窗体上运行良好。
我使用了两种本地化方式:
- Qt UI 文件的 Qt tr 函数
- 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
。