- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个带有这些选择的 ChoiceField:
choices = [(1, '1 thing'),
(2, '2 things'),
(3, '3 things'),
...]
choices = [(i, ungettext_lazy('%s thing', '%s things', i) % i) for i in range(1,4)]
ugettext_lazy('%s things' % i)
,但这需要对每个数字进行翻译,这很愚蠢。这样做的正确方法是什么?
最佳答案
在 Django 文档中,Translation… Working with lazy translation objects ,我在这里看到一条评论,似乎解决了您的疑虑。
Using
ugettext_lazy()
andungettext_lazy()
to mark strings in models and utility functions is a common operation. When you're working with these objects elsewhere in your code, you should ensure that you don't accidentally convert them to strings, because they should be converted as late as possible (so that the correct locale is in effect). This necessitates the use of the helper function described next.
django.utils.functional.lazy(func, *resultclasses)
,目前不包含在
django.utils.functional
module documentation 中.然而,根据
django.utils.functional.py
source code , 它“将任何可调用对象转换为惰性求值的可调用对象......
from django.utils import six # Python 3 compatibility
from django.utils.functional import lazy
from django.utils.safestring import mark_safe
choices = [
(i, lazy(
mark_safe(ungettext_lazy('%s thing', '%s things', i) % i),
six.text_type
)# lazy()
for i in range(1,4)
]
django.utils.functional
module documentation确实提到了一个函数装饰器
allow_lazy(func, *resultclasses)
.这使您可以编写自己的函数,该函数将惰性字符串作为参数。 “它修改了函数,以便如果使用延迟翻译作为第一个参数调用它,则函数评估会延迟,直到需要将其转换为字符串。”
lazy(func, *resultclasses)
不是装饰器,它修改了一个可调用对象。
关于Django ugettext_lazy、插值和ChoiceField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13689710/
我想要一个带有这些选择的 ChoiceField: choices = [(1, '1 thing'), (2, '2 things'), (3, '3 t
我有一个关于使用 ugettext 和 ugettext_lazy 进行翻译的问题。我了解到在模型中我应该使用 ugettext_lazy,而在 View 中应该使用 ugettext。但是还有其他地
您能解释一下 ugettext 和 ugettext_lazy 之间的主要区别吗? 当我尝试时 return HttpResponse(ugettext_lazy("Hello")) 我什么也没看到,
当我尝试将 ugettext_lazy 与 reportlab 的 Table 类一起使用时,输出不会在没有翻译时显示默认文本,而是在 0xb54921ec< 处显示 django.utils.fun
我正在寻找一种合理的方法来获取 ugettext_lazyied 字符串的未翻译内容。我找到了两种方法,但我对其中任何一种都不满意: the_string = ugettext_lazy('the c
当我在模型的 help_text 上使用 pgettext_lazy 时,我的模板失败。它与 ugettext_lazy 一起工作得很好。 错误 Caught TypeError while rend
我使用的是 python 2.7 并且遇到了以下行的问题: LOG.warning(_("text")) 这不会起作用,因为 LOG.warning 需要一个字符串 (str),而 ugettext_
我正在翻译一个 Django 项目。几乎一切正常。我只是无法让 Django 收集标有 _(下划线)以外的字符串。 让我再解释一下:按照文档的规定,我正在使用 ugettext 和 ugettext_
我的 views.py 中有这个 response_dict = { 'status': status, 'message': message } return HttpRespons
这是一个非常基本的问题。我试图用谷歌搜索我能用简单的语言理解的答案。但这并没有帮助。我在 Django's UserCreationForm 中遇到了以下代码片段然后我才知道ugettext_lazy
我正在更新一个非常旧的 Django 项目并尝试使用 RegistrationSupplementBase 但在导入时我收到此错误消息: File "/home/projectmachine/Desk
将“ugettext_lazy”导入为“_”是很常见的。新版本的 pep8-naming 不喜欢这样。如何处理? 最佳答案 在许多项目中使用下划线非常普遍。绕过警告的一种方法是在该行中添加带有 # N
我正在使用 Django 1.5.1,我在翻译时遇到了一些“奇怪的行为”。我在同一个 Python 文件中使用 ugettext 和 ugettext_lazy。如果我将导入组织为: from dja
我是一名优秀的程序员,十分优秀!