2006/12/27

控制Ubuntu的多语言

Linux系统的开放在多语言方面体现的非常明显,Ubuntu下关于语言(locale)的设置可以得到很多不同的组合效果,胜过Windows。

Linux下应用程序的多语言能力是动态的,也就是说同一个应用程序的同一个版本,就可以支持多种语言,Windows也可以做到这一点,但Windows做到这一点是依赖于应用程序,而Linux是整个系统的统一行为。Linux下语言或者说locale的切换取决于环境变量,最重要的几个变量是: LANG,LANGUAGE,LC_xxxx等,其中LC_xxx是一组变量,控制本地化的方方面面,比如LC_TIME控制时间格式,LC_CTYPE控制字符集,而为了方便,设置了LANG变量,当LC_xxx没有设置时,就自动参考LANG,另外设置了LC_ALL变量,替代所有LC_xxx变量,所以这些变量之间是有优先级的: LC_ALL > LC_xxx > LANG,而LANGUAGE是一个独立的变量,有些应用需要使用它决定用户界面语言。所以像这样设置
LANGUAGE=en_US
LANG=en_US.UTF-8
LC_CTYPE=zh_CN.UTF-8
就可以得到英文的系统,但仍然可以使用SCIM输入中文,重点在于LC_CTYPE,因为LANG已经设置到英文(相当于所有的LC_xxx设置到了英文),如果不设置字符集(LC_CTYPE),就不能调出中文输入法。而同时LANG的值也一定要指明UTF-8,很多软件依赖这个来决定当前编码,比如Gnome的终端。

没有评论: