Introduction

Afin de traduire des applications Django, nous allons utiliser Rosetta.

Rosetta est une application Django qui facilite le processus de traduction de vos projets.

Pour ce faire, il est nécessaire d’utiliser au préalable d’avoir dans son projet des clées de langues :

  1. Dans les fichiers html, on utilise la syntaxte {{ _("lang") }}. Si vous avez une erreur avec le _ vous devez dans votre fichier base.html, ajoutez : {% load i18n %}
  2. Dans les vues, on utilise la syntaxte _("key") après avoir importé from django.utils.translation import ugettext_lazy as _

Installation

Pour commencer, vous devez l’installer :

  1. pip install django-rosetta

  2. Ajouter Rosetta à INSTALLED_APPS dans votre fichier settings.py

  3. Dans votre fichier urls.py, ajoutez par exemple :

from django.conf import settings

if 'rosetta' in settings.INSTALLED_APPS:
    urlpatterns += patterns('',
        url(r'^rosetta/', include('rosetta.urls')),
    )

Vous pouvez donc accéder à votre application rosetta à l’adresse suivante: http://localhost:8000/rosetta

Vous devez également rajouter quelques lignes dans votre fichier settings.py:

LANGUAGE_CODE = 'fr-fr' # langue par défaut de votre site

LANGUAGES = (
    ("fr", 'Francais'),
    ("en", "Anglais"),
)

USE_I18N = True # pour activer l'internationalisation

Utilisation

Pour le moment, votre application n’apparaît pas dans rosetta, c’est normal. Pour y remédier, vous avez besoin de créer les répertoires locale, et de générer les fichiers lang.

Pour ce faire, créer dans chacune de vos applications à traduire, un dossier locale, ainsi que les dossiers dans lesquels vous voulez traduire l’application.

Par exemple, dans mon projet test, je veux traduire mon application blog en français et en anglais :

  1. cd test/blog

  2. mkdir -p locale/{fr,en}

  3. Génération des fichiers langues : django-admin.py makemessages

  4. Reconnectez vous sur rosetta, et vous pourrez dès à présent voir votre application, avec la possibilité de la traduire.

Dans votre fichier settings.py, vous avez la possibilité de configurer rosetta pour par exemple, gérer le nombre de clées à traduire par page, exclure une application..

ROSETTA_MESSAGES_PER_PAGE = 50
ROSETTA_EXCLUDED_APPLICATIONS = ['rosetta'] # pour ne pas l'afficher dans les applications à traduire

Voila, c’est tout, si vous voulez tester, changer la langue de votre navigateur.