2016-10-24 4 views
0

장고 번역을 .. 작동하지 않습니다장고 번역은 선택을 사용하여 필드에 대해 발생하지 않습니다

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

'_'은 무엇입니까? 그것은'ugettext_lazy' 또는 non-lazy 버전입니까? – RemcoGerlich

+0

_ ugettext_lazy 버전 –

+0

문제를 해결 했습니까? –

답변

0

당신은 단지 Evening

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

읽기하지 ugettex_lazy에서 두 번째 줄의 문자열을 포장해야 더 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 "" 
+0

{: % I % p}까지는 "{}"이 django.po 파일에 나타납니다. 번역은 당신이 제공 한 문자열에 관계없이 작동하지 않습니다. –

+0

@GrizzledSquirrel 업데이트 된 답변보기. 나는 첫 번째 라인도'_(). format' –

+0

(cls.MORNING, _ ('until {}') 형식, cls.MORNING), –