De base la commande python manage.py makemessages -l fr permet de générer un fichier .po contenant les chaines à traduire. C'est pratique et puissant, car très rapidement, toutes chaines prêtes à être traduite dans les actions (views.py), les formulaires (forms.py), les modèles (models.py), les templates (*.html).. se retrouvent listées.
Le hic, c'est que cette commande est incapable de détecter les chaines à traduire dans nos templates tag perso. Il faut alors ajouter la bonne expression régulière au sein du code Django.

Modifier le code Django

Il y a probablement beaucoup plus propre mais voici la démarche :

  1. Localiser l'installation de django dans votre système ( via locate django)
  2. Localiser le fichier trans_real.pyc
  3. Ajouter une nouvelle expression régulière dans ce fichier
  4. Ajouter l'appel à l'expression régulière
  1. Editer le fichier : sudo vim /usr/local/lib/python2.6/dist-packages/django/utils/translation
  2. Ligne 406 ajouter : voir code -> permet de détecter les chaines de la forme {% sheet_field mon_objet "chaine à traduire" %}
  3. Ligne 462 ajouter : imatch2 = inline_re2.match(t.contents)
  4. Ligne 469 ajouter : voir code

Logiquement via la commande python manage.py makemessages -l fr de nouvelles chaines doivent être repérées. Sinon la compilation du fichier .po en fichier .mo reste identique via la commande python manage.py compilemessages . PS : J'utilise généralement poedit ou un simple éditeur de texte pour traduire les chaines et vous ?