涉及两部分内容: py/html文件国际化、外部js文件国际化

步骤

1. settings.py 激活相应的配置

2. 针对py文件,需要注意被翻译代码的编写方式

3. 针对html文件,需要注意被翻译字符的编写方式

4. 外部脚本js,包含一些交互提示信息,国际化版本需要翻译这些信息。要实现web标准化,我们首先必须实现HTML页面结构、行为、样式的分离。如何不改变外部脚本的引入方式,同时实现外部脚本国际化的问题?django提供了针对外部脚本国际化的解决方案!

一、settings.py配置

1. LANGUAGES 设置网站所支持的所有语言,如 (('en', u'英文'), ('zh-cn', u'简体中文'))

2. LANGUAGE_CODE 设置缺省语言,如 en

3. USE_I18N = True 

4. MIDDLEWARE_CLASSES中加入'django.middleware.locale.LocaleMiddleware',要放在SessionMiddleware和CacheMiddleware的后面,其他中间件的前面

二、Py文件编码事项

1. 文件编码 #-*- coding:utf-8 -*-     其中utf-8不要写成utf8

2.字符串换行,不要使用“\”进行换行    改为your_string = ( u"翻译的字符串"
                                                                                   u"很长很长")

3.不要使用元组作为字符串参数,因为无法准确定位带翻译的文字,需要改写为:your_string = "翻译的字符串, %(nm1)s,很长很长噻 %(nm2)s" % {nm1: "jim", nm2:"lily"}

三、HTML文件翻译事项

1. 文件首行添加 {% load i18n %}

2. 需要翻译的字符串使用 {%trans '被翻译字符串'%}

四、JS脚本翻译事项

1. 在url.py中加入: (r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog')

2. html中引用jsi18n脚本: <script src="/jsi18n/appname1+appname2”></script> 如果项目中翻译内容很多,为方便管理可以在每个app下的local目录生成翻译文件,如此无需每次访问都加在全部翻译内容; 如果项目翻译内容较少,可以考虑整体目录下生成翻译文件,一次性加载全部翻译内容。

3. 在JS中使用gettext函数翻译:alert(gettext('系统繁忙,请稍后再试'));

五、创建语言文件

方案一:

在manage.py同级目录下手动创建 conf/locale目录,运行 python manage.py makemessages -l en

上述命令会生成.po文件,翻译过后,使用命令 python manage.py compilemessages 进行编译,则会生成相应的.mo文件

方案二:

每个app下手动创建locale目录,然后cd 到该app目录下,运行 python ../manage.py makemessages -l en

上述命令会生成.po文件,翻译过后,使用命令 python manage.py compilemessages 进行编译,则会生成相应的.mo文件

注意事项:

1. py、html文件中的需要翻译的字符串运行上述命令会自动识别,并添加到django.po文件中

2. 外部js文件中需要翻译的字符串需要手动创建djangojs.po文件,并将翻译字符串写进去

3. 如果改动了mo文件,由于缓存的原因,需要重启端口才能生效

六、设置页面语言

判断session是否设置了django_language,如果设置,程序自动使用该语言进行翻译,否则使用settings.py里默认缺省语言LANGUAGE_CODE

示例代码:request.session['django_language'] = “zh-cn” ,设置后需要刷新页面才可看到效果。

Django国际化注意事项的更多相关文章

  1. Django学习之五:Django 之 注意事项及汇总

    目录 Django 之 注意事项及汇总 全局 settings model模块-模型模块 URLs模块 Templates System 模版模块 View/HttpRequest/HttpRespo ...

  2. [Django框架 - 注意事项,安装,项目搭建,小白必会三板斧]

    [Django框架 - 注意事项,安装,项目搭建,小白必会三板斧] 想要正常运行django项目所需要知道的注意事项 1. 计算机名称不能有中文,不然bug在哪儿你都不知道! 2. 项目名和py文件名 ...

  3. Django 国际化和本地化

    所谓的国际化,是指使用不同语言的用户在访问同一个网站页面时能够看到符合其自身语言的文本页面. 国际化的基本原理是: 浏览器通过LANGUAGE_CODE在HTTP请求头中告诉网站后台服务器用户所需要的 ...

  4. Django国际化和本地化

    把django的这篇文档看了一遍,基本弄懂了,讲的也挺详细的 https://docs.djangoproject.com/en/1.6/topics/i18n/ 首先是国际化和本地化概念: 1,国际 ...

  5. django国际化的简单设置

    设置国际化的具体步骤: 一.国际化 1)效果:针对不同的国家的人可以配置不同的语言(一般是英文和中文,  English  Chinese) 2)目的:增加项目的用户量 3)难度:不难 比较费劲的就是 ...

  6. django国际化总结

    转:http://blog.csdn.net/ybdesire/article/details/46806739

  7. virtualenv 和apache 搭建django时注意事项

    在对应网站的xxx.conf中 WSGIDaemonProcess http://127.0.0.1:80 python-path=/home/user/my_blog_2:/home/user/ve ...

  8. Django分析之国际化处理

    最近在公司终于开始做web开发了,本以为会是简单的首页之类的小规模项目,结果上来就是一个处理大数据分析的项目,一个关于油品分析的系统,不过我接到的第一个任务是做这个网站的国际化处理,虽然项目还没有上线 ...

  9. Django:之安全、国际化和session

    Django 安全 以下是关于Django安全的一些特征,它包括如何使基于Django的网站的一些建议. 关于安全的官方文档:https://docs.djangoproject.com/en/dev ...

