如何在Linux或Unix上设置语言环境(i18n)

时间:2020-01-09 10:39:43  来源:igfitidea点击:

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"

保存并关闭文件。