翻译自苹果的官方文档“Internationalization and Localization Guide”
- Language ID
- 用于标示一种语言(Language)、一种方言(dialect)、一种书写体(script)。
- 在iOS编程里,用于命名一些文件夹,专门保存语言相关的资源。这些文件夹最终会成为app bundle的一部分。
- Locale ID
- 用于标示一个地区、区域。该地区有专属的语言、数字、日期、钱币的使用习惯、文化、传统。
- 在iOS编程里,用于API,比如:NSLocale、NSDateFormatter、NSNumberFormatter、NSCalendar。
- Language Designator
- 语言代码。ISO对其有两个标准:ISO 639-1和639-2。前者使用2个字母标示一种语言;后者使用3个字母。
-
Langeuage ISO 639-1 ISO 639-2 English en eng French fr fre Hawaiian 没有 haw
- Script Designator
- 书写体代码。见ISO 15924。
- 书写体代码。见ISO 15924。
- Region Designator
- 地区代码。ISO对其定义在ISO 3166-1。
-
Region ISO 3166-1 United States US Canada CA
Language ID 可由Language designator和、或Region designator组合而成。
- 标示一种语言(Language)时,用Language designator即可,比如en。
- 标示一种方言(dialect)时,同时使用Language designator、Region designator。二者中间有连字符(hyphen),比如en-US。
- 标示一种书写体(script)时,同时使用Language designator、Script designator。二者中间有连字符(hyphen),比如
zh-Hans
。
Locale ID 可由Language designator、Region designator、Script Designator混合而成,比如:
Locale ID format | Example | Explanation |
---|---|---|
language designator | en | 只有语言,无区域 |
language designator_region designator | zh_HK | 有语言,有区域 |
language designator-script designator | zh-Hans | 有语言,有书写体 |
language designator-script designator_region designator | zh-Hans_HK | 都有 |
一般来说,Locale ID都使用简化形式。当发生歧义时,才附加上script designator。比如,香港默认使用繁体中文,所以Locale ID写为zh_HK即可。当要特指使用简体字的时候,使用zh-Hans_HK。