Je viens de m’apercevoir qu’on ne pouvait pas inclure de caractères non-ascii dans les chaines marquées pour traduction au sein des templates django, du moins avec la version 1.3 du framework. C’est assez étrange dans la mesure où je pensais que django utilisait l’unicode autant que possible, et tous mes fichiers sont toujours encodés en UTF8, qu’il s’agisse de python ou templates HTML. Je suppose que cela part du principe que la langue de référence est généralement l’anglais. Ce n’est hélas pas toujours le cas, lorsqu’on développe une application web dont les administrateurs sont français il est tout de même plus confortable pour eux de définir le contenu en français, puis de le traduire ensuite.

Par défaut, la commande manage.py makemessages n’indique pas dans quel fichier se trouve le problème d’encodage. La solution est que j’ai trouvé est d’activer le mode verbeux avec manage.py makemessages -v 2, chaque fichier parcouru lors de la génération du fichier .po est alors affiché à l'écran.

Tagged with:
 

2 Responses to Pépin de traduction dans les templates django

  1. richard says:

    Salut
    Après t’avoir lu j’ai fais une petite vérification sur mes propres projets parce que ça m’étonnait pas mal et je ne constate pas ce problème.
    J’ai au moins un projet écris en français (avec accents donc) dont je génère les .po à traduire en anglais sans problème.

  2. Jérémie Ducastel says:

    Je n’ai rencontré ce problème qu’avec django 1.3 et uniquement au sein des templates (tags {% trans %}), par contre les accents passent sans problème au sein du code python ( _ugettext() ).

    La suppression (un peu barbare) des accents au sein des templates permettait la génération des fichiers .po

Set your Twitter account name in your settings to use the TwitterBar Section.