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 相关文章推荐
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
Python中比较特别的除法运算和幂运算介绍
Apr 05 Python
python获取list下标及其值的简单方法
Sep 12 Python
python脚本替换指定行实现步骤
Jul 11 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
在python中使用with打开多个文件的方法
Jan 07 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
详细分析Python可变对象和不可变对象
Jul 09 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单例模式
2014/11/25 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
Vue开发环境跨域访问问题
2020/01/22 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
python语言中有算法吗
2020/06/16 Python
基于python实现操作redis及消息队列
2020/08/27 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
工程技术员岗位职责
2014/03/02 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
新书发布会策划方案
2014/06/09 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
商品陈列协议书
2014/09/29 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
小学语文复习计划
2015/01/19 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
MySQL 字符集 character
2022/05/04 MySQL