翻譯字串

要翻譯字串,你必須建立翻譯檔案。為此,django 附帶管理命令 makemessages

$ django-admin makemessages -l fr
processing locale fr

上面的命令將在你安裝的應用程式中發現標記為可翻譯的所有字串,併為每個法語翻譯應用程式建立一個語言檔案。例如,如果你只有一個包含可翻譯字串的 app myapp,則會建立一個檔案 myapp/locale/fr/LC_MESSAGES/django.po。此檔案可能如下所示:

# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-07-24 14:01+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: myapp/models.py:22
msgid "user"
msgstr ""

#: myapp/models.py:39
msgid "A user already exists with this email address."
msgstr ""

#: myapp/templates/myapp/register.html:155
#, python-format
msgid ""
"By signing up, you accept our <a href=\"%(terms_url)s\" "
"target=_blank>Terms of services</a>."
msgstr ""

你首先必須填寫佔位符(強調大寫)。然後翻譯字串。msgid 是程式碼中標記為可翻譯的字串。msgstr 是你必須在上面寫下字串的翻譯的地方。

當字串包含佔位符時,你還必須在翻譯中包含它們。例如,你將翻譯最新訊息,如下所示:

#: myapp/templates/myapp/register.html:155
#, python-format
msgid ""
"By signing up, you accept our <a href=\"%(terms_url)s\" "
"target=_blank>Terms of services</a>."
msgstr ""
"En vous inscrivant, vous acceptez nos <a href=\"%(terms_url)s\" "
"target=_blank>Conditions d'utilisation</a>"

翻譯檔案完成後,你必須將 .po 檔案編譯為 .mo 檔案。這是通過呼叫 compilemessages 管理命令來完成的:

$ django-admin compilemessages

就是這樣,現在翻譯可用。

要在更改程式碼時更新翻譯檔案,可以重新執行 django-admin makemessages -l fr。這將更新 .po 檔案,保留現有翻譯並新增新翻譯。刪除的字串仍將在評論中提供。要更新所有語言的 .po 檔案,請執行 django-admin makemessages -a。更新 .po 檔案後,不要忘記再次執行 django-admin compilemessages 來生成 .mo 檔案。