apeter_2000 发表于 2005-12-23 16:09:23

Nautilus 2.12.0 界面经常变成英文的?

Nautilus 好像不愿意界面汉化似的,总是莫名其妙的变成英文的。
注销后,恢复正常。

Why isthis :?:

ps:
同时在 Ubuntu 和 SusE上面注意到这个现象。

黑企鹅 发表于 2005-12-24 00:18:36

我也遇到了。 :neutral:

hzhr 发表于 2005-12-25 09:56:27

我碰到的情况是,安装了totem-xine,启用了Nautilus的totem-properties插件,然后随便查看一个影音文件的属性,之后就出这种情况了。

mandrakechina 发表于 2005-12-25 10:28:18

如何重现?我也玩玩,看nautilus 2.13中有没有。

lincomet 发表于 2005-12-25 15:17:20

我也在ubuntu下遇到了这个情况。倒是一直想注意一下激发的条件。

midx 发表于 2005-12-25 20:48:01

我也常碰到,killall nautilus一下就好了。按hzhr的说法查看一下某个mp3文件的属性,关闭文件管理器再重新打开,果然...

hzhr 发表于 2005-12-25 23:01:31

Dammit! 可能是某些与samba相关的操作。我碰到的情况是xine-lib支持samba协议,有个插件 xineplug_inp_smb.so,而totem使用libxine,结果totem老是被重置到英文 locale,同样也影响了 Nautilus。去掉 xineplug_inp_smb.so 不加载,正常。
查了一下samba的源代码,发现了下面的某位牛人写的代码,在samba源代码的 source/lib/charcnv.c 文件中:

/**
* Return the name of a charset to give to iconv().
**/
static const char *charset_name(charset_t ch)
{
      const char *ret = NULL;

      if (ch == CH_UCS2) ret = "UTF-16LE";
      else if (ch == CH_UNIX) ret = lp_unix_charset();
      else if (ch == CH_DOS) ret = lp_dos_charset();
      else if (ch == CH_DISPLAY) ret = lp_display_charset();
      else if (ch == CH_UTF8) ret = "UTF8";

#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
      if (ret && !strcmp(ret, "LOCALE")) {
                const char *ln = NULL;

#ifdef HAVE_SETLOCALE
                setlocale(LC_ALL, "");
#endif
                ln = nl_langinfo(CODESET);
                if (ln) {
                        /* Check whether the charset name is supported
                           by iconv */
                        smb_iconv_t handle = smb_iconv_open(ln,"UCS-2LE");
                        if (handle == (smb_iconv_t) -1) {
                              DEBUG(5,("Locale charset '%s' unsupported, using ASCII instead\n", ln));
                              ln = NULL;
                        } else {
                              DEBUG(5,("Substituting charset '%s' for LOCALE\n", ln));
                              smb_iconv_close(handle);
                        }
                }
                ret = ln;
      }
#ifdef HAVE_SETLOCALE
      /* We set back the locale to C to get ASCII-compatible toupper/lower functions.
         For now we do not need any other POSIX localisations anyway. When we should
         really need localized string functions one day we need to write our own
         ascii_tolower etc.
      */
      setlocale(LC_ALL, "C");
#endif

#endif

      if (!ret || !*ret) ret = "ASCII";
      return ret;
}


上面两个 setlocale 都不该用,特别是第二个使用的有问题。
这位牛人似乎考虑到了未来的某件事,结果一不小心对现在造成了影响。

ryandol 发表于 2005-12-26 14:15:35

我也遇到了,在ubuntu 5.10下。

yangh 发表于 2005-12-26 14:42:21

呵呵,我这里照上面操作也重现了。 :-)谁去提交 bug ?:mrgreen:

mandrakechina 发表于 2005-12-26 17:25:46

这样看来,这个问题似乎应该是samba的bug:?::?:

midx 发表于 2005-12-26 17:52:58

用gentoo就好办得多,USE=-samba重新编译xine-lib果然就没事了。bug定位这么准,hzhr也是姓牛的吧?

hzhr 发表于 2005-12-27 22:08:10

这样看来,这个问题似乎应该是samba的bug:?::?:
刚去查了一下,发现已经有人提这个问题了,问题原因现象与这里一致。
https://bugzilla.samba.org/show_bug.cgi?id=2926
不过好像是8月份就提了,最近才开始有人关注,希望不久就会解决。

yangh 发表于 2005-12-28 10:50:43

大家去顶,顶到解决为止。 :mrgreen:

x11_yao 发表于 2005-12-29 10:27:59

没想到是samba......


//这个,有进展了?

//Check out SVN revision 12522 in SAMBA_3_0 or revision 12521 in HEAD to check
//out the fix I've added for this bug.
//Should be fixed as I've removed the setlocale call in lib/charcnv.c and
//modified all the toupper/tolower/isupper/islower calls to be _ascii versions.
//Please let me know if this fixes the problem.
//Jeremy.

yangh 发表于 2006-3-29 09:21:20

这个问题已经解决,详见:

https://bugzilla.samba.org/show_bug.cgi?id=2926

:mrgreen::mrgreen:
页: [1] 2
查看完整版本: Nautilus 2.12.0 界面经常变成英文的?