LinuxSir.cn,穿越时空的Linuxsir!

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

Fedora Core 4英文界面下,调用系统默认的中文输入法chinput(欢迎大家调试)

[复制链接]
发表于 2007-1-16 17:15:35 | 显示全部楼层 |阅读模式
免责声明:这是我在Linuxsir的处女贴,如果主题对不上号,还请版主见谅,如有可能,帮我移到正确的地方.谢谢

测试环境:FC4,Gnome
步骤(请确保你安装了中文字体)
1)建立文件,名为en_US的文本文件,内容如下:
  XIM=iiimx
  XIM_PROGRAM=iiimx
  GTK_IM_MODULE=iiim
  gnome-im-settings-daemon >/dev/null
  #QT_IM_MODULE=iiimqcf
2)把刚建立的文件放入文件夹/etc/X11/xinit/xinput.d
3)确认文件/etc/sysconfig/i18n的内容为(不是的话,建议自己修改):
  LANG="en_US.UTF-8"
  SYSFONT="latarcyrheb-sun16"
  SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
4)注消后进入Xwindows后在终端运行命令:
  # /etc/X11/xinit/xinitrc.d/xinput.sh
恭喜你,complete!点击输入法切换图标(一般在右上角)En,你会发现这样的popup:
  *********************
  中文(简体)(A)
  latin(B)
  -----------
  ASCII(O)
  Add or Remove...(Z)
  *********************
Cangrats!!!!鼠标选择中文(简体),以后你可以自由驰骋在English Version下啦..Enjoy yourself
如果没有见到上面的东东,试试下面的命令:
  # /etc/init.d/iiim restart
  # /etc/X11/xinit/xinitrc.d/xinput.sh

小小强调一下(建议):
   LANG="en_US.UTF-8"是我建议的,如果是zh_CN.UTF-8(gbk)的话,再选en_US进入,一些系统程序会出现中文乱码比如终端**(少数命令,比如,/etc/init.d/iiim restart会出现乱码).如果是en_US的话,一些中文字符会是乱马,比如fat32,ntfs文件系统中的含中文的文件(夹).(我目前只遇到这些情况,如果有更好的选择,请一定第一个告诉我^_^,我的邮箱ll1042003@yahoo.com.cn).

**当我设置成zh_CN.gdk,以英文界面进入的时候,少数命令在终端就会出现乱码,很明显是中文字符(可以设置字体解码验证),但我locale看,全是en_US,由此猜测:
    开始有个默认字体已经把系统初始化了,如果发现选择进入的系统的字体不是默认的,就会自动按要求初始话.但有些命令却得不到再一次 初始化(bug?),就是我遇见某些命令的乱码了(不充分的证明:不是按默认的语言进入,初始化要慢一点)

关于含有中文应用(服务)程序的中文乱码的一个建议修改方案:
    我的建议是该启动脚本,比如gftp:
    改文件:/usr/bin/gftp 为(我的参考文件)
******************************************************************
  #!/bin/sh
  export LANG=zh_CN  #我增添的一行
  prefix=/usr
  exec_prefix=/usr

  if [ "$DISPLAY " != " " ] && [ -f /usr/bin/gftp-gtk ]; then
        exec /usr/bin/gftp-gtk ${1+"$@"}
  elif [ -f /usr/bin/gftp-text ]; then
        exec /usr/bin/gftp-text ${1+"$@"}
  else
        echo "Error: Can't find gFTP binaries installed in /usr/bin"
  fi
*******************************************************************
   这样,改动的只是单个程序
还有很多关于中文应用程序(服务程序)的问题,我才装linux几天,很多东西还没有遇见过,此设置没有经过多方验证,还要请大家来一起解决

如果对我怎么发现这个东东的感兴趣,继续让我罗嗦下去
    我开始装的是没有中文字体的英文系统,由于是第一次装linux,进入系统才发现没有中文输入法.后来添加了中文支持,选择中文语言进入系统才能输入中文.没有想到,很多地方,感觉翻译得不和我的胃口,怪怪的~_~.我就准备在原有的英文界面下添加中文输入法,我在linuxsor这里看到了Fcitx,在英文界面下安装,也可以用了.不过,对于我这个本来拼音不好的人,组词能力不强的Fcitx(不好意思,只是我个人的感觉,或者我没有发挥出软件应有的功能,如有冒犯,还请见谅),一会就让我萌生了添加chinput的念头.接着就是断断絮絮的在网上搜资料文章了
    几天无果...
    没有办法,自己综合信息,慢慢研究...猜测输入法的启动,大概应该是一个初始化程序去判断系统的某个文件,然后根据返回的结果加载输入法.后来发现,/etc/X11/xinit/,/etc/sysconfig/i18n这两个文件(夹)对输入法的加载有影响.试着改动,分析,改动,分析...就形成了现在这个设置.
    如果,有更好的方法,请一定告诉我

