Sommaire

La localisation des formulaires

1. La traduction

Pour traduire un formulaire il faut comme pour toutes les traductions Django faire appel au module django.utils.translation. Mais contrairement à la plupart des utilisations où l’on utilise directement ugettext() pour la traduction et du fait du fonctionnement particulier des formulaires, il faut utiliser la fonction ugettext_lazy().

ugettext_lazy() fonctionne en deux étapes : une première qui va marquer les champs pour la traduction mais qui ne réalisera pas la traduction, puis dans une deuxième étape, la traduction sera réalisée à l’affichage du formulaire, c’est-à-dire au moment où on connaît la langue d’affichage. Tous les champs texte sont traduisibles ainsi.

Exemple :

from django.utils.translation import ugettext_lazy as _   
  
class AuteurForm(ModelForm):  
    class Meta:  
        model = Auteur  
        fields = (’nom’, ’prenom’, ’date_de_naissance’)  
        labels = {  
            ’name’: _(’Auteur’),  
        }  
        help_texts = {  
            ’name’: _(’Saisissez votre nom de famille.’),  
        }  
        error_messages ...