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 基础学习第二弹 类属性和实例属性
Aug 27 Python
python实现域名系统(DNS)正向查询的方法
Apr 19 Python
Python中int()函数的用法浅析
Oct 17 Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
我们为什么要减少Python中循环的使用
Jul 10 Python
tensorflow之并行读入数据详解
Feb 05 Python
python 伯努利分布详解
Feb 25 Python
python数据分析工具之 matplotlib详解
Apr 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/09/05 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
用js编写留言板
2020/03/17 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Saltstack快速入门简单汇总
2016/03/01 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
介绍一下UNIX启动过程
2013/11/14 面试题
财务助理岗位职责
2013/11/10 职场文书
文秘人员工作职责
2014/01/31 职场文书
测量工程专业求职信
2014/02/24 职场文书
安踏广告词改编版
2014/03/21 职场文书
专项法律服务方案
2014/06/11 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
python区块链实现简版工作量证明
2022/05/25 Python