在 React Native 中(例如用 `expo-localization` 或 `react-native-localize` 取得語言設定),你問的兩個值:`languageCode` 跟 `languageTag` 差別蠻重要的。 --- ## :white_check_mark: 繁體中文的值會是什麼? 假設使用者的裝置語言設定是 **繁體中文(台灣)**,以下是常見的值: | 欄位 | 可能值 | 說明 | | -------------- | --------- | -------------------- | | `languageCode` | `"zh"` | 只會是語言碼,不含地區 | | `languageTag` | `"zh-TW"` | 語言 + 地區(Locale 完整標籤) | | `countryCode` | `"TW"` | 國家碼(有些套件會提供) | --- ## :question: 哪個比較好用?`languageCode` 還是 `languageTag`? ### 1. :white_check_mark: 推薦使用 `languageTag`(例如 `zh-TW`, `en-US`) 因為它能精確區分語系 + 地區: | `languageCode` | 問題 | | -------------- | -------------------------------------- | | `"zh"` | 可能指的是簡體(中國)或繁體(台灣、香港)<br>→ 無法明確區分 | | `"en"` | 有可能是 `en-US` 或 `en-GB`,顯示內容有差(例如日期、拼字) | ```ts // ❌ 不推薦這樣模糊處理 if (languageCode === 'zh') { // 不知道是簡體還是繁體 } ``` --- ### 2. 使用 `languageTag` 判斷語系範例 ```ts import * as Localization from 'expo-localization' const locale = Localization.locales[0] // ✅ 最精確判斷法 switch (locale.languageTag) { case 'zh-TW': i18n.changeLanguage('zh') break case 'zh-CN': i18n.changeLanguage('zh_cn') break case 'en': case 'en-US': case 'en-GB': i18n.changeLanguage('en') break } ``` --- ## :pencil: 建議做法總結 | 建議 | 說明 | | -------------------------------------------------------------------------------- | --------------- | | :white_check_mark: 使用 `languageTag` | 更完整,能區分繁簡、英式/美式 | | :white_check_mark: 在 `i18n.init` 時用 `Localization.locale` 或 `Localization.locales[0].languageTag` | | | :x: 不建議只靠 `languageCode` | 太模糊,無法處理繁簡體切換 | --- ## :eyes: 附帶:常見 `languageTag` 值對照 | 語言 | `languageTag` | | -------- | ------------- | | 繁體中文(台灣) | `zh-TW` | | 繁體中文(香港) | `zh-HK` | | 簡體中文(中國) | `zh-CN` | | 英文(美國) | `en-US` | | 英文(英國) | `en-GB` | | 日文 | `ja-JP` | | 韓文 | `ko-KR` | ---