开发者

Django: Localization Issue

In my application, I have a dictionary of phrases that are used throughout of the application. This same dictionary is used to create PDFs and Excel Spreadsheets.

The dictionary looks like so:

GLOBAL_MRD_VOCAB = {
    'fiscal_year': _('Fiscal Year'),
    'region': _('Region / Focal Area'),
    'prepared_by': _('Preparer Name'),
    'review_cycle':_('Review Period'),
    ... snip ...
}

In the code to produce the PDF, I have:

fy = dashboard_v.fiscal_year
fy_label = GLO开发者_Go百科BAL_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']

Now, when the PDF is produced, in the PDF, I don't see these labels but rather, I see:

<django.utils.functional.__proxy__ object at 0x10106fdd0>

Can somebody help me with this? How do I get the properly translated labels?

Thanks Eric


"Lazy translation"

The result of a ugettext_lazy() call can be used wherever you would use a unicode string (an object with type unicode) in Python. If you try to use it where a bytestring (a str object) is expected, things will not work as expected, since a ugettext_lazy() object doesn't know how to convert itself to a bytestring. You can't use a unicode string inside a bytestring, either, so this is consistent with normal Python behavior.

...

If you ever see output that looks like "hello <django.utils.functional...>", you have tried to insert the result of ugettext_lazy() into a bytestring. That's a bug in your code.

Either pass it to unicode() to get the unicode from it, or don't use lazy translation.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