在我的应用程序中,我有一个在整个应用程序中使用的短语词典。这个字典用于创建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>
有人可以帮我这个吗?如何获得正确翻译的标签?
由于 埃里克
答案 0 :(得分:2)
ugettext_lazy()
调用的结果可以在Python中使用unicode字符串(类型为unicode
的对象)的任何地方使用。如果你试图在需要bytestring(一个str
对象)的地方使用它,那么事情就不会按预期工作,因为ugettext_lazy()
对象不知道如何将自身转换为bytestring。你也不能在bytestring中使用unicode字符串,所以这与普通的Python行为一致。
...
如果您看到类似
"hello <django.utils.functional...>"
的输出,则尝试将ugettext_lazy()
的结果插入到字节字符串中。这是你代码中的一个错误。
将其传递给unicode()
以获取unicode
,或者不使用延迟翻译。