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-locale

Windows 安装程序:

https://www.dropbox.com/s/hyvgslafa76qppo/pygibank_2.0.exe?dl=0

builder.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 符号不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

如何从Windows 7中的非HID设备捕获USB中断?

求乱码翻译工具下载

检测到的 Windows MATLAB 上的非极大值抑制

Python中的非局部变量

re模块中的非贪婪匹配

matlab 如何找矩阵中的非零元素并替换