Summary: | Проблемы с русификацией | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Alexey Rusakov <ktirf> |
Component: | python-module-pygtk-libglade | Assignee: | Vitaly Lipatov <lav> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | critical | ||
Priority: | P1 | CC: | antohami, cas, cow, evg, george, grenka, imz, kotopesutility, lav, mutabor, nbr, qa_viy, real.altlinux.org, rider, sem, shaba, sin, slev, thresh, toni, vitty, viy |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Alexey Rusakov
2005-11-07 01:19:23 MSK
Ни фига себе.Ну что я могу сказать - откатитесь на версию 1.0.0 (кстати, а она-то работает? а после пересборки в свежем Сизифе? хотя не должно влиять). Пока источник граблей не найден. Если кто-либо, у кого проблема воспроизводится, сможет его найти или поможет в поисках - буду очень благодарен. А у тебя в rpm -qi meld не написано, что у тебя стоит твоя сборка? :) Я его уже специально переставил из Сизифа. Всё равно не воспроизводится :( shell дать? На самом деле надо сверять версии обвязок к python, может у тебя python-gtk другой или ещё что. Python-gtk у меня из Сизифа. У меня всё на эту тему из Сизифа :) В общем, в данный момент в /i/S заливается meld-1.1.2-alt1.src.rpm, можно попробовать его, вдруг повезет. Но я ничего на тему русификации не трогал, вообще ничего. Проблемы по-прежнему есть? Проблему поймал ещё в одной программе. Увидеть можно только в 8-мибитной локали, а у тебя наверное UTF8? Попробуй LANG=ru_RU.koi8-r meld Будете собирать meld , обязательно проверьте, запустив с LANG=ru_RU.KOI8-R В предыдущих версиях было пропущено что-то типа bind_textdomain_codeset(GETTEXT_PACKAGE,"UTF-8"); в коде, из-за чего и была проблема с сообщениями. P.S. Там уже 1.1.4 вышла... Подтверждаю. В 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: Ошибка РІ строке 1 РЅР° символе 9: Текст закодирован как UTF-8 недопустимым образом 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() Ну, и, соответственно, "вопросики" в Настройках. Проблема в libglade - при использовании gtk.glade.XML(fname, root="", domain="" он переводит сообщения в кодировку локали, а сообщения выводятся потом как UTFные. проверка При $ LANG=ru_RU.UTF8 meld всё замечательно. Это проблема с pyglade, перевесил багу. meld ни при чём. Ну тогда уж и Assigned To тоже :) Сочетания кодировкой локали/программы приведены здесь: http://freesource.info/wiki/Lokalizacija/LokalizacijaProgramm?v=90n&search=glade#h323-11 До исправления: [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 Точнее, нужно сначала запускать метод gettext., потом -- одноимённый из gtk.glade. Указанный кусок кода должен выглядеть так: gettext.bindtextdomain("meld", paths.locale_dir() ) gtk.glade.bindtextdomain("meld", paths.locale_dir() ) gettext.textdomain("meld") gtk.glade.textdomain("meld") Насколько я понимаю, это workaround вокруг проблемы pyglade? Я не уверен, что это проблема самого pyglade. В других программах, которые его используют, я ничего подобного не наблюдал. Вообще-то обычно достаточно всего двух строк типа: gtk.glade.bindtextdomain(...) gtk.glade.textdomain(...) В данном случае это приводит к тому, что локализованные сообщения вообще пропадают (заменяются на английские). Почему -- я не знаю... Этот баг ещё актуален? У меня всё работает... (В ответ на комментарий №18) > Этот баг ещё актуален? У меня всё работает... o_O не уж-то? ps: вообще там ru.po тихий ужос - треть где-то непереведено - я все не перевел так как слабо в математических треминах :) Сейчас ошибка воспроизводится? У меня - нет. Если проблема исчезла, багу пора закрывать. А насчёт перевода - это другой уже вопрос, я с переводами вовсе не дружу, тут, наверно, надо FR вешать. Я думаю, что проблема всегда была актуальна только на не-UTF-8 локалях. Можно закрывать, видимо. ok |