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 25 Python
Python动态加载模块的3种方法
Nov 22 Python
Python文件去除注释的方法
May 25 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
详解python编译器和解释器的区别
Jun 24 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
pytorch 自定义参数不更新方式
Jan 06 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
Selenium向iframe富文本框输入内容过程图解
Apr 10 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
Python docx库删除复制paragraph及行高设置图片插入示例
Jul 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
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
PHP简单遍历对象示例
2016/09/28 PHP
json跟xml的对比分析
2008/06/10 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
python系列 文件操作的代码
2019/10/06 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
python实现密码强度校验
2020/03/18 Python
django实现模型字段动态choice的操作
2020/04/01 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
创业计划书的写作技巧及要点
2014/01/31 职场文书
会计核算科岗位职责
2014/03/19 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
电力培训学习心得体会
2016/01/11 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android
使用refresh_token实现无感刷新页面
2022/04/26 Javascript
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python