使用 django.utils.translation.gettext_lazy() 函数,使得其中的值只有在访问时才会被翻译,而不是在 gettext_lazy() 被调用时翻译。

例如:要翻译一个模型的 help_text,按以下进行:

from django.utils.translation import ugettext_lazy

class MyThing(models.Model):

name = models.CharField(help_text=ugettext_lazy('This is the help text'))

在这个例子中, ugettext_lazy() 将字符串作为惰性参照存储,而不是实际翻译。 翻译工作将在字符串在字符串上下文中被用到时进行,比如在Django管理页面提交模板时。

在Python中,无论何处你要使用一个unicode 字符串(一个unicode 类型的对象),您都可以使用一个 ugettext_lazy() 调用的结果。 一个ugettext_lazy()对象并不知道如何把它自己转换成一个字节串。如果你尝试在一个需要字节串的地方使用它,事情将不会如你期待的那样。 同样,你也不能在一个字节串中使用一个 unicode 字符串。所以,这同常规的Python行为是一致的。 例如:

# This is fine: putting a unicode proxy into a unicode string.

u"Hello %s" % ugettext_lazy("people")

# This will not work, since you cannot insert a unicode object

# into a bytestring (nor can you insert our unicode proxy there)

"Hello %s" % ugettext_lazy("people")

如果你曾经见到到像"hello"这样的输出,你就可能在一个字节串中插入了ugettext_lazy()的结果。 在您的代码中,那是一个漏洞。

如果觉得 gettext_lazy 太过冗长,可以用 _ (下划线)作为别名,就像这样:

from django.utils.translation import ugettext_lazy as _

class MyThing(models.Model):

name = models.CharField(help_text=_('This is the help text'))

在Django模型中总是无一例外的使用惰性翻译。 为了翻译,字段名和表名应该被标记。(否则的话,在管理界面中它们将不会被翻译) 这意味着在Meta类中显式地编写verbose_nane和verbose_name_plural选项,而不是依赖于Django默认的verbose_name和verbose_name_plural(通过检查model的类名得到)。

from django.utils.translation import ugettext_lazy as _

class MyThing(models.Model):

name = models.CharField(_('name'), help_text=_('This is the help text'))

class Meta:

verbose_name = _('my thing')

verbose_name_plural = _('mythings')

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

python 惰性_Django中的“惰性翻译”方法的相关使用相关推荐

  1. python excel绘图-利用python在excel中画图的实现方法

    一.前言 以前大学时候,学EXCEL看到N多大神利用excel画图,觉得很不可思议.今个学了一个来月python,膨胀了就想用excel画图.当然,其实用画图这个词不甚严谨,实际上是利用opencv遍 ...

  2. python设置cookie_Python中cookie的设置方法

    学习目标: 掌握 Cookie 的定义和使用 Cookie 定义 Cookie,有时也用其复数形式Cookies. 指的是由服务端生成, 保存在客户端的一种数据存储形式,内部以 key-value 键 ...

  3. python 遍历_Python中遍历列表的方法总结

    Python中遍历列表有以下几种方法: 一.for循环遍历 lists = ["m1", 1900, "m2", 2000] for item in lists ...

  4. Python打印输出数组中全部元素的方法

    学习Python的人都知道数组是最常用的的数据类型,为了保证程序的正确性,需要调试程序. 因此,需要在程序中控制台中打印数组的全部元素,如果数组的容量较小,例如 只含有10个元素,采用print命令或 ...

  5. python time strptime_Python中操作时间之strptime()方法的使用

    strptime()方法分析表示根据格式的时间字符串.返回值是一个struct_time所返回gmtime()或localtime(). 格式参数使用相同的指令使用strftime();它默认为&qu ...

  6. 【python】sklearn中PCA的使用方法

    from sklearn.decomposition import PCA PCA 主成分分析(Principal Components Analysis),简称PCA,是一种数据降维技术,用于数据预 ...

  7. python笔记—文件中的f.readline()方法解析

    ** 首先一般解读是 f.readline() :从文件中读取一整行字符串(包括末尾的换行'\n') 通过例子具体来看 1. 编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏 ...

  8. Python:numpy中arange的使用方法

    >>> np.arange(3) array([0, 1, 2]) >>> np.arange(1,3,0.3) array([ 1. ,  1.3,  1.6,  ...

  9. python把数据写入excel_Python向excel中写入数据的方法

    Python向excel中写入数据的方法 最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中. 数据导入之前需要安装 x ...

最新文章

  1. C++ multimap 的插入,遍历,删除
  2. Python实现微信消息防撤回
  3. 【共振峰跟踪】通过平均不同分辨率的方法跟踪共振峰,基于时频lpc的频谱图的MATLAB仿真
  4. ASA基本配置实验报告
  5. Esay ui数据加载等待提示
  6. 初识面向对象(理论1)
  7. UVA 10054 the necklace 欧拉回路
  8. 前端学习(3019):vue+element今日头条管理--自定义格式化面板
  9. Android 为应用添加默认加载页
  10. Git使用手册--超级详细,自己都看哭了
  11. 百度地图jar包冲突,特别是定位包冲突com/baidu/location/Address/$a.class。
  12. 21. 栈的压入、弹出序列
  13. CentOS 6.5设置静态IP教程 并且可以ping通
  14. 计算机网络学习之物理层篇
  15. 2015~2020年中国房价走势
  16. 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(4)
  17. max pooling 和 average pooling
  18. 一个小蜜蜂游戏的源代码
  19. SPA项目开发之CRUD+表单验证
  20. java爬虫工具xpath提取_爬虫 xpath (数据提取)

热门文章

  1. 实现Windows XP多用户远程登录
  2. 优化DOTTEXT之三:完善Trackback
  3. 吴恩达 coursera ML 第五课总结+作业答案
  4. win10远程控制centos7.0开机
  5. 查看关于yum的配置
  6. VTK序列图像的读取
  7. 上海交大计算机网络课件 翁惠玉 ppt,上海交通大学 计算机网络PPT3 翁惠玉.ppt
  8. PHP是弱类型还是强类型,php弱类型比较(松散比较) | CN-SEC 中文网
  9. [云炬创业基础笔记]第六章商业模式测试24
  10. 从零开始带你一步一步使用YOLOv3训练自己的数据