locales
被 glibc
和其它需要本地化的应用程序和库用来解析文本(或正确的显示当前区域的某些文字样式,如货币,时间,日期,特殊字符和其他的区域格式)。
系统支持的语言保存在这里/usr/share/i18n/locales
。
locale
是一组环境变量,用于定义应用程序和Linux系统上的shell会话的语言,国家和字符编码设置(或任何其他特殊的变体首选项)。 这些环境变量由系统上的系统库和支持区域设置的应用程序使用。
locale
会影响时间/日期的格式,一周的第一天,数字,货币以及根据在Linux系统上设置的语言或地区/国家/格式化的许多其他值。
设置 locale 前,需要先准备需要的 locale。要列出所有启用的locale,使用locale -a
。
要查看当前正在使用的locale和相关环境变量的信息,请使用locale
或localectl
实用程序。
locale:获取特定于语言环境的信息。
localectl:控制系统区域(locale)设置和键盘布局设置。
locale命名规则: <语言>_<地区>.<字符集编码><@修正值>
zh_CN.UTF-8:zh表示中文,CN表示大陆地区,UTF-8表示字符集编码
locale
LANG=zh_CN.UTF-8 # 优先级最低,是所有LC_变量的默认值
LANGUAGE=zh_CN:zh:en_US:en
LC_CTYPE="zh_CN.UTF-8" # 用于字符分类和字符串处理,控制所有字符的处理方式
LC_NUMERIC=zh_CN.UTF-8 # 用于格式化非货币的数字显示
LC_TIME=zh_CN.UTF-8 # 用于格式化时间和日期
LC_COLLATE="zh_CN.UTF-8" # 用于比较和排序
LC_MONETARY=zh_CN.UTF-8 # 用于格式化货币单位
LC_MESSAGES="zh_CN.UTF-8" # 用于控制程序输出时所使用的语言
LC_PAPER=zh_CN.UTF-8 # 默认纸张尺寸大小
LC_NAME=zh_CN.UTF-8 # 姓名书写方式
LC_ADDRESS=zh_CN.UTF-8 # 地址书写方式
LC_TELEPHONE=zh_CN.UTF-8 # 电话号码书写方式
LC_MEASUREMENT=zh_CN.UTF-8 # 度量衡表达方式
LC_IDENTIFICATION=zh_CN.UTF-8 # locale对自身包含信息的概述
LC_ALL= # 优先级最高,它是一个宏,可通过该变量的设置覆盖所有的LC_*变量
# -a 参数显示所有可用于被设置的语言环境
localectl status
System Locale: LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh:en_US:en
VC Keymap: n/a
X11 Layout: cn
如果要更改或设置本地系统,请使用update-locale
程序。 修改LANG
变量以设置整个系统的语言环境。
update-locale:修改全局的locale设置。
以下命令将LANG设置为en_IN.UTF-8
,并删除LANGUAGE的定义。
sudo update-locale LANG=en_IN.UTF-8 LANGUAGE
# OR
sudo localectl set-locale LANG=en_IN.UTF-8
要配置特定的语言环境参数,需要编辑对应的变量。
sudo update-locale LC_TIME=en_IN.UTF-8
# OR
sudo localectl set-locale LC_TIME=en_IN.UTF-8
可以在以下文件中找到全局语言环境设置:
/etc/default/locale
– on Ubuntu/Debian/etc/locale.conf
– on CentOS/RHEL/etc/locale.gen
- on Alpine如果直接编辑上面的文件,则在编辑完成后需要执行locale-gen
来生效。
每次更新glibc的时候,都会自动执行一下
locale-gen
,建议开启UTF-8。
要为单个用户设置全局语言环境,只需打开~/.bash_profile
文件并添加以下行。
LANG="en_IN.utf8"
export LANG
Alpine使用的是musl,这是一个叫精简的,没有locale,所以需要手动添加musl-locale
。
存放在/usr/bin/locale
,可以在musl libc中运行。要安装,请使用cmake . && make && sudo make install
安装在具有Musl功能的发行版上。包括英语和俄语,以及.pot
文件。
需要如下的依赖:
# 设置环境变量
ENV MUSL_LOCALE_DEPS cmake make musl-dev gcc gettext-dev libintl \
# 设置MUSL_LOCPATH来获取其他可设置的locale
MUSL_LOCPATH /usr/share/i18n/locales/musl \
TZ=Asia/Shanghai \
LANG=zh_CN.UTF-8 \
LANGUAGE=zh_CN:zh:en_US:en \
LC_ALL=zh_CN.UTF-8
# 下载依赖
RUN apk add --update cmake make musl-dev gcc gettext-dev libintl
# 下载musl-locale并编译
RUN apk add --no-cache \
$MUSL_LOCALE_DEPS \
&& wget https://gitlab.com/rilian-la-te/musl-locales/-/archive/master/musl-locales-master.zip \
&& unzip musl-locales-master.zip \
&& cd musl-locales-master \
&& cmake -DLOCALE_PROFILE=OFF -D CMAKE_INSTALL_PREFIX:PATH=/usr . && make && make install \
&& cd .. && rm -r musl-locales-master