locale命名规则 说到Linux系统的国际化设置,绕不开一个关键概念——locale。它的命名规则其实很直白:_.。拿zh_CN.UTF-8举例,zh是中文,CN表示中国大陆,UTF-8就是字符集编码。理解了这个套路,后面的事情就顺了。 locale环境变量详解 在locale环境下,有一组环境
Debian locale设置方法详解
时间:2026-07-24
浏览:659
文章目录
locale命名规则
说到Linux系统的国际化设置,绕不开一个关键概念——locale。它的命名规则其实很直白:<语言>_<地区>.<字符集编码>。拿zh_CN.UTF-8举例,zh是中文,CN表示中国大陆,UTF-8就是字符集编码。理解了这个套路,后面的事情就顺了。
locale环境变量详解
在locale环境下,有一组环境变量共同决定了系统的国际化表现。它们各自管一摊事儿,下面挨个捋一遍:
- LC_COLLATE —— 排序和比较规则归它管。两个字符串谁大谁小,不同语言有不同的规矩,这个变量说了算。
- LC_CTYPE —— 最核心的一个。负责字符分类和字符串处理,包括字符编码、单字节还是多字节、怎么打印等等。几乎所有字符层面的行为都受它影响。
- LC_MONETARY —— 货币格式,比如货币符号放前面还是后面、小数点用点还是逗号。
- LC_NUMERIC —— 非货币的数字显示格式,比如千位分隔符、小数点符号。
- LC_TIME —— 时间和日期格式,比如年月日的顺序、星期几的显示方式。
- LC_MESSAGES —— 提示信息的语言,比如系统报错时用中文还是英文。注意还有一个LANGUAGE参数,跟它功能类似,但优先级更高:一旦设置了LANGUAGE,LC_MESSAGES就失效了。而且LANGUAGE可以同时指定多种语言,比如
LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。 - LANG —— 是所有LC_*的默认值。如果某个LC_变量没设置,系统就会用LANG的值来填充。它相当于最低级别的全局后备。
- LC_ALL —— 这是个大招。一旦设置了LC_ALL,它会覆盖所有LC_*(包括LANG吗?注意:LANG不受LC_ALL影响,但LC_*全都会被强制覆盖)。
实际示例
光说理论比较干,我们看个实际例子就更清楚了。
先看看系统默认locale长什么样:
debian:~# locale LANG="POSIX" LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL=
能看到,几乎所有值都是POSIX。实际上,“C”是系统默认的locale,“POSIX”就是“C”的别名。新装系统时,默认locale就是C或POSIX。
然后我们用export LC_ALL=zh_CN.GBK设置一下,再看locale输出:
debian:~# export LC_ALL=zh_CN.GBK debian:~# locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.GBK" LC_NUMERIC="zh_CN.GBK" LC_TIME="zh_CN.GBK" LC_COLLATE="zh_CN.GBK" LC_MONETARY="zh_CN.GBK" LC_MESSAGES="zh_CN.GBK" LC_PAPER="zh_CN.GBK" LC_NAME="zh_CN.GBK" LC_ADDRESS="zh_CN.GBK" LC_TELEPHONE="zh_CN.GBK" LC_MEASUREMENT="zh_CN.GBK" LC_IDENTIFICATION="zh_CN.GBK" LC_ALL=zh_CN.GBK
看明白了吧?LANG还保留着之前的设置(zh_CN.UTF-8),但所有LC_*都被LC_ALL覆盖成了zh_CN.GBK。这就是LC_ALL的霸道之处。
部署配置与locale.gen
接下来聊聊实际部署。以Debian为例,安装locales的方法很简单:apt-get install locales。安装完成后系统会自动跑一个配置向导,你只需要勾选需要的locale(可以多选),然后指定一个默认locale,系统就会自动生成对应的locale并配置好。
如果后续想增加新的locale,用dpkg-reconfigure locales重新配置就行。想手动操作?也容易:把新的locale追加到/etc/locale.gen文件中,然后运行locale-gen,新的locale就生成了。最后通过前面讲的LC_*变量来设置即可。
下面是一个典型的/etc/locale.gen文件样例:
# This file lists locales that you wish to ha ve built. You can find a list # of valid supported locales at /usr/share/i18n/SUPPORTED. Other # combinations are possible, but may not be well tested. If you change # this file, you need to rerun locale-gen. # zh_CN.GBK GBK zh_CN.UTF-8 UTF-8
注意,注释里已经提醒了:改完文件别忘了运行locale-gen,否则新加的locale不会生效。这些小细节在实际运维中很容易忽略,但踩坑之后就会记得牢牢的。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。