Django开启国际化的支持
基础环境介绍
IDE我用的pycharm
Python 3.6.0 (v3.6.0:41df79263a11, Dec 22 2016, 17:23:13)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Django 1.11
开启国际化的支持,需要在settings.py文件中设置
MIDDLEWARE_CLASSES = (
'django.middleware.locale.LocaleMiddleware',
)
LANGUAGE_CODE = 'en'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
LANGUAGES = (
('en', ('English')),
('zh-cn', ('中文简体')),
('zh-tw', ('中文繁體')),
)
#翻译文件所在目录,需要手工创建
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.i18n",
)
#注意:Django 1.9 及以上版本中,语言的代码发生变化(详情链接:github, django ticket,如下
LANGUAGES = (
('en', ('English')),
('zh-hans', ('中文简体')),
('zh-hant', ('中文繁體')),
)
#langues我没配置也没什么问题
home.html页面,本文直接用root url返回的一个html template
html页面内容如下
{% load i18n %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% trans "wis" %}
<h1>hello</h1>
<h1>{% trans "god" %}</h1>
</body>
</html>
现在我的目录结构如下:
bogon:django18 hongzhi.wang$ tree .
.
├── app01
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── day1
│ ├── __init__.py
│ └── quip.py
├── db.sqlite3
├── django18
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── locale
├── manage.py
└── templates
├── home.html
生成国际化需要的文件(注意这时locals目录已经建好)
生成po文件
django-admin makemessages -l zh
然后目录如下:
mojideMacBook-Pro-2:apps hongzhi.wang$ tree locale/
locale/
└── zh
└── LC_MESSAGES
├── django.mo
└── django.po
这时django.po
文件如下:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-26 11:08+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: app01/views.py:7
msgid "Welcome to my site."
msgstr ""
#: templates/home.html:9
msgid "wis"
msgstr ""
#: templates/home.html:11
msgid "god"
msgstr ""
把上段文字的msgstr
修改:
#: templates/home.html:9
msgid "wis"
msgstr "维斯"
#: templates/home.html:11
msgid "god"
msgstr "工单"
检测po文件语法
django-admin makemessages -a
生成mo文件
django-admin compilemessages
然后就可以启动django开始访问这个页面了
测试与验证
本文用的httpie
来测试的,httpie
这里推荐一下,比curl
好用些,python
写的。
mojideMacBook-Pro-2:~ hongzhi.wang$ http http://127.0.0.1:8000/ Content-Language:zh
HTTP/1.0 200 OK
Content-Language: en
Content-Length: 155
Content-Type: text/html; charset=utf-8
Date: Wed, 26 Jul 2017 03:12:31 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
wis
<h1>hello</h1>
<h1>god</h1>
</body>
</html>
mojideMacBook-Pro-2:~ hongzhi.wang$ http http://127.0.0.1:8000/ Accept-Language:zh
HTTP/1.0 200 OK
Content-Language: zh-hans
Content-Length: 161
Content-Type: text/html; charset=utf-8
Date: Wed, 26 Jul 2017 03:12:48 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
维斯
<h1>hello</h1>
<h1>工单</h1>
</body>
</html>
Django开启国际化的支持的更多相关文章
- struts2 笔记02 文件上传、文件下载、类型转换器、国际化的支持
Struts2的上传 1. Struts2默认采用了apache commons-fileupload 2. Struts2支持三种类型的上传组件 3. 需要引入commons-fileupload ...
- activiti5.14版本在线流程设计器的国际化中文支持
参考了前辈的一些国际化支持做法,加上自己对流程的一些理解,做了activiti5.14版本的国际化支持.发现有若干bug,比如属性设置弹出窗口里的grid里的下拉列表不支持显示中文(要修改oryx.d ...
- Django的国际化
Django的国际化 Django基于python的gettext来实现国际化.其过程为安装gettext工具,然后再代码中调用指定方法,然后用gettext提供的程序来把代码中需要翻译的部分找出来写 ...
- Django项目国际化
Django项目国际化 实验环境: py3.4.3 + django1.8.2 + Windows 项目设置 >django-admin startproject I18nDjango > ...
- 基于Django的Disqus如何支持每月80亿PV(转)
原文:基于Django的Disqus如何支持每月80亿PV 本文由 伯乐在线 - 贱圣OMG 翻译.未经许可,禁止转载!英文出处:Matt Robenolt.欢迎加入翻译小组. 现在我们Disqus能 ...
- spring boot: @EnableScheduling开启计划任务支持,@Scheduled计划任务声明
spring boot: @EnableScheduling开启计划任务支持, @Scheduled计划任务声明 package ch2.scheduler2; //日期转换方式 import jav ...
- 64位win2008下IIS未开启32位支持导致DLL无法加载问题
部署一个WEB项目,在本机.本地服务器都没有问题,但部署到远程服务器以后,提示有个DLL无法加载: Server Error in '/' Application. Could not load fi ...
- 菜鸟学Struts——I18N对国际化的支持
大家肯定都喜欢玩游戏吧. 对于是一个游戏迷的话,肯定玩过不少很棒的经典单机游戏.比方说,国产的<古墓丽影>.<刺客信条>.<鬼泣>国产的仙剑.古剑等.在众多游戏系列 ...
- LNMP升级开启TLSv1.3支持
LNMP升级开启TLSv1.3支持 TLSv1.3版本的优势:https://baijiahao.baidu.com/s?id=1611365293186683991&wfr=spider&a ...
随机推荐
- linux git clone 指定分支
git clone -b develop http://192.168.11.11:8888/scm/git/vrmmo 指定下载develop分支
- requests_html 使用
安装 pip install requests-html #2种方式爬取 博客园from requests_html import HTMLSession session=HTMLSession() ...
- Tomcat的简单归纳总结
2017年08月09日 12:39:23 大道之简 阅读数:1072 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/HcJsJqJSSM/ar ...
- JAVA多线程17个问题
1.Thread 类中的start() 和 run() 方法有什么区别? Thread.start()方法(native)启动线程,使之进入就绪状态,当cpu分配时间该线程时,由JVM调度执行run( ...
- python学习笔记_week28
heap import heapq import random heap = [] data = list(range(10000)) random.shuffle(data) # for num i ...
- 微信调用itchat库 实现发消息
import itchat,timefrom itchat.content import * itchat.auto_login(enableCmdQR=-1)while True: for i in ...
- python爬虫之解析库Beautiful Soup
为何要用Beautiful Soup Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式, 是一个 ...
- js 模拟css3 动画1
<html> <head> <title> javaScript缓动入门 </title> </head> <body> < ...
- Java中的包装数据类型
基本类型 包装器类型 boolean Boolean char Character int Integer byte Byte short Short long Long float Float do ...
- .NET代码混淆——开源.net 混淆器ConfuserEx介绍
转载:https://blog.csdn.net/xiaoyong_net/article/details/78988264