使用选择的字段不会发生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设置正确,我项目中的其他位置正确显示翻译值。
答案 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 ""