Python Windows中GTK-GUI翻译中的非ASCII符号不工作?

Python Windows中GTK-GUI翻译中的非ASCII符号不工作?,python,localization,gtk,pygobject,pango,Python,Localization,Gtk,Pygobject,Pango,我有一个小python程序,它展示了如何在Linux和Windows上翻译GTK(pygobject)GUI。Linux中的一切都可以工作,但在Windows中,非ASCII符号不会在翻译中呈现 我假设Glade文件和*.mo文件的解码都正确,因为: 英文界面显示非ASCII符号 英文和翻译在打印语句中都显示非ASCII字符 以下是英文原版界面的外观: 以及不使用环境变量或PANGOCAIRO_BACKEND=win32的德语翻译: 使用环境变量PANGOCAIRO_BACKEND=fo

我有一个小python程序,它展示了如何在Linux和Windows上翻译GTK(pygobject)GUI。Linux中的一切都可以工作,但在Windows中,非ASCII符号不会在翻译中呈现

我假设Glade文件和*.mo文件的解码都正确,因为:

  • 英文界面显示非ASCII符号
  • 英文和翻译在打印语句中都显示非ASCII字符
以下是英文原版界面的外观:

以及不使用环境变量或
PANGOCAIRO_BACKEND=win32的德语翻译:

使用环境变量
PANGOCAIRO_BACKEND=fontconfig
PANGOCAIRO_BACKEND=fc
)的德语翻译。第一个标签设置为使用Calibri和Pango。这肯定是一种在Windows上有“ö”、“ä”和“ü”的字体

在控制台中,此警告针对翻译显示:
Pango警告**:传递到Pango\u布局\u集\u文本()的UTF-8字符串无效。

这里已经讨论了有关翻译工作的一些细节:

存储库:

Windows安装程序:


builder.set\u translation\u domain(“pygibank”)
是否可能使用错误的编码推送翻译?是否有可能调试此问题,或者是否有人知道如何修复此问题?

我通过将所有字符串设置为Unicode字符串来解决此问题。要生成Unicode字符串,请执行以下操作:
u'Unicode字符串和fünky字符'

看起来您正在使用Python 2。Python2默认使用ASCII,但是您可以通过将其放在第一行来告诉它使用Unicode

#-*-编码:utf-8-*-

这可以节省您在每个字符串前面加上
u
,如下所示,您可能会忘记这样做,从而可能会产生错误


或者,如果您转到Python 3,它默认使用Unicode,因此您也不需要这样做。

GUI字符串位于XML文件中。你把它添加到XML代码中了吗?那不是它的作用。。。它指示.py文件的编码。如果您的源代码包含UTF-8字符,则需要使用它。在Python2中,
u'
'
之间仍然有区别,而不管这个头是什么。要执行您描述的操作,您需要使用来自未来的导入unicode文本的