LinuxSir.cn,穿越时空的Linuxsir!

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

稍加改动,让fcitx运行与en_US.UTF-8

[复制链接]
发表于 2004-1-17 11:53:47 | 显示全部楼层 |阅读模式
其实fcitx对于utf-8的支持已经很不错了,不过在程序启动的时候,检查 locale 是否是 zh_CN.UTF8 或着 zh_CN.UTF-8 来启动 utf8 支持。

改动 SetLocale.c, 第 23 行.

原来:
if(!strcasecmp(strDefaultLocale, "zh_CN.UTF8" || ........

改为:

if (strstr (strDefaultLocale, "UTF-8")) bIsUtf8 = True;

这样,只要设置的 locale 中有 UTF-8 就会启动UTF-8 模式。

要注意的是,gtk 程序会检查 CHARSET 环境变量,对于UTF-8, 要

export CHARSET=UTF-8;
export LC_CTYPE=en_US.UTF-8;

改动以后,所有的程序都是英文界面,但是可以用fcitx 输入中文。我在gaim和xterm中测试成功。
发表于 2004-1-19 08:51:20 | 显示全部楼层
谢谢,已经放进我的代码中了……
发表于 2004-1-19 13:11:55 | 显示全部楼层
NO, 我觉得不应该做这样的改动
正确的在英文环境下使用中文输入的方法,应该是
  1. export LANG=en_US.UTF-8
  2. export LC_CTYPE=zh_CN.UTF-8
复制代码

而当LC_CTYPE被设为英文时就不应该接受中文输入。
发表于 2004-1-19 13:23:44 | 显示全部楼层
最初由 carlos 发表
NO, 我觉得不应该做这样的改动
正确的在英文环境下使用中文输入的方法,应该是
  1. export LANG=en_US.UTF-8
  2. export LC_CTYPE=zh_CN.UTF-8
复制代码

而当LC_CTYPE被设为英文时就不应该接受中文输入。


No! 这也不太对。

正确的在中文环境下使用英文界面的方法:

LANG=zh_CN.UTF-8
LC_CTYPE=zh_CN.UTF-8
LC_MESSAGES=en_US
unset LC_ALL
发表于 2004-1-20 00:27:07 | 显示全部楼层
学了这么多天我终于能用linux打字了!!
发表于 2004-1-21 00:03:31 | 显示全部楼层
最初由 james_su 发表
No! 这也不太对。

正确的在中文环境下使用英文界面的方法:

LANG=zh_CN.UTF-8
LC_CTYPE=zh_CN.UTF-8
LC_MESSAGES=en_US
unset LC_ALL


我说的是在英文环境里输入中文
不是在中文环境下使用英文界面
小有区别
对生活在国外的人来说,需要的是全套外文设置,而不仅仅是一个LC_MESSAGES。
如果设置LANG=zh_CN;LC_MESSAGES=en_US,不仅有些程序界面依然会出现中文,而且一些时间数字的设置也都变成了中文习惯。

to Yuking,
我个人觉得,不应该做这种无意义的也不符合标准的改动。
发表于 2004-1-22 10:18:47 | 显示全部楼层
我的设置
  1. $ locale
  2. LANG=en_US.iso88591
  3. LC_CTYPE=zh_CN.gbk
  4. LC_NUMERIC=en_US.iso88591
  5. LC_TIME=en_US.iso88591
  6. LC_COLLATE=en_US.iso88591
  7. LC_MONETARY=en_US.iso88591
  8. LC_MESSAGES=en_US.iso88591
  9. LC_PAPER=en_US.iso88591
  10. LC_NAME=en_US.iso88591
  11. LC_ADDRESS=en_US.iso88591
  12. LC_TELEPHONE=en_US.iso88591
  13. LC_MEASUREMENT=en_US.iso88591
  14. LC_IDENTIFICATION=en_US.iso88591
  15. LC_ALL=
复制代码
发表于 2004-1-22 15:11:18 | 显示全部楼层
最初由 carlos 发表
我说的是在英文环境里输入中文
不是在中文环境下使用英文界面
小有区别
对生活在国外的人来说,需要的是全套外文设置,而不仅仅是一个LC_MESSAGES。
如果设置LANG=zh_CN;LC_MESSAGES=en_US,不仅有些程序界面依然会出现中文,而且一些时间数字的设置也都变成了中文习惯。

to Yuking,
我个人觉得,不应该做这种无意义的也不符合标准的改动。


英文环境里输入中文,标准做法就是使用 en_US.UTF-8 locale。然后让输入法支持这个 locale。
发表于 2004-1-22 23:31:52 | 显示全部楼层
最初由 james_su 发表
英文环境里输入中文,标准做法就是使用 en_US.UTF-8 locale。然后让输入法支持这个 locale。

那还要LC_CTYPE有什么用?
发表于 2004-1-23 04:03:30 | 显示全部楼层
究竟什么是"标准做法"?你们是在告诉人家什么是"标准",还是在说"我就是标准"?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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