RapidSMS 開發人員指南/國際化
本節解釋如何本地化您的應用程式。這描述瞭如何從一種語言(程式碼語言,通常為英語)切換到另一種語言。如果您想同時提供多種語言,請自行操作。
在您的應用程式中建立一個新目錄,並將其命名為locale。在我們的例子中:我們建立了apps/survey/locale
匯入所需的軟體包以翻譯我們每個包含要翻譯的文字字串或訊息的檔案中的文字。
在app.py和models.py中,我們必須從django匯入gettext翻譯庫,並從中需要ugettext函式。
from django.utils.translation import ugettext as _
我們為ugettext設定一個別名:_ 使程式碼更清晰,更易於編寫。
注意:建議在模型和GUI中匯入ugettext_lazy函式,而不是ugettext
對於您要翻譯的每個訊息,都呼叫_()函式,並將文字傳遞給它。例如
message.respond(u"Hello World!") message.respond(_(u"Hello World !"))
要翻譯帶有引數的訊息,請確保您只翻譯格式,而不是已評估的字串
message.respond(u"Thank you %s. for your opinion" % lname) message.respond(_(u"Thank you %s. for your opinion") % lname)
如果Django在django.mo檔案中找到了此句子(參見下面),它將檢索相應的翻譯,否則它將使用預設文字,即原始文字。
在您將應用程式中所有字串標記為可翻譯之後,使用以下命令建立一個翻譯檔案
cd apps/myapp mkdir locale django-admin.py makemessages –l ar
在前面的示例中,myapp是您要翻譯的應用程式的名稱,ar是目標語言的語言程式碼。
在locale資料夾中,Django將建立一個以語言程式碼(此處為ar)命名的資料夾,其中包含一個LC_MESSAGES子資料夾,該子資料夾本身包含一個名為django.po的檔案。
此檔案是要翻譯的檔案。您可以與翻譯人員共享此檔案。
每次您在應用程式中建立或修改訊息,重新發出makemessages命令以更新.po檔案。
開啟django.po檔案,併為每個訊息翻譯您的文字,如下所示
msgid "Thank you %s. for your opinion” msgstr "شكرا لك %s. لمشاركتنا رأيك"
- msgid:原始訊息“預設語言”
- msgstr:相應的翻譯。
注意:必須保留原始格式的所有格式引數(%s、%d、%(key)s等)到翻譯。對於阿拉伯語翻譯,%s必須像這樣出現,而不是s%。
Django不使用dango.po檔案。它使用其編譯版本:django.mo。要編譯您的.po檔案,請使用以下命令
django-admin.py compilemessages
此命令將建立.mo檔案,該檔案由Django和rapidsms用來顯示本地化字串。
每次更新翻譯.po檔案後重新啟動命令以檢視更改。
要能夠使用本地化版本,您需要配置RapidSMS以使用該語言。
這是使用bonjour應用程式完成的。如果您還沒有連結它,然後將其新增到您的local.ini apps=列表中。
最後,您需要在local.ini中配置bonjour以指定語言程式碼
[bonjour] lang=ar