Django 国际化(后台代码和template)配置方法

本文档详细介绍了如何配置Django项目实现国际化,包括设置文件修改、django.po文件生成与更新、标记模板和代码中需翻译的文本,以及查看翻译结果。通过标记translating strings并编译message files,使Django能够根据用户浏览器语言显示对应翻译。
摘要由CSDN通过智能技术生成

一、综述

为了创建一个可翻译的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 ""

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值