Skip to content

Instantly share code, notes, and snippets.

@OHua
Created December 14, 2017 07:49
Show Gist options
  • Save OHua/fd35bec69a2a84c4fdfe4ec14644edfa to your computer and use it in GitHub Desktop.
Save OHua/fd35bec69a2a84c4fdfe4ec14644edfa to your computer and use it in GitHub Desktop.
[Django 設定 LANGUAGE_CODE 時所遇到的麻煩] OSError: No translation files found for default language zh-TW.

今天想說重新 review 一次目前所學的 Django 內容 就新開了一個資料夾並且從頭來過 一模一樣的重建一次藉此來複習並熟練

結果在 migrate 的階段噴出錯誤說找不到 zh-TW

OSError: No translation files found for default language zh-TW.

我立刻打開 settings.py 看了看感覺我的設置沒甚麼錯誤阿

LANGUAGE_CODE = 'zh-TW'
TIME_ZONE = 'Asia/Taipei'

傻傻的我還跑去更新也沒用

python -m pip install --upgrade pip
pip install --upgrade django

傻傻的我又跑去亂猜 zh-tw zh_tw zh_TW 也沒用 看來真的必須面對問題,認真google一下 發現大部份老舊的文章都是使用 zh-TW 但為什麼現在不行了呢?! 後來在老舊的文章底下發現有"最近"的使用者留言說要改用 zh-Hant 雖然到此已經得到最終正確解答了,但好奇心使然,想要先理解原因之後,才會繼續動下去!

繼續從 Django Document 追有關 LANGUAGE_CODE 的資訊並找到了 Settings|Django 進去看到 list of language identifiers 想說太棒了有清單!! 馬上 Ctrl+F 找 zh-TW 一下就成功找到了 咦? 奇怪了...明明在清單中 zh-TW 沒有被砍掉阿,那怎麼噴錯誤訊息說找不到呢? 無奈看來只能認真慢慢看英文在講甚麼了 還好看沒多久就了解到以前使用的 zh-TW 其實分成兩段意義 前段的 zh 是語系,由 ISO 639 訂定 後段的 TW 是國家,由 ISO 3166 訂定 還有一些較特別的4個字節如 zh-Hant 代表中文-漢繁體,由 ISO 15924 訂定 經由 ISO 後面接的數字可想而知,國際制定的標準日益更新 所以 zh-TW 在新版 Django 已經 deprecated 了

最後看了看維基上的 ISO 15924 了解到以前是使用「語系」與「國家」來分類 但現在使用更好的分類方式是「語系」與「書寫方式」

code Remark
Hira 平假名
Kana 片假名
Hrkt 日文假名(平假名+片假名)
Jpan 日文(漢字+平假名+片假名)
Hani 漢字
Hans 簡體漢字
Hant 繁體漢字

PS:migrate 終於過了! 當下真是滿滿的成就感阿!

no pain no gain

@FOBshippingpoint
Copy link

FOBshippingpoint commented Dec 15, 2022

you saved me🙇‍‍♂️🙇‍‍♂️🙇‍‍♂️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment