2015-03-04

Django 多國語言相關內容


Django 系統判斷多國語言的順序為
1. URL pattern(要安裝 i18n)
2. 檢查 session 裡的 LANGUAGE_SESSION_KEY (本值為 '_language' )
3. browser 的 header 的 accept-language (firefox 裡可安裝 Quick Locale Switcher)




而第2點方式可用以下程式碼為每個使用者設定語言

from django.utils import translation

user_language = 'en-us'  # 英文
translation.activate(user_language)
# request.session['_language']
self.request.session[translation.LANGUAGE_SESSION_KEY] = user_language # 預設使用者的語系為英文






  • mac os(osx) 安裝 gettext 方法
你是不是在 MAC 上安裝 GNU gettext 後依然無法正確執行?
$ django-admin.py makemessages  -l "zh_TW" -settings=urproject/settings.py

CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed.


正常安裝方式應該是
#brew install gettext #brew link gettext --force
#django-admin.py makemessages  -l "zh_TW" -settings=biyibird/settings.py
processing locale zh_TW


Django 為 JavaScript 提供的多國語言

Django 為 JavaScript 提供多國語言的package為 'django.views.i18n.javascript_catalog'

使用方法很簡單,
1. 首先在 root url 裡加入 'django.views.i18n.javascript_catalog'




js_info_dict = {
    # 這裡跟 installed app 一樣,加入你要翻譯的 package,
    'packages': ('myapp',     
                 'myapp.mypackagexxx',
    ),
}

urlpatterns += patterns('', (r'^bbjsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )


2. 在你的 javascript 裡加入你的翻譯, 支援 gettext, ngettext, pgettext ....
例如:
gettext("myreview");

3. make messages

django-admin.py makemessages -d djangojs -a

4. 到你的 LOCALE_PATHS 裡找 djangojs.po ,並在檔案裡翻譯
msgid "myreview"

msgstr "我的評分"

5. compile messages

django-admin.py compilemessages

最後跑起來測試一下,並切換各種語言
如果依上步驟操作無誤,則會得到你要的



沒有留言:

張貼留言