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 ...
随机推荐
- redis排序
1.sort 排序最常见的是sort命令,可以对列表或者有序集合排序,最简单的排序方式如下: > lpush list (integer) > lpush list (integer) & ...
- java 中文繁简体转换工具 opencc4j
创作缘由 对于中文的繁简体转换是一种很常见的需求. 但是很多工具类都是简单的做个映射.(使用map,集合,properties)等. 存在一个严重的问题:特殊词组 的转换可能存在问题. OpenCC ...
- Mac平台下部署UE4工程到iOS设备的流程
1.开发环境 UE4.Xcode.iOS版本情况如下: 1.UE4:当前最新版本Unreal Engine 4.17.2. 2.Xcode:当前最新版本Xcode9.0. 3.iOS:当前最新版本iO ...
- kill all java php rm.sh
#!/bin/sh#根据进程名杀死进程#FileName: killjavaphprm.sh #查看php进程IDecho "php进程ID:"pgrep php #杀死所有php ...
- JavaScript倒计时实现
/** * 倒计时函数 * @param {String}} endTime 终止时间戳 */ const countDown = (endTime, callback) => { const ...
- 直接添加viewController中的view时的注意事项
直接添加viewController中的view时需要注意一个问题,比如: MyTestViewController *vc = [MyTestViewController new]; [self.v ...
- Fiddler使用
1.下载安装 百度下载后,傻瓜式安装. 2.设置 Tools->options->https->选中"Decrpt HTTPS traffic"(Fiddler就 ...
- Vue watch的高级用法
<div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text& ...
- Django_Form验证(三)字段,字段的参数,widgets种类
Form工具是一个很强大的工具,所以他的功能不仅仅是上面2个例子,这里详细记录一下Form的其他功能 字段的一般参数,以CharFields为列子: user=fields.CharField( re ...
- 大数据入门到精通13--为后续和MySQL数据库准备
We will be using the sakila database extensively inside the rest of the course and it would be great ...