怎么用Django中的惰性翻译

  介绍

今天就跟大家聊聊有关怎么用Django中的惰性翻译,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

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

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

得到django.utils.translation  import  ugettext_lazy   ,   class 神话(models.Model):   name 才能=,models.CharField (help_text=ugettext_lazy(& # 39;却;能够is 从而help 文本# 39;))

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

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

#,却;能够is 好:,putting  a  unicode  proxy  into  a  unicode 字符串。   u" Hello  % s", %, ugettext_lazy(“人民)   ,   #,却;能够will  not 工作,,since 你cannot  insert  a  unicode 对象   #,into  a  bytestring  (nor 还要你insert  our  unicode  proxy )   “Hello  % s", %, ugettext_lazy(“人民)

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

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

得到django.utils.translation  import  ugettext_lazy  as  _   ,   class 神话(models.Model):   name 才能=,models.CharField (help_text=_(& # 39;却;能够is 从而help 文本# 39;))

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

得到django.utils.translation  import  ugettext_lazy  as  _   ,   class 神话(models.Model):   name 才能=,models.CharField(_(& # 39;名字# 39;),,help_text=_(& # 39;却;能够is 从而help 文本# 39;))   class 才能;元:   ,,,verbose_name =, _ (& # 39; my 事# 39;)   ,,,verbose_name_plural =, _ (& # 39; mythings& # 39;)

看完上述内容,你们对怎么用Django中的惰性翻译有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

怎么用Django中的惰性翻译