PostScript:才开始学习linux,在linuxsir中学到很多基础的东西,感谢一下beinan和一些无名热心者
发表于 2007-1-16 18:15:09 | 显示全部楼层
精神值得支持,现在新的系统已经不在需要做这些工作了。

GBK,不是gdk
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-16 20:19:51 | 显示全部楼层
Post by cobranail
精神值得支持,现在新的系统已经不在需要做这些工作了。

GBK,不是gdk

谢谢.....
主要是学校的校园网只有Fedora Core4,比较懒得外面下,只有装个版本比较低的了...~_~....
FC4在给我制造麻烦的同时,让我学到了很多
回复 支持 反对

使用道具 举报

发表于 2007-1-16 23:22:29 | 显示全部楼层
不错不错,你的解决方案真的好详细.
不过Fedora的中文支持越来越好了,从FC6开始英文界面下自动支持中文输入.
我很喜欢英文界面,字体非常漂亮,不发虚,但是UTF-8格式的中文文件名或文件路径都会显示乱码,我把我的/etc/sysconfig/i18n改成
  1. LANG="en_US.UTF-8"
  2. SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
  3. SYSFONT="latarcyrheb-sun16"
  4. SYSFONTACM="utf8"
复制代码
一切搞定,不过唯一的缺点是非UTF-8的中文文本内容显示为乱码,还没有解决,只是了解不够而已.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-17 00:06:49 | 显示全部楼层
谢谢你的鼓励
Post by qisuker

一切搞定,不过唯一的缺点是非UTF-8的中文文本内容显示为乱码,还没有解决,只是了解不够而已.

  在什么地方显示?
  查看文本的话,文本编辑器应该可以选择set character encoding类似的选项吧
  大多数程序也有字体解码集的选项
  "还没有解决,只是了解不够而已"的态度,赞一个
  还有就是,这个论坛支持哪些tag?我没有看见code的tag,但看见你用了.我猜测基础的应该都支持吧.论坛也没有明确说明.我漏看了?
回复 支持 反对

使用道具 举报

发表于 2007-1-17 00:14:21 | 显示全部楼层
呵呵,我在论坛帮助里自己找到的,满好用的
http://www.linuxsir.cn/bbs/misc.php?do=bbcode

对啊,谢谢你,恩,应该是set character encoding,我一般用vi和gedit,里面没有encoding的setting,不过确实应该是这方面的问题,谢谢.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-17 18:34:36 | 显示全部楼层
呵呵,谢谢,我在帮助里面怎么半天都看不见这个话题..~_~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-17 23:22:59 | 显示全部楼层
Post by qisuker

对啊,谢谢你,恩,应该是set character encoding,我一般用vi和gedit,里面没有encoding的setting,不过确实应该是这方面的问题,谢谢.

我也没有在gedit里找到encoding之类的选项.
你试试用脚本启动,我给你写了个,你看看能不能解决
  1. #!/bin/sh
  2. export charset=zh_CN.gb2312 #这里为你要选择的解码集
  3. prefix=/usr
  4. exec_prefix=/usr

  5. if [ "$DISPLAY " != " " ] then
  6.         exec /usr/bin/gedit ${1+"$@"}
  7. else
  8.         echo "Error: Can't find gedit binaries installed in /usr/bin"
  9. fi
复制代码

另存为一个你喜欢的名字,放在/usr/bin里面,这样就可以从命令行里启动了..记住:属性必须为可执行(我的机子上无法测试,应为我的gedit可以解读非utf8的中文字符)
回复 支持 反对

使用道具 举报

发表于 2007-1-18 11:53:41 | 显示全部楼层
哦,原来可以这样解决,谢谢你!
不过我执行你的shell的时候,总是报错:
  1. /usr/bin/cngedit: line 8: syntax error near unexpected token `else'
  2. /usr/bin/cngedit: line 8: `else'
复制代码
改了很多也不行(-_-''寒假一定要狂补shell)
不过谢谢,我可以用vi打开非utf8的中文内容,只是gedit不行.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-18 15:48:29 | 显示全部楼层
呵呵,不好意思,我平时写程序也是,总是丢三那四的.....

if [ "$DISPLAY " != " " ]; then #开始少了个';'

很有可能它没有定义一个charset变量(我开始猜乱猜的),如果这样还不行的话,就在前面加个

export LANG=zh_CN
回复 支持 反对

使用道具 举报

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

本版积分规则

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