码迷,mamicode.com
首页 > 其他好文 > 详细

Django应用部署 - 多语种支持

时间:2015-08-01 15:51:07      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:django   多语   

http://blog.csdn.net/pipisorry/article/details/47185795

如果你要实现多种语言版本的django网站,如英语和中文的两个网站,lz将介绍一个最快捷的方法

配置

settings.py 里面有一个属性LANGUAGE_CODE = ‘zh_CN‘,这里设置了网站默认的语言。

由于settings.py里面的属性支持重写,所以从官方文档上可以得知,默认情况下已经启用i18n支持了,USE_I18N = TrueUSE_L10N = True

[Django的官方文档上的i18n]

加入一些middleware来支持动态切换语言

MIDDLEWARE_CLASSES = (
 ‘django.contrib.sessions.middleware.SessionMiddleware‘,
 ‘django.middleware.locale.LocaleMiddleware‘,
 ‘django.middleware.common.CommonMiddleware‘,
)

Note:LocaleMiddleware必须在SessionMiddleware下面,因为需要从Session里面获取一个语言类型,这些Django都有现成的了,很方便。
在urls.py里面配置一个i18n的辅助应用

(r‘^i18n/‘, include(‘django.conf.urls.i18n‘)),

有了这个就可以自由的切换语言了,使用/i18n/setlang/?language=en这样的形式。

http://blog.csdn.net/pipisorry/article/details/47185795


locale目录
配置完成之后在项目目录下新建locale目录,locale下子目录的样式有固定格式,如:
locale/<language>/LC_MESSAGES/
如果是中文,对应的目录就是
locale/zh_CN/LC_MESSAGES/
如果是英文,则应该是
locale/en/LC_MESSAGES/

为了在django里面使用i18n,po文件名必须为djang.po,编译过后必须为django.mo,那么翻译的内容就固定在po文件里了。一个典型的po文件类似一下样式:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE‘S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGEpackage.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-12-21 14:00+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "Home"
msgstr "Home"

msgid "News"
msgstr "News"

格式相对比较简单,也是键值对的形式。如果是多行的话,需要使用msgstr""的形式,首行不写东西,在后续的几行写文本,翻译出来的结果会由程序自动把文字组合到一起。

编写完的po文件需要编辑成二进制的mo文件才可以被django使用,django使用了gettext来实现翻译,所以mo格式也是gettext要求的。

在linux下使用msgfmt -o django.modjango.po即可完成转换过程,相当方便,windows下需要下载poEdit这个软件。

翻译工作都准备就绪了,接下来就是体现到模板上去了,首先加载i18n,在模板文件的头部加入{% load i18n%},下来对于需要i18n支持的字段使用{% trans ‘Key‘ %},这里的Key就是msgid,很简单吧。

这里仅仅介绍了Django i18n的一个快速上手配置,更详细的内容请参考
http://www.djangoproject.com/documentation/i18n/

from:http://blog.csdn.net/pipisorry/article/details/47185795

ref:


版权声明:本文为博主原创文章,未经博主允许不得转载。

Django应用部署 - 多语种支持

标签:django   多语   

原文地址:http://blog.csdn.net/pipisorry/article/details/47185795

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!