Skip to content

06 语言和语系

修改当前 Shell 的语言

bash
export LANGUAGE=en_US.UTF-8

很多资料写的是 LANG,我试过,这个变量已经失效了,其功能已经被 LANGUAGE 取代。

没有 en_US.utf8 语系

bash
binzz@C7VF:~$ locale -a  # 查看已安装的语系
C           # 默认的最小化 locale,使用 ASCII 字符集,适用于简单的英文环境。
C.utf8      # 类似 C,但支持 UTF-8 编码,能处理基本的 Unicode 字符。
POSIX       # 与 C 完全相同的传统标准 locale,用于兼容性。
zh_CN.utf8  # 简体中文(中国),UTF-8 编码,支持中文字符和区域格式(如日期、货币)。
zh_SG.utf8  # 简体中文(新加坡),UTF-8 编码,类似 zh_CN 但可能包含新加坡特定的区域设置。
binzz@C7VF:~$

解决方案:

bash
sudo locale-gen en_US.UTF-8
  • locale:语系
  • gen:generate(v.产生,生成)这个单词的前三个字母

或者,进行如下步骤,剖析上面一句的原理。

  1. 打开/etc/locale.gen文件,需要sudo。打开后可以看到如下内容(选自前几行):
    bash
    # This file lists locales that you wish to have built. You can find a list
    # of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add 
    # user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
    # this file, you need to rerun locale-gen.
    
    
    # C.UTF-8 UTF-8
    # aa_DJ ISO-8859-1
    # aa_DJ.UTF-8 UTF-8
    # aa_ER UTF-8
  2. en_US.UTF-8一行的#去掉,即取消注释。并保存文件。

    这么多语系被注释掉了,我怎么找到未被注释的语系呢?用到正则表达式^[^#],表示不以#开头([^#])的行(^)。在nano中以Ctrl+W搜索(查找),处处都有按键提示;在vim中在命令模式下输入“/”进入搜索>(查找)模式;均支持正则表达式。

  3. 加入 en_US.utf8 语系
    bash
    sudo locale-gen
    会generate上述文件(/etc/locale.gen)中未被注释的所有语系。准确来说,是安装。适合批量安装语系。而第一种方法,sudo locale-gen en_US.UTF-8,是在安装单一语系。

两种方法讲完了,别忘了再次使用locale -a验证哟!