1. Locale 概述
2. Windows 区域设置
3 Linux Locale
 3.1 Linux Locale 语言环境名称格式
 3.2 常用区域描述(简写)日期习惯
 3.3 日期显示格式
 3.4 locale相关(环境)变量生效的优先顺序:
4 Linux Locale 操作(左边查看a,右边设置b)
 4.1a 查看已开启的语言环境
     4.1b 生成语言环境
 4.2a 查看Linux系统编码
     4.2b 设置系统区域设置
 4.3a 列出系统当前使用的字符集
5 更多链接

 

1. Locale 概述

https://en.wikipedia.org/wiki/Locale_(computer_software)
在计算中,语言环境是一组参数,用于定义用户的语言,区域以及用户希望在其用户界面中看到的任何特殊的变体首选项。
通常,语言环境标识符至少由语言代码和国家/地区代码组成。

https://zh.wikipedia.org/wiki/区域设置
区域设置(locale),也称作“本地化策略集”、“本地环境”,是表达程序用户地区方面的软件设定。
不同系统、平台、与软件有不同的区域设置处理方式和不同的设置范围,但是一般区域设置最少也会包括语言和地区。
操作系统的区域设置通常比较复杂。区域设置的内容包括:数据格式、货币金额格式、小数点符号、千分位符号、度量衡单位、通货符号、日期写法、日历类型、文字排序、姓名格式、地址等等。

https://zh.wikipedia.org/wiki/国际化与本地化
在信息技术领域,国际化与本地化(英文:internationalization and localization)是指修改软件使之能适应目标市场的语言、地区差异以及技术需要。
基于他们的英文单字长度过长,常被分别简称成i18n(18意味着在“internationalization”这个单字中,i和n之间有18个字母)及L10n。使用大写的L以利区分i18n中的i和易于分辨小写l与1。

Localisation Guide  相关资料的汇整...
http://docs.translatehouse.org/projects/localization-guide/en/latest/guide/start.html?id=guide/start#locales

2. Windows 区域设置

Windows 系统的每个区域设置(locale)是一个“语言”及一个排序规则。

  • Windows XP支持超过150个区域设置(locale);
  • Windows Vista支持超过200个区域设置(locale);
  • Windows 7支持至少365个区域设置(locale)。

[控制面板]下找到区域设置...选择适合的区域即可。

3 Linux Locale

https://wiki.archlinux.org/index.php/Locale
区域设置是使用glibc的渲染文本,正确地显示区域货币值,时间和日期格式,字符排列方式和其他一些本地化的特定标准和其他区域设置的程序或库。

3.1 Linux Locale 语言环境名称格式

language[_territory][.codeset][@modifier]

  • language 是ISO 639-1标准中定义的双字母的语言代码,
  • territory 是ISO 3166-1标准中定义的双字母的国家和地区代码,
  • codeset 是字符集的名称 (如 UTF-8等),
  • modifier 是某些 locale 变体的修正符。

参见: setlocale https://jlk.fjfi.cvut.cz/arch/manpages/man/setlocale.3

3.2 常用区域描述(简写)日期习惯

中文-中国大陆zh-CNY M D
英语-英国en-GBD M Y
英语-美国en-USM D Y

3.3 日期显示格式

$ LC_TIME=en_US.UTF-8 date
Thu 09 Jan 2020 07:52:05 PM CST
$ LC_TIME=en_GB.UTF-8 date
Thu Jan  9 19:52:26 CST 2020

3.4 locale相关(环境)变量生效的优先顺序:

  1. LANGUAGE 指定个人对语言环境值的主次偏好,例如zh_CN:en_US:en
  2. LC_ALL 这不是一个环境变量,是一个可被C语言库函数setlocale设置的宏,其值可覆盖所有其他的locale设定。因此缺省时此值为空
  3. LC_xxx 可设定locale各方面(category)的值,可以覆盖LANG的值。
  4. LANG 指定默认使用的locale值

4 Linux Locale 操作(左边查看a,右边设置b)

查看命令 a   设置命令 b
4.1a 查看已开启的语言环境 4.1b Generating locales 生成语言环境
$ locale 列出当前采用的各项本地策略,这些由LC_*环境变量定义
$ locale -a 列出系统中已经安装的所有locale
$ localedef --list-archive 列出已生成的可用语言环境, 或者

$ localectl list-locales
en_US.UTF-8
zh_CN.UTF-8

查看可开启的所有语言环境
$ cat /etc/locale.gen |wc -l
511 // 除去前面的注释文字,下面可开启的有486个(其中UTF-8的有312个;ISO-8859系的有153个;还有一些国家专用的如GB18030等)。
1.1 修改locale.gen, 取消en_US.UTF-8 UTF-8和其他必要的语言前面的注释符号
$ sudo vi /etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.GB18030 GB18030
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
zh_CN GB2312

编辑完成后 :wq 保存退出.
1.2 生成(generate)语言环境
$ sudo locale-gen
Generating locales...
en_US.UTF-8... done
zh_CN.GB18030... done
zh_CN.GB2312... done
zh_CN.GBK... done
zh_CN.UTF-8... done
Generation complete.
   
4.2a 查看Linux/Unix操作系统编码: 4.2b 设置系统区域设置
$ echo $LANG
en_US.UTF-8
$ cat /etc/locale.conf
LANG=en_US.UTF-8
$ printenv 查看环境变量

4.3a 列出系统当前使用的字符集
$ locale charmap
UTF-8
查看系统已经安装的所有字符集
$ locale -m |wc -l 236 // 当前系统有236个
编辑: /etc/locale.conf, 写入LANG,比如: LANG=en_US.UTF-8 变量值在先前生成的语言环境中选择。

$ sudo vi /etc/locale.conf
LANG=en_US.UTF-8

或者运行

# localectl set-locale LANG = zh_CN.UTF-8

 

5 更多链接

https://wiki.archlinux.org/index.php/Localization/Simplified_Chinese_(简体中文)
要正确显示中文,必需设置正确的locale并安装合适的中文字体。

https://docs.oracle.com/cd/E19683-01/816-3981/overview-46/index.html
Documentation Home  > 国际语言环境指南  > 第 1 章 Solaris 国际化概述  > 使用语言环境种类进行本地化  > 日期格式 >
国际语言环境指南 > 日期格式 (下表显示在世界各地使用的一些日期格式。 请注意,即使在一个国家/地区内部,日期格式可能也有所不同)

https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_10.5.0/com.ibm.db2.luw.admin.nls.doc/doc/r0004572.html
主页 > DB2 for Linux UNIX and Windows 10.5.0 > 开发用于访问和管理数据的代码 > 多文化支持 > 应用程序开发注意事项 >
基于地域代码的日期和时间格式

https://zh.wikipedia.org/wiki/各地日期和时间表示法