Bug 8428 - Проблемы с русификацией
: Проблемы с русификацией
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/python-module-pygtk-libglade)
: unstable
: all Linux
: P1 critical
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2005-11-07 01:19 by
Modified: 2010-08-10 06:51 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-11-07 01:19:23
lav@:
Там что-то при запуске:
/usr/lib/meld/gnomeglade.py:46: GtkWarning: Invalid input string
self.xml = gtk.glade.XML(file, root, gettext.textdomain(), override )

И всё квадратиками в диалогах.

ktirf@:
Кто-нибудь может подтвердить проблему? У меня не воспроизводится.

thresh@:
Да, это так. Только у меня вместо квадратиков пустые места и кое-где
тэги типа <b> и <span weight=...... >
------- Comment #1 From 2005-11-07 01:20:32 -------
Ни фига себе.Ну что я могу сказать - откатитесь на версию 1.0.0 (кстати, а
она-то работает? а после пересборки в свежем Сизифе? хотя не должно влиять).
Пока источник граблей не найден. Если кто-либо, у кого проблема
воспроизводится,
сможет его найти или поможет в поисках - буду очень благодарен.
------- Comment #2 From 2005-11-07 11:50:12 -------
А у тебя в rpm -qi meld не написано, что у тебя стоит твоя сборка? :) 
------- Comment #3 From 2005-11-07 12:04:15 -------
Я его уже специально переставил из Сизифа. Всё равно не воспроизводится :(
------- Comment #4 From 2005-11-07 14:09:04 -------
shell дать? 
На самом деле надо сверять версии обвязок к python, 
может у тебя python-gtk другой или ещё что. 
------- Comment #5 From 2005-11-10 00:24:03 -------
Python-gtk у меня из Сизифа. У меня всё на эту тему из Сизифа :)
В общем, в данный момент в /i/S заливается meld-1.1.2-alt1.src.rpm, можно
попробовать его, вдруг повезет. Но я ничего на тему русификации не трогал,
вообще ничего.
------- Comment #6 From 2006-01-10 00:58:24 -------
Проблемы по-прежнему есть?
------- Comment #7 From 2006-01-26 01:11:06 -------
Проблему поймал ещё в одной программе. 
Увидеть можно только в 8-мибитной локали, 
а у тебя наверное UTF8? 
Попробуй 
LANG=ru_RU.koi8-r meld 
------- Comment #8 From 2006-06-11 20:40:45 -------
Будете собирать meld , обязательно проверьте, запустив с 
LANG=ru_RU.KOI8-R
В предыдущих версиях было пропущено что-то типа
bind_textdomain_codeset(GETTEXT_PACKAGE,"UTF-8");
в коде, из-за чего и была проблема с сообщениями.
P.S.
Там уже 1.1.4 вышла...
------- Comment #9 From 2006-06-14 13:56:05 -------
Подтверждаю.
В 1.1.4 осталось:

$ env | grep LANG
LANG=ru_RU.CP1251
$ meld
/usr/lib/meld/gnomeglade.py:46: GtkWarning: Invalid input string
  self.xml = gtk.glade.XML(file, root, gettext.textdomain(), override )

При заходе Параметров на вывод добавляется:
/usr/lib/meld/gnomeglade.py:46: GtkWarning: Failed to set label from markup due
to error parsing markup: Р&#1115;С&#8364;РёР&#177;Р&#1108;Р° Р&#1030; С&#1027;С&#8218;С&#1026;Р&#1109;Р&#1108;Р&#181; 1 Р&#1029;Р° С&#1027;РёР&#1112;Р&#1030;Р&#1109;Р&#187;Р&#181; 9:
Р&#1118;Р&#181;Р&#1108;С&#1027;С&#8218; Р·Р°Р&#1108;Р&#1109;Р&#1169;РёС&#1026;Р&#1109;Р&#1030;Р°Р&#1029; Р&#1108;Р°Р&#1108; UTF-8 Р&#1029;Р&#181;Р&#1169;Р&#1109;Р&#1111;С&#1107;С&#1027;С&#8218;РёР&#1112;С&#8249;Р&#1112;
Р&#1109;Р&#177;С&#1026;азР&#1109;Р&#1112;
  self.xml = gtk.glade.XML(file, root, gettext.textdomain(), override )
/usr/lib/meld/gnomeglade.py:46: PangoWarning: Invalid UTF-8 string passed to
pango_layout_set_text()
  self.xml = gtk.glade.XML(file, root, gettext.textdomain(), override )
/usr/lib/meld/meldapp.py:234: PangoWarning: Invalid UTF-8 string passed to
pango_layout_set_text()
  self.option_wrap_lines.set_history( self.prefs.edit_wrap_lines )
