解决了locale导致fcitx不能用的问题

发表于:2007-07-04来源:作者:点击数: 标签:
昨天emerge了gcc 4了,顺便更新了glibc。没想到今天问题就来了。 昨天emerge了gcc 4了,顺便更新了glibc。没想到今天问题就来了。 首先是fcitx不能用了,就是说ctl-space不能输入中文了,于是我就看一下环境变量,发现locale的输入结果也有错了 #locale local
昨天emerge了gclearcase/" target="_blank" >cc 4了,顺便更新了glibc。没想到今天问题就来了。

昨天emerge了gcc 4了,顺便更新了glibc。没想到今天问题就来了。

首先是fcitx不能用了,就是说ctl-space不能输入中文了,于是我就看一下环境变量,发现locale的输入结果也有错了
#locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US
LC_CTYPE=zh_CN
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=
这种问题以前一直没遇到过,于是一顿google,终于找到了解决的办法

首先编辑 /etc/locales.build文件,加上
zh_CN.GBK/GBK
zh_CN.UTF-8/UTF-8
然后加上userlocales的USE重新emerge glibc
硬盘一通狂闪,cpu利用率狂高后,终于一切静了下来

Gentoo下我一直没找到象red hat下的i18n这样配置locale的文件
很久很久以前我用的解决方法就是直接把我要的locale写到一个文件中,譬如100i18n,然后把改文件放入/etc/env.d了事
因为我用了zh_CN.GBK的LC_CTYPE,终端下显示中文时老是有乱码
于是我就把100i18n般了家,直接改名为i18n放的/etc/下,并在文件的末尾export所用变量,文件内容如下
LANG=en_US
XIM=fcitx
LC_NUMERIC=zh_CN.GBK
LC_TIME=zh_CN.GBK
LC_CTYPE=zh_CN.GBK
XIM_PROGRAM=fcitx
XMODIFIERS="@im=fcitx"
export LANGUAGE XIM LC_NUMERIC LC_TIME LC_CTYPE XIM_PROGRAM XMODIFIERS
OK,最好在~/.xinitrc中加如一句source /etc/i18n
这样只有在X下LC_CTYPE才会是zh_CN.GBK,终端就不会有乱码了:)

OK,扯远了,回到我们的问题。
我本以为emerge玩glibc后就可以直接source /etc/i18n后重启fcitx就功德圆满了
没想到还是不行,虽然locale命令没有错误输出了,但fcitx仍不能输入中文
最后只能重启X,终于可以来这里涂鸦了:D:D

原文转自:http://www.ltesting.net