7
votes

Comment traduire un formulaire à Django?

Je veux traduire un formulaire Django. Comment traduire les étiquettes des champs?

J'ai essayé champ.label = ugettext_lazy (champ.label) , mais les étiquettes ne sont pas renseignées dans le fichier django.po

J'ai peut-être obtenu le concept d'ugetText_lazy faux, je pense

en termes simples, je veux que les étiquettes de champ soient placées dans django.po fichier.

Les autres traductions faites avec ugettext et {% trans%} balise fonctionne bien

J'ai pu traduire les champs en fonction d'un modèle en paramétrage verbose_name mais lorsque j'essaie pour un champ de formulaire, je reçois un TypeError


0 commentaires

3 Réponses :


7
votes
class ExampleForm(forms.Form):
    f1 = forms.CharField(label= ugettext_lazy('field label'))

0 commentaires

7
votes
from django.utils.translation import ugettext_lazy as _
first_name = forms.CharField(label=_(u'First name'))

0 commentaires

10
votes

Je vais préciser que: xxx

Il est susceptible d'augmenter une erreur car les formulaires ne peuvent pas gérer bien un objet proxy comme _ (U'first nom '), et le résultat dans le rendu est un formulaire vide. J'ai testé ceci sur python2.x et django 1.3 / 1.4

La raison est due aux messages de p .po compilés créés initialement par différents O.S.. et des bibliothèques (cela peut dépendre de Python, Django, OS. Versions de bibliothèques). Lorsque vous avez cette erreur, vous devez recréer les messages localisés.


0 commentaires