Не-ASCII символы в переводе GTK-GUI в Windows не работают?
У меня есть небольшая программа на Python, которая показывает, как выполнять перевод графических интерфейсов GTK (pygobject) для Linux и Windows. В Linux все работает, но в Windows символы не-ASCII не отображаются в переводе.
Я предполагаю, что и файл Glade, и файл *.mo декодированы правильно, потому что:
- Английский интерфейс показывает отличные от ASCII символы
- Как в английском, так и в переводах в выражениях для печати отображаются символы, не входящие в ASCII
Вот как выглядит интерфейс на английском оригинале:
![enter image description here]()
И перевод на немецкий язык без использования переменной среды или PANGOCAIRO_BACKEND=win32
:
![enter image description here]()
Перевод на немецкий язык с использованием переменной среды PANGOCAIRO_BACKEND=fontconfig
(PANGOCAIRO_BACKEND=fc
). Первая метка настроена на использование Calibri с использованием Pango. И это, безусловно, шрифт, который имеет "ö", "ä" и "ü" в Windows.
![enter image description here]()
В консоли появляется это предупреждение для перевода: Pango-Warning **: Invalid UTF-8 string passed to pango_layout_set_text()
.
Некоторые подробности о том, как заставить переводы работать, уже обсуждались здесь:
Репозиторий:
Установщик для Windows:
Возможно ли, что builder.set_translation_domain("pygibank")
выдвигает переводы с неправильной кодировкой? Можно ли это отладить или кто-нибудь знает как это исправить?
Ответы
Ответ 1
Похоже, вы используете Python 2. Python 2 по умолчанию использует ASCII, однако вы можете указать ему использовать Unicode, указав это в первой строке.
# -*- coding: utf-8 -*-
Это избавит вас от добавления префикса к каждой строке с u
, что вы можете забыть сделать, потенциально создавая ошибки.
В качестве альтернативы, если вы переходите на Python 3, он по умолчанию использует Unicode, так что вам не нужно это делать.
Ответ 2
Я решил эту проблему, выполнив все строковые строки Unicode. Чтобы создать строку Unicode, сделайте следующее: u'Unicode string with fünky charàcters'
.