Django:本地化问题

时间:2011-01-17 16:28:34

标签: django localization

在我的应用程序中,我有一个在整个应用程序中使用的短语词典。这个字典用于创建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>

有人可以帮我这个吗?如何获得正确翻译的标签?

由于 埃里克

1 个答案:

答案 0 :(得分:2)

"Lazy translation"

  

ugettext_lazy()调用的结果可以在Python中使用unicode字符串(类型为unicode的对象)的任何地方使用。如果你试图在需要bytestring(一个str对象)的地方使用它,那么事情就不会按预期工作,因为ugettext_lazy()对象不知道如何将自身转换为bytestring。你也不能在bytestring中使用unicode字符串,所以这与普通的Python行为一致。

...

  

如果您看到类似"hello <django.utils.functional...>"的输出,则尝试将ugettext_lazy()的结果插入到字节字符串中。这是你代码中的一个错误。

将其传递给unicode()以获取unicode,或者不使用延迟翻译。