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