在 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` | ---
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.