2010-04-22 19 views
10

ben farklı dillerde görüntülemek istediğiniz formlar vardır: Bir parametreyi ayarlamak için etiket parametresi kullanılır ve etiketlere ugettext() kullanılır:Django formu ve i18n

agreed_tos = forms.BooleanField(label=ugettext('I agree to the terms of service and to the privacy policy.')) 

Ama çevirdim Şablonumdaki form

Etiketleri çevrilmez. Birisinin bu problem için bir çözümü var mı?

cevap

19

Sen ugettext_lazy() kullanmalıdır:

from django.utils.translation import ugettext_lazy 

# ... 
    agreed_tos = forms.BooleanField(label=ugettext_lazy('I agree to the terms of service and to the privacy policy.')) 

Modeli ve formu özellikleri zaman Django uygulama başlar başlatılır. ugettext() kullanırsanız, çeviri bir kez başlatılır ve hiçbir zaman değişmez. ugettext_lazy(), bu işlev, işlev çağrıldığında yerine değerine erişildiğinde dizeyi çevirerek çözer.

+0

Harika. Teşekkür ederim! – dfrankow

+0

Görünüşe göre önemli bit, ugettext_lazy'nin oturum açmış kullanıcı/oturum içeriğine sahip olmasıdır. – BastiBen