django的i18n

来源:互联网 发布:mac bilibili直播端 编辑:程序博客网 时间:2024/06/05 08:05
一、三种程序中的用法
1、python代码里的翻译
from django.utils.translation import ugettext as _from django.utils.translation import ugettext_lazy as _
注意model,form这种是只加载一次的 需要ugettext_lazy,不然语言在浏览器端 动态切换时会有问题
view这种使用ugettext

django-admin makemessages  -l zh_CN

2、django html模板里的翻译
{% load i18n %}

{%trans 'xxxxx' %}
django-admin makemessages  -l zh_CN


3、js里的翻译
项目url.py
url(r'^jsi18n/(?P<packages>\S+)/$', 'django.views.i18n.javascript_catalog'),
<script src="{% url 'django.views.i18n.javascript_catalog' 'sql' %}"></script><script src="your js"></script>

gettext('this is a test')

django-admin makemessages -d djangojs -l zh_CN

这三种都需要
django-admin compilemessages

二、两种实际运行方式:
静态方式:指定
LANGUAGE_CODE = 'zh-CN'
和浏览器无关,只显示中文

动态可切换方式
添加'django.middleware.locale.LocaleMiddleware',
可根据用户浏览器偏好,此时LANGUAGE_CODE不生效。
根据HTTP请求头来决定。

Accept
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding
gzip, deflate
Accept-Language
zh-CN,en-US;q=0.7,en;q=0.3
Cache-Control
max-age=0
中指定的语言返回对应的语言。这种方式可编程,在cookie可以指定zh-cn,此种 情况会忽略HTTP请求头的指定的语言。

0 0