django 国际化实例之二,基于整个工程template(附源码)

摘要: 在上一篇文章django 国际化实例之一中讲过了,如何用DJANGO实现国际化,但只是在一个app 下做的测试。没有对整个工程进行 国际化。如果要对整个工程实现国际化,怎么做呢?实现四个方面:1 . {% load i18n %}使模版能够访问到访问到标签。2 . {% trans str %}标记翻译一个常量字符串或 可变内容

在上一篇文章django 国际化实例之一中讲过了,如何用DJANGO实现国际化,但只是在一个app 下做的测试。没有对整个工程进行 国际化。如果要对整个工程实现国际化,怎么做呢?实现四个方面:
1 . {% load i18n %}
使模版能够访问到访问到标签。
2 . {% trans str %}
标记翻译一个常量字符串或 可变内容
3 . 模版中的 select 的 name 值必须为"language"
4. 将 testform 的 action 重定向到 /i18n/setlang/,启用了 django.views.i18n.set_language 视图,它的作用是设置用户语言偏好并重定向返回到前一页面

本文实现了一个用下拉框选择语言,页面自动切换语言的django的实现。

1.在工程目录下建立 templates 目录,并配置settings.py

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

2.在view.py 中增加方法:
def trans_template(request):
    #language=request.POST.get('language','zh-CN')
    responseContext={}
    responseContext['lang']=request.LANGUAGE_CODE
    responseContext.update(csrf(request))
    resp = render_to_response('i18n.html', responseContext, 
                                context_instance=RequestContext(request)) 
    return resp 

3.创建 i18n.html 模版文件
{% load i18n %} 
 

   www.yihaomen.com i18n Test
  


  
{% csrf_token %}

{% trans "this is a test of i18n" %}



4.urls.py 中增加
url(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^trans_template$', 'DjangoI18N.i18napp.views.trans_template'),


5.配置与国际化相关的设置
 USE_I18N = True 


 ugettext = lambda s: s 

 LANGUAGES = ( 
    ('en-us', ugettext('English')), 
    ('zh-CN', ugettext('Chinese')), 
 ) 

 TEMPLATE_CONTEXT_PROCESSORS = ( 
    "django.core.context_processors.i18n", 
 )


6.创建和更新国际化语言文件
首先在工程目录下建立 locale 文件夹,然后运行命令:django-admin.py makemessages -l zh_CN

成功后,得到如下目录结构

你可以修改 django.po 文件:

然后你需要编译国际化配置文件,运行命令,同样在工程目录下,也就是你建立的locale 目录上一级目录:
django-admin.py compilemessages

现在启动 django 在浏览器中查看结果如下:



在语言下拉框中选择 中文,结果如下



如果你想默认进入页面就显示中文就在settings.py 中设置:
LANGUAGE_CODE = 'zh-CN'

如果想是英文,当然也可以设置成 en-us

备注:settings.py 中数据库的配置,需要改成你自己的,而且必须启用 sessionmiddleware. 才行。

上一篇django国际化文章参考地址DJANGO 国际化之一

整个工程源代码提供下载,在上一版基础上增加:

点击下载此文件

上一篇: django 国际化实例之一(附源码)
下一篇: java 编程操控 IBM Tivoli Directory Server (附工程源码)
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号