軟體開發 / 系統語言
===
###### tags: `軟體開發`
###### tags: `軟體開發`, `軟體`, `開發`, `系統語言`, `系統語系`, `系統`, `語言`, `語系`, `language code`, `region code`, `country code`, `zh-TW`, `zh-rTW`, `zh-Hang-TW`, `BCP 47`, `language tag`
<br>
[TOC]
<br>
## Intro
### List of locale codes
> https://simplelocalize.io/data/locales/
### [Locale Code: zh-TW](https://simplelocalize.io/data/locale-code/zh-TW/)
| Property | Value |
|----------|-------|
| Country Name | Taiwan |
| Country Name (Local) | 中華民國 / T’ai-wan |
| Country Flag | 🇹🇼 |
| Country Area | 36193 km2 |
| Country Code (ISO 3166-1) | TW |
| Language Name | Chinese |
| Language Name (Local) | 中文 (Zhōngwén) |
| Language Code (ISO 639-1) | zh |
| Continent | Asia |
| Region | Eastern Asia |
| Capital Name | Taipei |
| Capital Latitude | 25.04776 |
| Capital Longitude | 121.53185 |
| Postal Code Format | `#####` |
| Postal Code Regex | `^(\d{5})$` |
<br>
---
### IETF language tag
- [[wiki] IETF language tag](https://en.wikipedia.org/wiki/IETF_language_tag)
- IETF BCP 47 語言標籤是一種標準化代碼,用於識別網路上的人類語言。
- [国际化中常用BCP-47 Code和语言对照表](https://xnxy.github.io/2024/06/11/%E5%9B%BD%E9%99%85%E5%8C%96%E4%B8%AD%E5%B8%B8%E7%94%A8BCP-47%20Code%E5%92%8C%E8%AF%AD%E8%A8%80%E5%AF%B9%E7%85%A7%E8%A1%A8/#BCP-47-Code)
<br>
---
## 討論
### 欄位變數
- ### Question
Locale code: zh-TW (Chinese - Taiwan)
zh 的變數名稱為何?
TW 的變數名稱為何?
- ### gpt-5 (2025/08/21)
簡短說明(以 `zh-TW` 為例):
* **`zh`**:**語言代碼**
常見變數名稱:`language`、`languageCode`、`lang`
標準:**ISO 639-1**
* **`TW`**:**地區/國家代碼**
常見變數名稱:`region`、`country`、`territory`、`regionCode`、`countryCode`
標準:**ISO 3166-1 alpha-2**
補充:若需明確標示「繁體」,可加上**文字腳本**子標籤:`zh-Hant-TW`
(變數名稱通常為 `script` 或 `scriptCode`,值為 `Hant`)。
- ### Question (Round-2)
所以一般常見格式為:
1. language code / country code
2. language code / script code / country code
- ### gpt-5 (Round-2)(2025/08/21)
對,常見就是這兩種。一般遵循 **BCP 47** 標準,用連字號 `-` 連接:
1. **language-region**(語言 / 地區)
例:`zh-TW`、`en-US`
用在腳本(字形)能由地區推得時。
2. **language-script-region**(語言 / 腳本 / 地區)
例:`zh-Hant-TW`、`zh-Hans-CN`、`sr-Latn-RS`
用在需要**明確指定字形**(繁/簡、拉丁/西里爾)時。
### 小重點(BCP 47 慣例)
* 大小寫:`language` 全小寫(`zh`)、`script` 首字大寫四碼(`Hant`)、`region` 全大寫兩碼(`TW`)。
* 變數名稱常見:`language` / `lang`、`script`、`region` / `country`、完整標籤用 `locale` / `localeTag`。
* 常見替代寫法(舊系統/Java):底線分隔 `zh_TW`、`zh_Hant_TW`。
* 區域也可用 UN M.49 數字:如 `zh-419`(拉丁美洲)。
* 典型回退:`zh-Hant-TW` → `zh-Hant` → `zh`。
<br>
### zh-rTW 跟 zh-TW是同一個東西嗎?
- ### gpt-5 (2025/08/14)
是的,**`zh-rTW`** 和 **`zh-TW`** 在語言代碼上基本指的是同一個東西——臺灣使用的繁體中文。
不過它們的差異主要在於**標準與用途**:
| 代碼 | 標準來源 | 含義 | 常見用途 |
|------|----------|------|---------|
| `zh-TW` | [BCP 47 / IETF](https://datatracker.ietf.org/doc/html/rfc5646) 語言標籤標準 | 中文(繁體)-臺灣 | 網頁語言標籤、作業系統與軟體在地化設定 |
| `zh-rTW` | BCP 47 舊式格式(`r` = region) | 與 `zh-TW` 等同,但使用了過時的區域語法 | 部分舊版系統、舊資料庫或相容性需求 |
### 補充說明
* **現行標準**已經用 `zh-TW` 取代 `zh-rTW`,但舊系統或資料仍可能出現 `zh-rTW`。
* 兩者在功能與語意上是一樣的,通常可以互換,但如果你的系統採用嚴格的標準驗證,最好使用 **`zh-TW`**。
* 在網頁 `lang` 屬性、JSON `locale`、或 i18n 設定檔時,建議採用 **最新的 BCP 47 格式**。
如果你要我,我可以幫你整理一份 **zh 系列地區代碼對照表**,方便開發時快速選擇。