在我的应用程序中,我有一个贯穿整个应用程序的短语字典。此词典用于创建PDF和Excel电子表格。
字典看起来像这样:
GLOBAL_MRD_VOCAB = {
'fiscal_year': _('Fiscal Year'),
'region': _('Region / Focal Area'),
'prepared_by': _('Preparer Name'),
'review_cycle':_('Review Period'),
... snip ...
}在生成PDF的代码中,我有:
fy = dashboard_v.fiscal_year
fy_label = GLOBAL_MRD_VOCAB['fiscal_year']
rg = dashboard_v.dashboard.region
rg_label = GLOBAL_MRD_VOCAB['region']
rc = dashboard_v.review_cycle
rc_label = GLOBAL_MRD_VOCAB['review_cycle']
pb = dashboard_v.prepared_by
pb_label = GLOBAL_MRD_VOCAB['prepared_by']现在,当PDF生成时,在PDF中,我看不到这些标签,但我看到:
<django.utils.functional.__proxy__ object at 0x10106fdd0>有人能帮我一下吗?如何获得正确翻译的标签?
谢谢埃里克
发布于 2011-01-18 01:48:27
"Lazy translation"
在
中使用unicode字符串(类型为
unicode的对象)的任何地方都可以使用ugettext_lazy()调用的结果。如果您尝试在需要字节字符串(str对象)的地方使用它,事情将不会像预期的那样工作,因为ugettext_lazy()对象不知道如何将自身转换为字节字符串。您也不能在字节串中使用unicode字符串,因此这与正常的Python行为是一致的。
..。
如果您曾经看到类似于
"hello <django.utils.functional...>"的输出,则您曾尝试将ugettext_lazy()的结果插入到一个字节字符串中。这是你的代码中的一个bug。
要么将其传递给unicode()以从中获取unicode,要么不要使用惰性转换。
https://stackoverflow.com/questions/4715423
复制相似问题