http://blog.csdn.net/pipisorry/article/details/47185795
如果你要实现多种语言版本的django网站,如英语和中文的两个网站,lz将介绍一个最快捷的方法
配置
settings.py 里面有一个属性LANGUAGE_CODE = ‘zh_CN‘,这里设置了网站默认的语言。
由于settings.py里面的属性支持重写,所以从官方文档上可以得知,默认情况下已经启用i18n支持了,USE_I18N = TrueUSE_L10N = True
加入一些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:
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/pipisorry/article/details/47185795