随机推荐

  1. DevExpress LookUpEdit 初始化(数据加载) 底层类

    (1)三个效果   1>传的参数较多,对数据表无要求,但可以设置下拉列的宽度和标题       2>传的参数很少,对数据表有要求(必须是处理好的)       3>传的参数一般,对数 ...

  2. 【转】java 解析 plist文件

    为了方便的将spritesheet的图导入我自己的动画编辑器!我做了plist文件解析DOM解析比较麻烦 因为element getChildNodes 会获取到text对象.而这个对象可能是一个空白 ...

  3. cocos2d-x学习日志(13) --A星寻路算法demo

    你是否在做一款游戏的时候想创造一些怪兽或者游戏主角,让它们移动到特定的位置,避开墙壁和障碍物呢?如果是的话,请看这篇教程,我们会展示如何使用A星寻路算法来实现它! A星算法简介: A*搜寻算法俗称A星 ...

  4. [React] React Fundamentals: JSX Deep Dive

    "JSX transforms from an XML-like syntax into native JavaScript. XML elements and attributes are ...

  5. [D3] 8. Margins

    If you want ot add margins, should append graphics container in svg var svg = d3.select('#chartArea' ...

  6. 文件读写操作(含SDCard的读写)

    1.在AndroidManifest文件下添加SDCard的读写权限 <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name ...

  7. LayoutInflater的inflate函数用法

    LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: LayoutInflater inflater=(Layo ...

  8. Google C++ Style Guide在C++11普及后的变化

    转 http://www.cnblogs.com/chen3feng/p/5972967.html?from=timeline&isappinstalled=0&lwfrom=user ...

  9. asp.net ueditor 图片上传路径问题解决

    最近练习做一个新闻系统,其中不能少了添加新闻和修改新闻的功能 ,而且还要添加图片.添加文字样式, 所以不得不使用富文本编辑器,在kindeditor和ueditor中,选择了目前还在持续更新的百度产品 ...

  10. C#语法糖之第四篇: 扩展方法

    今天继续分享C#4.0语法糖的扩展方法,这个方法也是我本人比较喜欢的方法.大家先想想比如我们以前写的原始类型不能满足现在的需求,而需要在该类型中添加新的方法来实现时大家会怎么做.我先说一下我没有学习到 ...