顯示具有 Internationalization 標籤的文章。 顯示所有文章
顯示具有 Internationalization 標籤的文章。 顯示所有文章

2013年3月8日 星期五

[Django] Internationalization 國際化 〈 I I 〉

  在 [Django] Internationalization 國際化〈 I 〉已介紹如何在 view 和 template 中進行國際化,接下來本文將介紹如何實現國際化。

首先,介紹如何產生語言檔 (language file),在此仍以專案繁體中文化為例。

在專案根目錄下,鍵入 django-admin makemessage -l zh_TW。

此命令將在專案根目錄下產生 /local/zh_TW/LC_LANGUAGE/django.po。

開啟 django.po 您將會看到以下範例:

#: path/to/python/module.py:23
msgid "Welcome to my homepage"
msgstr ""

在此快速說明 msgid 和 msgstr。

msgid:是您在 view 或 template 中準備翻譯的部分
【例如:_(Welcome to my homepage) 或 {% trans "Welcome to my homepage" %}】

msgstr:是您預期翻譯後的結果。【例如:歡迎來到我的烘培雞】

在 djago.po 檔中將所有 msgstr 皆填入或存檔,將可進行接下來的步驟。

重新鍵入 django-admin makemessage -l zh_TW。如果您有多種語言,可鍵入 django-admin makemessage -a。

接著,我們將編譯語言檔 django-admin compilemessages。

如此一來,我們已準備好專案繁體中文的翻譯檔且完成專案的繁體中文化。

2013年2月26日 星期二

[Django] Internationalization 國際化 〈 I 〉

Django 在 view 和 template 中對於國際化有完整的支持。

以下將概述如何在 view 和 template 中進行國際化〈在此以專案繁中化為例〉:

首先必須將 settings.py 中的 USE_I18N 設置為 True,並修改 LANGUAGE_CODE = 'zh_TW'。

接下來,將逐一介紹 view 和 template 國際化的方法。

[View]

  Django 所使用 Python 標準的翻譯器 ── gettext。在 views.py 中必須先加入 from django.utils.translation import gettext as _,如以一來將可使用 _ 取代 gettext。

接下來,請參考下列範例:

def homepage(request):
output = _("Welcome to my homepage.")

【也可使用 output = gettext("Welcome to my homepage.")
return HttpResponse(output)

上述範例也可改寫為:


def homepage(request):
sentence = "Welcome to my homepage."
output = _(sentence)
return HttpResponse(output)


如果遇上函式包含變數,可寫為:

def homepage(request, variable):
output = _('%(variable)s is a variable.') % {'variable': variable}
return HttpResponse(output)


[Template]

在 template 中進行國際化較為簡單,僅需在

template 的頂端放置 {% load i18n %}

並在需要國際化的部分改寫為 {% trans "Welcome my homepage" %}

如此一來將完成 view 和 template 的國際化。