区域设置 (locale)是特定于语言和地域的规则和数据的集合。区域设置包括有关排序规则、日期和时间格式设置、数字和货币约定,以及
字符分类的信息。
区域设置(locale),也称作“本地化策略集”、“本地环境”,是表达程序用户地区方面的软件设定。不同系统、平台、与软件有不同的区域设置处理方式和不同的设置范围,但是一般区域设置最少也会包括语言和地区。操作系统的区域设置通常比较复杂。区域设置的内容包括:数据格式、货币金额格式、小数点符号、千分位符号、
度量衡单位、通货符号、日期写法、日历类型、文字排序、姓名格式、地址等等。
区域设置的主要目标是让用户选择最适合他自己的设定。比如用以上的Windows作比喻:在控制面板的区域和语言选择中,用户可以选择自己的字符集排序方法;当浏览文件时,系统会使用“用户选择的排序”来排列文件。
计算机中一套定义用户的语言、国家和用于定义用户希望在其用户界面上看到的各种可以改变的选择的参数集合。通常一个区域设置标识符至少包括一个语言标识符和一个区域标识符。
在
UNIX和Windows中,区域设置的控制是不同的。在UNIX下,通常通过环境变量来控制区域设置。这些环境变量包括:LC_ALL, LC_CTYPE, LC_TIME, 等等。你可以通过改变这些环境变量来控制你的程序或者命令所表现出来的区域设置,前提是这些程序或者命令必须是已经被国际化的和本地化的。在Windows下,你可以通过改变控制面板上的“语言/区域”中的区域的值来设定Windows的当前用户的区域设置。
在Ubuntu操作系统中,使用man locale-gen或man locale可获得关于locale实现的细节。实际上是由
glibc库实现的。
除 C 和 POSIX这两个locale名称外,locale的名称并未标准化。Linux平台与Windows系统的locale名称有很大不同。Linux名称的命名规则为:
其中language是
ISO 639-1标准中定义的语言代码,territory是
ISO 3166-1标准中定义的国家和地区代码,codeset是字符集的名称 (如 UTF-8等),而 modifier 则是某些 locale 变体的修正符。
Windows SDK规定,“语言”是与沟通有关的一组属性的集合,包括所有允许的字符、通货符号、日期时间格式等等。每个“语言”有一个语言名字与语言标识符。语言往往还需要指出国家/地区,如“英语(美国)”使用的语言名字是“en-US”。
每个区域设置(locale)是一个“语言”及一个排序规则。
Windows XP支持超过150个区域设置(locale);
Windows Vista支持超过200个区域设置(locale);
Windows 7