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 方法
$ 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
最後跑起來測試一下,並切換各種語言
如果依上步驟操作無誤,則會得到你要的
沒有留言:
張貼留言