[note] Django compilemessages

一直都知道 Django 有語系檔,自動轉換也很簡單,但是當要自訂顯示文字的時候,我就不太知道那個 .mo 的編譯檔是怎麼出來的,也一直以為困難在這個字典檔怎麼產生,結果花在讀文件上大半天,巡 code 寫字典兩天,都沒有我一直以為的那麼困難,因為這算是各國通用語言的基本問題, Django 算是國際通用語言吧?

首先要在 settings.py 設定
LOCALE_PATHS = (
    'myapp_dirname/admin/locale',
    'C:/myproject_dirname/myapp_dirname/admin/locale',
)

事實證明,在 windows 中 LOCALR_PATHS 需要寫真實路徑,不然抓不到,這似乎與 /static 、/media 有異曲同工之妙。

然後呢,將需要轉換的文字,循著 code 的位置來寫 django.po

ex
#: filters.py:238
msgid "Yes"
msgstr "是"

filters.py 的第 238 行中的 _("Yes") 在中文中要轉換成 "是"

而 filters.py 絕對要引入 from django.utils.translation import ugettext, ugettext_lazy as _
之後的語系切換就真的隨心所欲啦!

巡完 project 當中的 .py 檔案後,也逐行寫完字典檔,接著就可以利用指令來產生對應的 .mo 編譯檔了。

在 project 資料夾下面開啟 cmd

python manage.py compilemessages

接著系統就會回應編譯了那些字典檔

重開 apahce2 ,大功告成。

張貼留言

0 留言