Windows中GTK-GUI翻译中的非ASCII符号不起作用?

时间:2015-08-24 12:18:53

标签: python localization gtk pygobject pango

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

我认为Glade文件和* .mo文件都被正确解码,因为:

  • 英文界面显示非ASCII符号
  • 英语和翻译在print-statements中显示非ASCII字符

以下是英文原版中的界面:

enter image description here

德语翻译不使用环境变量或PANGOCAIRO_BACKEND=win32

enter image description here

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

enter image description here

在控制台中,此警告会显示翻译:{{1​​}}。

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

存储库:

Windows安装程序:

Pango-Warning **: Invalid UTF-8 string passed to pango_layout_set_text()是否可能使用错误的编码推送翻译?可以调试这个,还是有人知道如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

# -*- coding: utf-8 -*-

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

或者,如果您迁移到Python 3,则默认情况下它使用Unicode,因此您无需执行任何操作。

答案 1 :(得分:-1)

我通过制作所有字符串Unicode字符串来解决这个问题。要创建Unicode字符串,请执行以下操作:u'Unicode string with fünky charàcters'