使用format()的django翻译不起作用

时间:2016-10-24 11:06:02

标签: django

使用选择的字段不会发生django翻译。

models.py:

 class Reservation(models.Model):
  class Period:
    MORNING = 'morning'
    EVENING = 'evening'

    @classmethod
    def choices(cls):
        return (                
            (cls.MORNING, _('Morning')),
            (cls.EVENING, '{} until {:%I %p}'.format(_('Evening'), datetime.time(16)),
        )       

 period = models.CharField(max_length=10, choices=Period.choices(),)

我在模板中使用{{reservation.get_period_display}}以几种语言显示字段。翻译适用于首选cls.MORNING:الصباح。 对于第二种选择(cls.EVENING),翻译不会发生:“晚上到下午4点”

任何人都可以告诉我格式说明符有什么问题,以及为什么在这种情况下翻译/本地化不起作用。

N.B:翻译和i18n设置正确,我项目中的其他位置正确显示翻译值

1 个答案:

答案 0 :(得分:0)

您应该在ugettex_lazy中包裹第二行字符串而不仅仅是Evening

(cls.EVENING, _('{} until {:%I %p}').format(datetime.time(16)),

了解更多Strings won't be translated in Django using format function available in Python 2.7

另外请务必添加#, python-brace-format。就像在这个例子中一样

#: accounts/forms.py:691
#, python-brace-format
msgid "La validation de votre carte a échoué: ({0}) {1}"
msgstr ""