一、综述
为了创建一个可翻译的django工程,你需要在你的python代码和模板代码中增加极少量的标记(hooks), 这些标记叫做translating string。它能告诉django框架:“如果对于这个文本有可用的终端用户的语言,就应该把它翻译成终端用户的语言。”,你的任务就是标记出这些翻译字符串,系统只能够翻译它知道的那些字符串。
Django在一个message file中提供了组件来解析这些翻译字符串。这个文件以很方便的方式给翻译人员提供了等效的关于目标语言的翻译字符串, 一旦翻译者填写了message file,它就应该被编译,这个程序依赖于GNU gettext工具集。(message file就应该是指django.po文件。创建文件方法python manage.py makemessages -l en; 编译该文件:python manage.py compilemessages)
注:以上两端翻译自django 1.11文档。
二、详细配置过程
1、 配置settings文件
增加如下配置
from django.utils.translation import ugettext_lazy as _
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
# international config
LANGUAGES = (
('en', _('English')),
('zh-Hans', _('中文简体')),
)
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'),
]
同时确认midware中开启了'django.middleware.locale.LocaleMiddleware',
默认都是开启的。
2、生成django.po文件
执行python manage.py makemessages -l en
生成文件,文件路径在BASE_DIR
/locale/en/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: 2018-01-10 15:25+0800\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"
#: xxx/settings.py:128
msgid "English"
msgstr ""