Re: [gnome-cyr] GNOME2



On Пнд, 2002-01-28 at 03:14, Dmitry G. Mastrukov Дмитрий Геннадьевич
Мастрюков wrote:
> В Пнд, 28.01.2002, в 02:29, Grumegargler написал:
> > On Сбт, 2002-01-26 at 16:51, Dmitry G. Mastrukov Дмитрий Геннадьевич
> > Мастрюков wrote:
> > > В Птн, 25.01.2002, в 22:57, Dmitry G. Mastrukov Дмитрий Геннадьевич
> > > Мастрюков написал:
> > > > В Птн, 25.01.2002, в 13:32, Timur I. Bakeyev написал:
> > > > > On Fri, Jan 25, 2002 at 01:39:14PM +0300, Valek Filippov wrote:
> > > > > 
> > > > > > > IMHO, это они ламернулись :) По-идее, LC_ALL "нэ нада" :)
> > > > > > Может пнёшь багрепортом?
> > > > > 
> > > > > Ну, проявляется не у меня - трудно описать проблему, которую не видел... Дима, может
> > > > > ты пнешь :)?
> > > > > 
> > > > Вот чего я обнаружил. В libgnomeui в файле libgnomeui/gnome-ui-init.c в
> > > > функции libgnomeui_pre_args_parse есть такой кусок
> > > > 
> > > > --- код
> > > > 
> > > >         /* Begin hack to propogate an en_US locale into Gtk+ if
> > > > LC_CTYPE=C, so that non-ASCII
> > > >            characters will display for as many people as possible.
> > > > Related to bug #1979 */
> > > >         ctype = setlocale (LC_CTYPE, NULL);
> > > > 
> > > >         if (strcmp (ctype, "C") == 0) {
> > > >                 old_ctype = g_strdup (g_getenv ("LC_CTYPE"));
> > > >                 gnome_setenv ("LC_CTYPE", "en_US", TRUE);
> > > >                 ctype_set = TRUE;
> > > >         } else {
> > > >                 ctype_set = FALSE;
> > > > 	}
> > > > 
> > > >         gsl=gtk_set_locale ();
> > > > 	g_print("Set locale: %s\n", gsl);
> > > > 
> > > >         if (ctype_set) {
> > > >                 if (old_ctype) {
> > > > 			gnome_setenv ("LC_CTYPE", old_ctype, TRUE);
> > > >                         g_free (old_ctype);
> > > >                 } else {
> > > > 			gnome_unsetenv ("LC_CTYPE");
> > > > 		}
> > > >         }
> > > >         /* End hack */
> > > > 
> > > > --- код
> > > > 
> > > > Здесь все прибамбасы, связанные с переменной gsl - мои, я хотел
> > > > проверить, что получается при вызове gtk_set_locale(). Оказалось, локаль
> > > > устанавливается в C. Других вызовов gtk_set_locale() в libgnomeui нет.
> > > > Чего-то тут не всё гладко. Хак он всегда хак.
> > > > Хорошо бы это дело Влад посмотрел.
> > > > 
> > > Похоже, баг в вызове
> > > ctype = setlocale (LC_CTYPE, NULL);
> > это строчка ничего не делает с локалью, она используется для получения
> > текущей локали для категории LC_CTYPE и далее в коде видно, зачем.
> > 
> На моей машине с локалью ru_RU.KOI8-R после этого вызова переменная
> ctype имеет значение C, что автоматически вызывает исполнение хака и
> подставление локали en_US. Если уж так хочется хака, то снечала надо
> проинициализировать локаль с либо с помощью gtk_set_locale(), либо
> заменив NULL на "".
:) третий раз пытаюсь узнать, какие именно переменные имеют значение
"ru_RU.KOI8-R".
и собственно строчка "ctype = setlocale (LC_CTYPE, NULL);" - это не хак,
а документированный способ узнать текущую локаль программы ( а не
переменных окружения ).
хак - это все, что идет ниже.
естественно, чтобы это работало, локаль должна быть предварительно
установлена вызовом setlocale с параметром "", иначе она будет "C".

я не смогу помочь, если не буду знать значения переменных окружения LC_*
и LANG.

и, так как я алфу гнома ставить и / или качать не собираюсь, интересно
было бы узнать, что там было посередине, вместо прибамбасов.
просто gtk_set_locale () ?

> 
> Дмитрий
> 
> ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЮ·┴·Щл╚≥╗╔┼x%┼к`·┴·Щл╚Ч	Х≥ОХ╝m╤÷ЪЧf╒≈Ь'╒gЪ╒╦?≥╗╔≥╘Ъ√+-┼wХЧ	Х≥Оэ
> 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]