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 相关文章推荐
pymongo给mongodb创建索引的简单实现方法
May 06 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
利用Python如何生成随机密码
Apr 20 Python
详解K-means算法在Python中的实现
Dec 05 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
python 判断参数为Nonetype类型或空的实例
Oct 30 Python
Python 支付整合开发包的实现
Jan 23 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
基于Python把网站域名解析成ip地址
May 25 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
PHP5 安装方法
2006/10/09 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
深入理解Python中变量赋值的问题
2017/01/12 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
求职信内容怎么写
2014/05/26 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
大学生工作求职信
2014/06/23 职场文书
大学生入党群众意见书
2015/06/02 职场文书
首都博物馆观后感
2015/06/05 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫
Python使用Web框架Flask开发项目
2022/06/01 Python
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS