Django的国际化
来源:互联网 发布:微博怎么设置个性域名 编辑:程序博客网 时间:2024/05/19 02:18
如果对国际化概念不清楚的话,先看这篇 python的国际化gettext模块。
下面直接演示在Django中是怎么个国际化流程。
views.py相关代码
from django.http import HttpResponsefrom django.utils.translation import gettextdef index(request): return HttpResponse(gettext("hello world")) # 标记待翻译字符串
settings.py相关设置
LANGUAGE_CODE = 'zh-hans'USE_I18N = TrueLOCALE_PATHS = [os.path.join(BASE_DIR, 'locale')]# 并把中间件'django.middleware.locale.LocaleMiddleware'加进去,有先后顺序,要在SessionMiddleware后面,CommonMiddleware前面。
从源码中抽取待翻译字符串生成po文件
python3 manage.py makemessages -l zh_hans # 注意这里是zh_hans,而不是zh-hans# 会在项目根目录下自动创建目录和文件locale/zh_hans/LC_MESSAGES/django.po。
编辑po文件, 在msgstr输入对应的中文
msgid "hello world"msgstr "你好世界"
编译成mo文件 python3 manage.py compilemessages
运行server,并浏览器访问这个接口,会看到 你好世界
至此,整个流程就通了。
还可以由客户端自己指定语言,设置http头的Accept-Language就行了,会优先读这个,没有的话才读的settings.py里面全局的LANGUAGE_CODE. 优先读取哪个语言的逻辑在LocaleMiddleware里面。
如果是浏览器的话,一般浏览器设置什么语言,发请求的时候,Accept-Language会自动设置成什么语言。所以如果看到settings.py设置LANGUAGE_CODE=’en-us’,而浏览器访问的时候却显示中文,不要惊讶,是因为Accept-Language优先级高。
下面用Paw演示一下。
更多细节请看文档
阅读全文
1 0
- django的国际化
- Django国际化的实现
- Django的国际化
- Django的国际化
- django js的国际化步骤
- 7-24 django的国际化
- Django国际化
- 【Django】 国际化
- Django国际化
- Django国际化
- django 国际化
- 实践 Django 的 i18n(国际化)
- Django 1.5 + Python 2.7.3 关于Django的国际化(i18n)
- django国际化环境配置
- Django实现国际化
- Django配合Javascript国际化
- Django 国际化简明手册。
- Django i18n国际化
- Codeforce 868 C Qualification Rounds (计数原理)
- 多媒体编辑模块架构设计
- HDU5655
- 达内课程-高级流/操作流BufferedOutputStream/BufferedInputStream
- leetcode013-Maximal Square(dp)
- Django的国际化
- 对象构造和初始化
- hexo yilia主题添加文章访问量统计
- intellij tab键改为4个空格
- Java【集合系列】-08-List总结(LinkedList, ArrayList等使用场景和性能分析)
- 【计算机视觉】分辨率与超分辨率图像重建
- bzoj十一月份月赛 Problem A: 组题
- redis cluster的安装
- Java基础之Scanner,Random类的对象