Django国际化注意事项
2014-11-26 17:00
169 查看
涉及两部分内容: py/html文件国际化、外部js文件国际化
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” ,设置后需要刷新页面才可看到效果。
步骤
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不要写成utf82.字符串换行,不要使用“\”进行换行 改为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的User Model,扩展 AbstractUser类注意事项
- django 数据库增强工具 south 的安装使用和注意事项。。。
- django的版本从1.2升级到1.3的注意事项
- django+celery注意事项
- django在project下的app目录下添加模板文件夹templates注意事项
- Qt国际化及使用时注意事项
- [置顶] Django创建项目与应用,及扩展与注意事项(一)
- django 笔记4-file and code templates,xadmin后台建立,xadmin源代码注意事项
- Django中日期处理注意事项与自定义时间格式转换详解
- django ManyToMany 使用的注意事项
- 部署django,注意事项
- 使用pycharm开发多个django项目注意事项
- Django从1.8升级到2.0注意事项
- django使用python manage.py syncdb注意事项
- django建立superusers注意事项
- Django中的原子事务相关注意事项
- 国际化编码要注意的三个事项
- Django从1.8升级到2.0注意事项
- django 2.0更新的10条注意事项总结
- Django forms.Form自定义方法注意事项