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 相关文章推荐
总结用Pdb库调试Python的方式及常用的命令
Aug 18 Python
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
浅谈Python peewee 使用经验
Oct 20 Python
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
Feb 26 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
python删除字符串中指定字符的方法
Aug 13 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
python实现门限回归方式
Feb 29 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 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
基于mysql的论坛(4)
2006/10/09 PHP
Yii框架form表单用法实例
2014/12/04 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
JavaScript中常用的运算符小结
2012/01/18 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
详解如何减少python内存的消耗
2019/08/09 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
创业计划书如何吸引他人眼球
2014/01/10 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
消防志愿者活动方案
2014/08/23 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python