django 1.8 官方文档翻译:9-1-4 格式本地化
来源:互联网 发布:java执行cmd命令 参数 编辑:程序博客网 时间:2024/04/30 20:19
格式本地化
概览
Django的格式化系统可以在模板中使用当前地区特定的格式,来展示日期、时间和数字。也可以处理表单中输入的本地化。
当它被开启时,访问相同内容的两个用户可能会看到以不同方式格式化的日期、时间和数字,这取决于它们的当前地区的格式。
格式化系统默认是禁用的。需要在你的设置文件中设置USE_L10N = True
来启用它。
注意
为了方便起见,django-admin startproject创建的默认的
settings.py文件包含了
[
USE_L10N = True](../../ref/settings.html#std:setting-USE_L10N) 的设置。
但是要注意,要开启千位分隔符的数字格式化,你需要在你的设置文件中设置USE_THOUSAND_SEPARATOR = True
。或者,你也可以在你的模板中使用intcomma
来格式化数字。
注意
USE_I18N
是另一个独立的并且相关的设置,它控制着Django是否应该开启翻译。详见翻译。
表单中的本地化识别输入
格式化开启之后,Django可以在表单中使用本地化格式来解析日期、时间和数字。也就是说,在表单上输入时,它会尝试不同的格式和地区来猜测用户使用的格式。
注意
Django对于展示数据,使用和解析数据不同的格式。尤其是,解析日期的格式不能使用%a
(星期名称的缩写),%A
(星期名称的全称),%b
(月份名称的缩写), %B
(月份名称的全称),或者%p
(上午/下午)。
只是使用localize
参数,就能开启表单字段的本地化输入和输出:
class CashRegisterForm(forms.Form): product = forms.CharField() revenue = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)
在模板中控制本地化
当你使用USE_L10N
来开启格式化的时候,Django会尝试使用地区特定的格式,无论值在模板的什么位置输出。
然而,这对于本地化的值不可能总是十分合适,如果你在输出JavaScript或者机器阅读的XML,你会想要使用去本地化的值。你也可能想只在特定的模板中使用本地化,而不是任何位置都使用。
DJango提供了l10n
模板库,包含以下标签和过滤器,来实现对本地化的精细控制。
模板标签
localize
在包含的代码块内开启或关闭模板变量的本地化。
这个标签可以对本地化进行比USE_L10N
更加精细的操作。
这样做来为一个模板激活或禁用本地化:
{% load l10n %}{% localize on %} {{ value }}{% endlocalize %}{% localize off %} {{ value }}{% endlocalize %}
注意
在 {% localize %}
代码块内并不遵循f USE_L10N
的值。
对于在每个变量基础上执行相同工作的模板过滤器,参见localize
和 unlocalize
。
模板过滤器
localize
强制单一值的本地化。
例如:
{% load l10n %}{{ value|localize }}
使用unlocalize
来在单一值上禁用本地化。使用localize
模板标签来在大块的模板区域内控制本地化。
unlocalize
强制单一值不带本地化输出。
例如:
{% load l10n %}{{ value|unlocalize }}
使用localize
来强制单一值的本地化。使用localize
模板标签来在大块的模板区域内控制本地化。
创建自定义的格式文件
Django为许多地区提供了格式定义,但是有时你可能想要创建你自己的格式,因为你的的确并没有现成的格式文件,或者你想要覆写其中的一些值。
Changed in Django 1.8:
添加了指定FORMAT_MODULE_PATH
为列表的功能。之前只支持单一的字符串值。
指定你首先放置格式文件的位置来使用自定义格式。把你的FORMAT_MODULE_PATH
设置设置为格式文件存在的包名来使用它,例如:
FORMAT_MODULE_PATH = [ 'mysite.formats', 'some_app.formats',]
文件并不直接放在这个目录中,而是放在和地区名称相同的目录中,文件也必须名为formats.py
。
需要这样一个结构来自定义英文格式:
mysite/ formats/ __init__.py en/ __init__.py formats.py
其中formats.py
包含自定义的格式定义。例如:
from __future__ import unicode_literalsTHOUSAND_SEPARATOR = '\xa0'
使用非间断空格(Unicode 00A0
)作为千位分隔符,来代替英语中默认的逗号。
提供本地化格式的限制
一些地区对数字使用上下文敏感的格式,Django的本地化系统不能自动处理它。
瑞士(德语)
瑞士的数字格式化取决于被格式化的数字类型。对于货币值,使用逗号作为千位分隔符,以及使用小数点作为十进制分隔符。对于其它数字,逗号用于十进制分隔符,空格用于千位分隔符。Django提供的本地格式使用通用的分隔符,即逗号用于十进制分隔符,空格用于千位分隔符。
译者:Django 文档协作翻译小组,原文:ocalized Web UI formatting and form input。
本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。
Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
- django 1.8 官方文档翻译:9-1-4 格式本地化
- django 1.8 官方文档翻译: 9-1-1 国际化和本地化
- django 1.8 官方文档翻译: 1-1-1 Django初探
- django 1.8 官方文档翻译: 6-6-1 部署 Django
- django 1.8 官方文档翻译:4-2-1 Django模版语言
- django 1.8 官方文档翻译: 2-4-4 编写迁移
- django 1.8 官方文档翻译: 4-2-4 人性化
- django 1.8 官方文档翻译:2-5-9 条件表达式
- django 1.8 官方文档翻译: 2-4-3 模式编辑器
- django 1.8 官方文档翻译: 3-3-4 管理文件
- django 1.8 官方文档翻译: 5-1-1 使用表单
- django 1.8 官方文档翻译:2-1-1 模型语法
- django 1.8 官方文档翻译: 3-1-2 编写视图
- django 1.8 官方文档翻译: 3-6-1 中间件概览
- django 1.8 官方文档翻译: 2-2-1 执行查询
- django 1.8 官方文档翻译: 3-3-1 文件上传
- django 1.8 官方文档翻译:5-1-2 表单API
- django 1.8 官方文档翻译:13-1-3 密码管理
- mac是否启动了ssh
- IO多路复用之select总结
- Git 常用命令
- 剑指offer 栈和队列
- Scala深入浅出实战经典:22,Scala中的闭包实战详解
- django 1.8 官方文档翻译:9-1-4 格式本地化
- IO多路复用之poll总结
- 剑指offer 树
- IO多路复用之epoll总结
- VC文件扩展名解读大全
- Scala深入浅出实战经典:23,Scala高阶函数实战详解
- GitHub 上都有哪些值得关注学习的 iOS 开源项目?
- select、poll、epoll之间的区别总结[整理]
- 优秀的开源库