2013年4月9日 星期二

如何使用 django 的 i18n

    因為今天被 django 的 i18n 搞很久。所以只好寫篇文章作個紀錄。

    django 要做到 i18n。首先,你需要把程式中要翻譯的字串都改成 _("string") 這種形式。其次,你需要在 template 加上 {% load i18n %},以及把 template 的字串改成 {% trans "string" %}。在程式碼和 template 加完上面的東西後。接下來就是重點了,至少是我犯錯的地方。



    你不能直接在 project 的跟目錄直接下 django-admin.py makemessages -l zh_TW。因為你這個做的話, django 1.5 似乎無法找到你的翻譯檔。你只能在個別的 app 裡下 django-admin.py makemessages -l zh_TW 指令,這樣 django 1.5 才會為你的程式找到正確的翻譯檔。在下 django-admin.py makemessages 指令前,你需要先在 app 下建立一個 locale 的資料夾,不然他會給你錯誤。

    當你翻譯完畢後,接下來下 django-admin.py compilemessages 的指令,就大功告成了。

    如果你想要驗收成果的話,只要去 settings 把 LANGUAGE_CODE = 'zh-TW' 即可。 (注意,我前面是用底線,可是這裡是用減號,這種情形下確定可以正常運作,可是不同的組合可能就會出錯)


20130521更新:如果需要翻譯資料庫裡的資料,可以考慮使用 yawd-translationsdjango-modeltranslation

沒有留言:

張貼留言