/usr/lib/meld/gnomeglade.py:108: PangoWarning: Invalid UTF-8 string passed to
pango_layout_set_text()
  gtk.main()

Ну, и, соответственно, "вопросики" в Настройках.
------- Comment #10 From 2006-07-29 20:33:08 -------
Проблема в libglade - при использовании 
 gtk.glade.XML(fname, root="", domain="" 
он переводит сообщения в кодировку локали, а сообщения выводятся потом как 
UTFные. 
проверка 
При  
$ LANG=ru_RU.UTF8 meld  
всё замечательно. 
 
------- Comment #11 From 2006-07-29 20:39:41 -------
Это проблема с  pyglade, перевесил багу. meld ни при чём. 
------- Comment #12 From 2007-09-10 13:25:09 -------
Ну тогда уж и Assigned To тоже :)
------- Comment #13 From 2008-05-22 20:19:01 -------
Сочетания кодировкой локали/программы приведены здесь:
http://freesource.info/wiki/Lokalizacija/LokalizacijaProgramm?v=90n&search=glade#h323-11
------- Comment #14 From 2008-05-27 13:11:23 -------
До исправления:

[testing@testing ~]$ meld 
/usr/lib/meld/gnomeglade.py:46: GtkWarning: Invalid input string
  self.xml = gtk.glade.XML(file, root, gettext.textdomain(), override )

После:

[testing@testing ~]$ meld
(ошибка пропала)

Само исправление следующее:

[testing@testing ~]$ diff -ur /usr/bin/meld~ /usr/bin/meld
--- /usr/bin/meld~      2008-05-27 12:35:46 +0400
+++ /usr/bin/meld       2008-05-27 13:04:54 +0400
@@ -34,11 +34,12 @@
 import paths
 import gettext
 import locale
+import gtk.glade
 
 try:
     locale.setlocale(locale.LC_ALL, '')
-    gettext.bindtextdomain("meld", paths.locale_dir() )
-    gettext.textdomain("meld")
+    gtk.glade.bindtextdomain("meld", paths.locale_dir() )
+    gtk.glade.textdomain("meld")
     gettext.install("meld", paths.locale_dir(), unicode=1)
 except (IOError,locale.Error), e:
     # fake gettext until translations in place

Правда, я не совсем уверен, насчёт корректности включения import gtk.glade в сам
meld, а не какой-нибудь из его модулей. Кроме того, у меня и до исправления
ошибки сообщения интерфейса отображались нормально, несмотря на:

[testing@testing ~]$ set | grep LANG
LANG=ru_RU.KOI8-R
LANGUAGE=ru_RU.KOI8-R:ru_RU.CP1251
------- Comment #15 From 2008-05-27 13:26:09 -------
Точнее, нужно сначала запускать метод gettext., потом -- одноимённый из
gtk.glade.

Указанный кусок кода должен выглядеть так:

    gettext.bindtextdomain("meld", paths.locale_dir() )
    gtk.glade.bindtextdomain("meld", paths.locale_dir() )
    gettext.textdomain("meld")
    gtk.glade.textdomain("meld")
------- Comment #16 From 2008-05-27 13:45:45 -------
Насколько я понимаю, это workaround вокруг проблемы pyglade?
------- Comment #17 From 2008-05-27 14:53:53 -------
Я не уверен, что это проблема самого pyglade. В других программах, которые его
используют, я ничего подобного не наблюдал. Вообще-то обычно достаточно всего
двух строк типа:

gtk.glade.bindtextdomain(...)
gtk.glade.textdomain(...)

В данном случае это приводит к тому, что локализованные сообщения вообще
пропадают (заменяются на английские). Почему -- я не знаю...
------- Comment #18 From 2009-08-09 15:03:31 -------
Этот баг ещё актуален? У меня всё работает...
------- Comment #19 From 2009-08-10 12:10:40 -------
(В ответ на комментарий №18)
> Этот баг ещё актуален? У меня всё работает...

o_O не уж-то?

ps: вообще там ru.po тихий ужос - треть где-то непереведено - я все не перевел
так как слабо в математических треминах :)
------- Comment #20 From 2010-08-05 06:10:19 -------
Сейчас ошибка воспроизводится? У меня - нет. Если проблема исчезла, багу пора
закрывать.

А насчёт перевода - это другой уже вопрос, я с переводами вовсе не дружу, тут,
наверно, надо FR вешать.
------- Comment #21 From 2010-08-10 00:20:08 -------
Я думаю, что проблема всегда была актуальна только на не-UTF-8 локалях. Можно
закрывать, видимо.
------- Comment #22 From 2010-08-10 06:51:23 -------
ok