LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1723|回复: 4

如何在”C“ locale设置下,使用fcitx?

[复制链接]
发表于 2009-12-24 14:49:32 | 显示全部楼层 |阅读模式
如题,系统的locale设置为"C",并且更改非常麻烦,现在还未找到更改系统locale的办法,xlib也不接受任何对locale的更改,只使用默认的locale。
有没有办法通过更改fcitx的代码让它在这样的locale上正常运行?目前我在系统里运行fcitx可以看到它跑起来,而且跟系统里的Qt程序似乎也建立了联系,因为当我关闭Qt程序的时候fcitx也跟着退出了。但是fcitx不可使用,按ctrl-space也没有反应。
在系统里运行x11的程序,如xterm,会打印Fail open input method。
系统的中文显示是正常的,qt浏览器浏览各种中文网页都正常。

如果更改fcitx的代码可以让它在该环境下运行,请问应该改哪些地方呢?

谢谢!!
发表于 2009-12-24 15:52:39 | 显示全部楼层
感觉你的问题并不在于 locale。不过你可以先改 locale 试试。

要想以一个特定的 locale xxx 启动应用程序:

LANG=xxx fcitx

要想通过修改源代码的方式强制 locale:

找到源代码中设置 locale 的那一行代码一般是 setlocale() 函数,第二个参数修改为强制中文 locale 即可。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-24 16:09:41 | 显示全部楼层
谢谢 poet,我的系统里并没有中文的locale,强制修改为中文locale会让setlocale()返回正确么?
另外我照你写的试了下:
在shell下输入:
LANG=zh_CN fcitx
当然实际系统里并没有zh_CN的locale,运行效果仍然是fcitx跑起来但无法激活使用。
另外又试了:
LANG=en_US fcitx
效果一样。
运行xterm的打印信息如下:
[root@Samsung ~]# LANG=zh_CN.UTF-8 fcitx
[root@Samsung ~]# xterm                 
Warning: locale not supported by C library, locale unchanged
Warning: locale not supported by Xlib, locale set to C      
Warning: X locale modifiers not supported, using default   
Warning: Cannot convert string "nil2" to type FontStruct   
Warning: Unable to load any usable ISO8859 font            
Warning: Unable to load any usable ISO8859 font            
Failed to open input method
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-24 16:15:58 | 显示全部楼层
如果/usr/lib/locale/目录下有en_US和zh_CN两个目录存在,那我在setlocale()里强制设置zh_CN能使fcitx成功运行么?fcitx的setlocale都需要干些什么啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-24 16:58:28 | 显示全部楼层
我已经将glibc的locale改为zh_CN.UTF-8,locale和localedef命令也编译进系统可以使用了,但是仍然因为xorg不接受locale的设置,fcitx还是不能使用。现在xterm的输出如下:
Warning: locale not supported by Xlib, locale set to C
Warning: X locale modifiers not supported, using default
Warning: Cannot convert string "nil2" to type FontStruct
Warning: Unable to load any usable ISO8859 font
Warning: Unable to load any usable ISO8859 font
Failed to open input method

不再有Warning: locale not supported by C library, locale unchanged,说明glibc已经更改并设置好locale了,xorg的locale,又该如何改?

fcitx必须要locale设为zh_CN.****才能工作么?有什么办法可以替代?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表