如何在Linux或Unix上设置语言环境(i18n)
Linux操作系统上的语言环境是什么?如何在Linux操作系统上设置或获取本地(i18n)值?语言环境为您的程序和Shell会话定义语言和国家/地区特定的设置。您可以在Linux或类似Unix的系统上使用语言环境查看日期,时间,数字,货币和其他按照您的国家或语言格式设置的值。要设置系统区域设置,您需要使用shell变量。
例如,LANG变量可用于设置en_US(美国英语)语言。
本教程显示如何在Linux或Unix操作系统上设置语言环境(i18n)。
如何在Linux或Unix上显示当前的语言环境设置?
语法为:
locale locale name locale [options] name
locale命令在屏幕上显示有关当前语言环境或所有语言环境的信息。
语言环境命令示例
显示Linux或Unix上的当前语言环境
只需执行以下命令:
$ locale
显示您的Linux或类Unix系统上的所有可用语言环境
将-a选项传递给locale命令:
$ locale -a
输出示例:
C C.UTF-8 en_IN en_IN.utf8 POSIX
您还可以在基于Debian或Ubuntu的系统上运行以下命令,以查看所有支持的语言环境的列表:
$ less /usr/share/i18n/SUPPORTED
输出示例:
aa_DJ.UTF-8 UTF-8 aa_DJ ISO-8859-1 aa_ER UTF-8 aa_ER@saaho UTF-8 aa_ET UTF-8 af_ZA.UTF-8 UTF-8 af_ZA ISO-8859-1 ak_GH UTF-8 am_ET UTF-8 an_ES.UTF-8 UTF-8 an_ES ISO-8859-15 anp_IN UTF-8 ar_AE.UTF-8 UTF-8 ar_AE ISO-8859-6 ar_BH.UTF-8 UTF-8 ar_BH ISO-8859-6 ar_DZ.UTF-8 UTF-8 .... ... el_CY ISO-8859-7 en_AG UTF-8 en_AU.UTF-8 UTF-8 en_AU ISO-8859-1 en_BW.UTF-8 UTF-8 en_BW ISO-8859-1 en_CA.UTF-8 UTF-8 en_CA ISO-8859-1 en_DK.UTF-8 UTF-8 en_DK.ISO-8859-15 ISO-8859-15 en_DK ISO-8859-1 en_GB.UTF-8 UTF-8 en_GB ISO-8859-1 en_GB.ISO-8859-15 ISO-8859-15 en_HK.UTF-8 UTF-8 en_HK ISO-8859-1 en_IE.UTF-8 UTF-8 en_IE ISO-8859-1 en_IE@euro ISO-8859-15 en_IN UTF-8 ... ..... zh_CN.GB18030 GB18030 zh_CN.GBK GBK zh_CN GB2312 zh_HK.UTF-8 UTF-8 zh_HK BIG5-HKSCS zh_SG.UTF-8 UTF-8 zh_SG.GBK GBK zh_SG GB2312 zh_TW.UTF-8 UTF-8 zh_TW.EUC-TW EUC-TW zh_TW BIG5 zu_ZA.UTF-8 UTF-8 zu_ZA ISO-8859-1
区域设置类别部分
POSIX定义了以下类别部分:
- LC_CTYPE
- LC_COLLATE
- LC_MESSAGES
- LC_MONETARY
- LC_NUMERIC
- LC_TIME
例如:
locale -c -k LC_NUMERIC
有关所有关键字和选项的更多信息,请参见locale(5)的手册页:
man 5 locale
在CentOS/RHEL/Scientific Linux v5.x/6.x及更低版本上查看/设置所有用户的全局语言环境
编辑或查看/etc/sysconfig/i18n为所有用户设置全局语言环境:
$ sudo cat /etc/sysconfig/i18n
或者
$ sudo vi /etc/sysconfig/i18n
输出示例:
LANG="en_US.UTF-8" SUPPORTED="en_IN.utf8:en_IN:en_US.UTF-8:en_US:en" SYSFONT="latarcyrheb-sun16"
您还可以编辑/etc/profile
并为所有用户设置全局语言环境:
LANG="en_IN.utf8" export LANG
在Fedora Linux v22和CentOS/RHEL/Scientific Linux 7.x及更高版本上查看/设置所有用户的全局语言环境
执行以下命令以查看所有用户的当前语言环境:
$ cat /etc/locale.conf
输出示例:
LANG="en_IN.UTF-8"
您也可以使用以下systemd命令:
$ localectl status
输出示例:
System Locale: LANG=en_IN.UTF-8 VC Keymap: in-eng X11 Layout: in X11 Variant: eng
要查看所有可用的语言环境,请运行:
$ localectl list-locales
要为所有用户设置默认的全局系统区域设置,请以超级用户身份执行以下命令:
$ sudo localectl set-locale LANG=localeValueHere $ sudo localectl set-locale LANG=en_IN.UTF-8
查看/设置Debian或Ubuntu Linux上所有用户的全局语言环境
要查看Debian/Ubuntu支持哪些语言环境,请执行:
$ locale -a|more
要为所有用户设置语言环境,请执行:
$ sudo locale-gen en_IN $ sudo locale-gen en_IN.UTF-8
最后运行:
$ sudo update-locale
另一种选择是运行" dpkg-reconfigure locales"命令并选择要生成的语言环境。
最后,系统会询问您默认哪个。
如果您有通过ssh访问系统的用户,建议您选择None作为默认语言环境:
$ sudo dpkg-reconfigure locales
如何为一个用户设置全局语言环境?
只需编辑您的bash shell配置文件$HOME/.bash_profile:
$ vi ~/.bash_profile
追加/添加/编辑如下:
LANG="en_IN.utf8" export LANG
或为用户$HOME目录创建一个新的.i18n文件:
$ vi $HOME/.i18n
根据您的语言环境设置添加/添加/编辑以下内容:
LANG="en_US.UTF-8" SUPPORTED="en_IN.utf8:en_IN:en_US.UTF-8:en_US:en" SYSFONT="latarcyrheb-sun16"
保存并关闭文件。