django 国际化实例之二,基于整个工程template(附源码)
By:Roy.LiuLast updated:2012-08-10
在上一篇文章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
2.在view.py 中增加方法:
3.创建 i18n.html 模版文件
4.urls.py 中增加
5.配置与国际化相关的设置
6.创建和更新国际化语言文件
首先在工程目录下建立 locale 文件夹,然后运行命令:django-admin.py makemessages -l zh_CN

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

你可以修改 django.po 文件:

然后你需要编译国际化配置文件,运行命令,同样在工程目录下,也就是你建立的locale 目录上一级目录:
django-admin.py compilemessages
现在启动 django 在浏览器中查看结果如下:

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

如果你想默认进入页面就显示中文就在settings.py 中设置:
如果想是英文,当然也可以设置成 en-us
备注:settings.py 中数据库的配置,需要改成你自己的,而且必须启用 sessionmiddleware. 才行。
上一篇django国际化文章参考地址DJANGO 国际化之一
整个工程源代码提供下载,在上一版基础上增加:
点击下载此文件
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 %} <title> www.yihaomen.com i18n Test</title> <script> function changelang(){ myform = document.getElementById(&# 39 ;langform&# 39 ;); myform.submit(); } </script> <form name= ""langform"" action= ""/i18n/setlang/"" id= ""langform"" method= "'post'" > {% csrf_token %} <select id= ""language"" name= ""language"" onchange= ""javascript:changelang();"" > <option value= """" selected= "" >select</option> {% for lang in LANGUAGES%} <option value= ""{{" lang. 0 = "" }}"= "" > {{ lang. 1 }}</option> {%endfor%} </select> </form> <p>{% trans "this is a test of i18n" %}</p> |
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 国际化之一
整个工程源代码提供下载,在上一版基础上增加:
点击下载此文件
From:一号门
Previous:django 国际化实例之一(附源码)
RELATED ARTICLES
- 利用Python脚本调用ssh scp命令批量拷贝文件
- django 'dict' object has no attribute get_absolute_url or other attribute
- Python MD5 Hashing
- 利用python ipset来设置linux防火墙黑白名单的方法
- Django 1.11.20,python3.6设置Admin 显示外键对象问题
- 网页加载了CSS,却不生效的奇葩问题
- python3,Django验证码生成方法
- Django 1.11 自定义标签之后,可以不在每个html页面引用就生效吗?
- Django 1.10 以上版本 url 配置注意事项
- 爬取某pygame技术博客
- django 1.9.7 No module named importlib
- 获取文件 MD5和SHA1
- Django 中文手册 chm 文档, 供下载参考
- django.db.utils.OperationalError: (1068, 'Multiple
- python/django生成动态验证码, 动态刷新, 直接修改 img src 属性
- django访问静态资源文件报编码错误解决办法
- python whl 格式文件的安装
- python开发常见模块的安装
- python 调用SVN 命令报编码错误的解决办法
- Django request 获取全路径的方法
COMMENTS