django 国际化实例之一(附源码)
By:Roy.LiuLast updated:2012-08-09
在做网站时,通常需要多语言,也就是国际化,不同国家的人打开,显示不同的语言。也就是需要网站支持i18n,
用 django 如何实现的呢,今天看着帮助文档,做出了第一部分。django 国际化,如下三步实现:
1. 第一步:在 Python 代码和模板中嵌入待翻译的字符串,
2. 第二步:把那些字符串翻译成需要支持的语言,并进行相应的编译( 编译po文件)
3. 第三步:在 Django settings 文件中激活本地中间件。'django.middleware.locale.LocaleMiddleware',
我的环境是 window,python2.7,django 1.4 , pydev.
详细过程:
1.创建 django 工程. 你可以用pydev, 也可以用命令.
到你创建的工程目录下面建立 app
修改 views.py 代码如下:
urls.py 文件配置:
此时,你可以运行 Python manage.py runserver 0.0.0.0:8000
在浏览器中看到如下结果:
2.进行国际化
首先在你的 i18napp app下面建立一个目录 locale. 然后执行命令:django-admin.py makemessages -l zh_CN
可以看到,在locale 目录下 生成了django.po 文件
这一步有可能有错误,在windows 环境下,可以如下解决:
已经解决windows上执行django-admin.py makemessages -l zh_CN 后出现xgettext'ds' 不是内部或外部命令,也不是可运行的程序或批处理文件的错误
原因和解决办法是:
因为windows上没有gettext,所以要安装gettext(python有gettext,但是好像不行,它没有xgettext)
下载地址是:
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-0.17.zip
解压这zip文件到同一个文件夹,比如 C:\Program Files\gettext-utils
然后添加到系统变量的PATH中:
控制面板 > 系统 > 高级 > 环境变量
在系统变量列表中, 选中Path, 然后单击编辑
添加 ;C:\Program Files\gettext-utils\bin 到结尾后一直点确定就行了
你可以用文本文件编译此文件,我用的是pydev,eclipse
编译文件,命令:django-admin.py compilemessages
修改settings.py
注意 USE_I18N =True
另外 注意 'django.middleware.locale.LocaleMiddleware', 的位置.
重新运行:Python manage.py runserver 0.0.0.0:8080
在浏览器中打开:
切换语言:
最后附上代码下载:点击下载此文件
用 django 如何实现的呢,今天看着帮助文档,做出了第一部分。django 国际化,如下三步实现:
1. 第一步:在 Python 代码和模板中嵌入待翻译的字符串,
2. 第二步:把那些字符串翻译成需要支持的语言,并进行相应的编译( 编译po文件)
3. 第三步:在 Django settings 文件中激活本地中间件。'django.middleware.locale.LocaleMiddleware',
我的环境是 window,python2.7,django 1.4 , pydev.
详细过程:
1.创建 django 工程. 你可以用pydev, 也可以用命令.
django-admin.py startproject DjangoI18N
到你创建的工程目录下面建立 app
Python manage.py startapp i18napp
修改 views.py 代码如下:
# Create your views here. from django.http import HttpResponse import time from django.utils.translation import ugettext def home(request): t = time.localtime() n = t[6] weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday','Sunday'] return HttpResponse('Today is:'+weekdays[n]) def trans_home(request): t = time.localtime() n = t[6] weekdays = [ugettext('Monday'),ugettext('Tuesday'),ugettext('Wednesday'),ugettext('Thursday'), ugettext('Friday'),ugettext('Saturday'),ugettext('Sunday')] return HttpResponse('Today is:'+weekdays[n])
urls.py 文件配置:
from django.conf.urls import patterns, include, url urlpatterns = patterns('', # Examples: url(r'^$', 'DjangoI18N.i18napp.views.home'), url(r'^trans1$', 'DjangoI18N.i18napp.views.trans_home'), )
此时,你可以运行 Python manage.py runserver 0.0.0.0:8000
在浏览器中看到如下结果:
2.进行国际化
首先在你的 i18napp app下面建立一个目录 locale. 然后执行命令:django-admin.py makemessages -l zh_CN
可以看到,在locale 目录下 生成了django.po 文件
这一步有可能有错误,在windows 环境下,可以如下解决:
已经解决windows上执行django-admin.py makemessages -l zh_CN 后出现xgettext'ds' 不是内部或外部命令,也不是可运行的程序或批处理文件的错误
原因和解决办法是:
因为windows上没有gettext,所以要安装gettext(python有gettext,但是好像不行,它没有xgettext)
下载地址是:
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-0.17.zip
解压这zip文件到同一个文件夹,比如 C:\Program Files\gettext-utils
然后添加到系统变量的PATH中:
控制面板 > 系统 > 高级 > 环境变量
在系统变量列表中, 选中Path, 然后单击编辑
添加 ;C:\Program Files\gettext-utils\bin 到结尾后一直点确定就行了
你可以用文本文件编译此文件,我用的是pydev,eclipse
编译文件,命令:django-admin.py compilemessages
修改settings.py
注意 USE_I18N =True
另外 注意 'django.middleware.locale.LocaleMiddleware', 的位置.
MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', )
重新运行:Python manage.py runserver 0.0.0.0:8080
在浏览器中打开:
切换语言:
最后附上代码下载:点击下载此文件
From:一号门
Previous:mysql数据库备份恢复常用命令集合
COMMENTS