Windows 中 GTK-GUI 翻译中的非 ASCII 符号不起作用?
Posted
技术标签:
【中文标题】Windows 中 GTK-GUI 翻译中的非 ASCII 符号不起作用?【英文标题】:Non-ASCII symbols in translation of GTK-GUI in Windows not working? 【发布时间】:2015-11-17 20:50:19 【问题描述】:我有一个小 Python 程序,它展示了如何为 Linux 和 Windows 翻译 GTK (pygobject) GUI。在 Linux 中一切正常,但在 Windows 中,非 ASCII 符号不会在翻译中呈现。
我假设 Glade 文件和 *.mo 文件都被正确解码,因为:
英文界面显示非ASCII符号正常 英语和翻译都在打印语句中显示非 ASCII 字符这是英文原版界面的样子:
德语翻译不使用环境变量或PANGOCAIRO_BACKEND=win32
:
使用环境变量PANGOCAIRO_BACKEND=fontconfig
(PANGOCAIRO_BACKEND=fc
) 的德语翻译。第一个标签设置为使用 Pango 使用 Calibri。这肯定是在 Windows 上具有“ö”、“ä”和“ü”的字体。
在控制台中显示此翻译警告:Pango-Warning **: Invalid UTF-8 string passed to pango_layout_set_text()
。
这里已经讨论了有关使翻译工作的一些细节:
Load GTK-Glade translations in Windows using Python/PyGObject存储库:
https://github.com/tobias47n9e/pygobject-localeWindows 安装程序:
https://www.dropbox.com/s/hyvgslafa76qppo/pygibank_2.0.exe?dl=0builder.set_translation_domain("pygibank")
是否有可能使用错误的编码推送翻译?是否可以调试此问题或有人知道如何解决此问题?
【问题讨论】:
【参考方案1】:看起来您使用的是 Python 2。Python 2 默认使用 ASCII,但是您可以通过将其放在第一行来告诉它使用 Unicode。
# -*- coding: utf-8 -*-
这可以节省您为每个字符串添加前缀 u
,如下所示,您可能会忘记这样做,从而可能会产生错误。
或者,如果你迁移到 Python 3,它默认使用 Unicode,所以你也不需要这样做。
【讨论】:
那不是它的作用......这表明 .py 文件的编码。如果您的源代码包含 UTF-8 字符,则需要它。在 Python 2 中,u''
和 ''
之间仍然存在区别,无论该标头如何。要执行您所描述的操作,您需要使用 from __future__ import unicode_literals
。【参考方案2】:
我通过将所有字符串设为 Unicode 字符串解决了这个问题。要制作 Unicode 字符串,请执行以下操作:u'Unicode string with fünky charàcters'
。
【讨论】:
GUI 字符串在一个 XML 文件中。您是否将其添加到 XML 代码中?以上是关于Windows 中 GTK-GUI 翻译中的非 ASCII 符号不起作用?的主要内容,如果未能解决你的问题,请参考以下文章