2009年6月25日 星期四

i18n in django (在 django 中使用多國語言)

以下概述如何在 django 中使用多國語言

[假設]
  1. 環境:Ubuntu, django 1.0.2
  2. 已經建立一個 project : myProject
  3. 已經建立一個 app: myMessage
  4. 已經建立 myMessage 的 index.html 於 templates 目錄下
所以,會存在以下目錄結構
myProject
myProject/myMessage
myProject/templates/myMessage
myProject/templates/myMessage/index.html

[設定]
編輯 settings.py,確定有下列設定
#LANGUAGE_CODE = 'en'
LANGUAGE_CODE = 'zh-tw'
USE_I18N = True

建立語系存放目錄 locale
mkdir myProject/locale

[標示需要翻譯訊息]
編輯 myProject/templates/myMessage/index.html,加入以下 tags
{% load i18n %}
{% trans 'My Message' %}

[建立相對的語系檔案]
確定在 project 目錄下,執行 makemessages 的指令。若有錯誤訊息,表示需要的 libraries 有缺少,依訊息指示安裝。
cd myProject
django-admin makemessages -l zh_TW

[翻譯訊息]
於語系目錄中編輯 django.po,可找到之前標示要翻譯的訊息,在相對 msgid 下的 msgstr 填入要翻譯的訊息
cd myProject
vi locale/zh_TW/LC_MESSAGES/django.po

msgid "My Message"
msgstr "我的訊息"
使用 compilemessages 指令編譯訊息檔,會產生 django.mo
django-admin compilemessages -l zh_TW
重啟 server
./manage.py runserver
[完成]
連上 index.html
應可看到 My Message 已被翻譯為 "我的訊息"
以此類推,可將你 django 的 templates 中需要翻譯的訊息,按此方式,進行多國語言化。

[參考資源]
  1. Django 1.0 Template Development
  2. Django Project

沒有留言: