django的settings中设置中文支持的实现


Posted in Python onApril 28, 2019

今天创建了个django工程,用的是目前django 1.9.6,创建工程后,settings.py中设置中文显示支持(最简单的,例如把admin界面的默认英文改成中文),定义

TIME_ZONE = 'Asia/Shanghai'
LANGUAGE_CODE = 'zh-cn'

当然TIME_ZONE只是指定时区,和中文显示没有关系,这里一并修改了默认值。结果运行项目时报错了,如下:

django IOError: No translation files found for default language zh-cn

即找不到zh-cn对应的本地化文件。一般而言,zh-cn编码对应的本地化文件夹为zh_CN,我去django的安装目录查找zh_CN,结果确实没有找到,在django安装目录的contrib子目录下的一系列子目录的locale文件夹中,没有zh_CN,而有zh_Hans。不知道为什么django的这个版本没有zh_CN文件夹,可能是一个bug吧。网上有人说将zh_Hans目录全部复制一份并命名为zh_CN,就可以解决这个问题,我试了下,再次运行确实可行了,在admin界面显示了中文。至于这种比较山寨的方法有没有隐患,现在还不知道,以后遇到再说吧。

不过话说回来,其实还有正统的方式去生成国际化文件,如下命令:

django-admin.py makemessages -l zh_CN

不过这个需要gettext组件,如果你是在windows上开发,那么你需要自己安装这个组件,

在http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/下载gettext-runtime-X.zip以及gettext-tools-X.zip的最新版(注:X为版本号)并解压后,将两个bin目录可以合并后放入系统环境变量中。不过该方法我没有验证,感兴趣的可以试试。

后来我又想,django之前的老版本是有zh_CN的,要说这个一个bug,估计也比较低级,按理不应该的。于是又查,发现貌似zh_Hans可能已经替代zh_CN了。Han表示汉字,s表示Simplified简体,反正我设置为LANGUAGE_CODE = 'zh-hans'也是正常显示中文。

zh-cn will expired in Django1.9, the new format is zh-hans, but drf3.1.0 does not support this type of language.

上面的意思是在django1.9中,zh-cn过期了,可以用zh-hans替代,不过可能有些django的第三方模块还没有跟上这个变化。

总之,仁者见仁智者见智了,其实大可不必如此研究,只是突然对这个比较感兴趣所以多研究了一会。

ps:网上很多地方对于LANGUAGE_CODE = 'zh-cn'有各种不同写法,包括zh_CN,zh-CN等,有的人还说只能用某某写法等,反正我是没看出来区别,我也都试了,都没发现问题。

另外说个题外话,之前一直都不知道settings.py中的USE_I18N和USE_L10N是什么意思,直到看到了下面的一段话:

当 Web 服务搭建好以后,可以接收来自全球不同国家用户访问。这样就要求开发人员调整软件,使之能适用于不同的语言,即国际化和本地化。国际化

-- Internationalization,i 和 n 之间有 18 个字母,简称 I18N,。本地化 -- localization, l 和 n 之间有 10 个字母,简称 L10N。国际化意味着 Web

产品有适用于任何地方的潜力,针对程序开发人员;本地化则是指使一个国际化的程序为了在某个特定地区使用而进行实际翻译的过程,针对翻译人员而言。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 正则表达式操作指南
May 04 Python
Python查找函数f(x)=0根的解决方法
May 07 Python
详解Django rest_framework实现RESTful API
May 24 Python
详解Django 中是否使用时区的区别
Jun 14 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
Python3.8中使用f-strings调试
May 22 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
三个python爬虫项目实例代码
Dec 28 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
python异常中else的实例用法
Jun 15 Python
Django数据库类库MySQLdb使用详解
Apr 28 #Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 #Python
​如何愉快地迁移到 Python 3
Apr 28 #Python
python学习开发mock接口
Apr 28 #Python
Python简单基础小程序的实例代码
Apr 28 #Python
python实现Excel文件转换为TXT文件
Apr 28 #Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 #Python
You might like
php获取YouTube视频信息的方法
2015/02/11 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
JS 控制非法字符的输入代码
2009/12/04 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
python ip正则式
2009/05/07 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
python的re正则表达式实例代码
2018/01/24 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
求职简历自荐信范文
2013/10/21 职场文书
大专计算机个人求职的自我评价
2013/10/21 职场文书
活动志愿者自荐信
2014/01/27 职场文书
父母对孩子说的话
2014/04/12 职场文书
维修工先进事迹
2014/05/29 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
党员作风建设整改方案
2014/10/27 职场文书
优秀工作者事迹材料
2014/12/26 职场文书