Traduire une application Django en anglais
Pour traduire une application Django en anglais, on traduit le fichier <code>locale/en/LC_MESSAGES/django.po</code> produit par <code>makemessages</code>, puis on le recompile avec <code>compilemessages</code>. Manuce remplit les <code>msgstr</code> en anglais sans toucher aux <code>msgid</code>, vérifie les variables <code>%(name)s</code> et <code>{name}</code>, et vous rend le même fichier accompagné d’un rapport.
Combien ça coûte
Pour les fichiers de langue d'une application Django totalisant environ 3 000 mots, vers l’anglais :
Comprendre, usage interne.
Prêt à transmettre, par le spécialiste technique.
Relecture croisée. Pour ce qui engage.
Prix pour une langue, mise en page d'origine comprise. TVA non applicable, article 293 B du CGI. Le devis exact, calculé sur le nombre de mots de votre fichier, s'affiche avant paiement.
Ce qui se traduit dans un projet Django, et ce qui ne bouge pas
Dans Django, les chaînes marquées avec gettext, gettext_lazy, ngettext ou les balises {% translate %} et {% blocktranslate %} des gabarits sont extraites par makemessages dans un fichier gettext. Chaque entrée associe un msgid (la chaîne telle qu’écrite dans le code) à un msgstr (sa traduction). Seul le msgstr est rédigé en anglais\u00a0; le msgid sert de clé et doit rester identique au caractère près, sinon Django ne retrouve plus la traduction.
Deux fichiers peuvent exister côté anglais\u00a0:
django.popour le Python et les gabarits (modèles, formulaires,verbose_name, messages flash, courriels)\u00a0;djangojs.po, généré avecmakemessages -d djangojs, pour les chaînes JavaScript servies par le catalogue JS.
Un point souvent oublié\u00a0: si vos msgid sont déjà rédigés en anglais, Django les affiche tels quels quand aucune traduction n’existe. Un fichier anglais n’est alors utile que pour corriger ou britanniser des libellés. La traduction prend tout son sens quand le code a été écrit en français, par exemple _("Votre panier est vide").
Du français vers l’anglais\u00a0: pluriels, variables et typographie
Le passage à l’anglais touche des détails qui cassent l’affichage s’ils sont mal traités.
- Pluriels\u00a0: l’anglais a deux catégories, one et other, mais pas avec la même frontière qu’en français. En français, 0 est au singulier (0 commande)\u00a0; en anglais, il est au pluriel (0 orders). L’en-tête du fichier anglais doit donc porter
Plural-Forms: nplurals=2; plural=(n != 1);et non la règle française(n > 1). Chaque entréemsgid_pluralattend deux formes,msgstr[0]etmsgstr[1]. - Ordre des mots\u00a0:
%(count)s fichiers supprimés par %(user)sdevient naturellement%(user)s deleted %(count)s files. Les variables nommées se déplacent sans risque\u00a0; deux%sanonymes dans la même chaîne, eux, figent l’ordre. Nommez-les avant l’extraction. - Typographie\u00a0: les espaces insécables avant
:et?disparaissent, les guillemets « » deviennent des guillemets anglais, et un libellé commeMot de passe oublié\u00a0?devientForgotten your password?. - Longueur\u00a0: le texte anglais est en général 10 à 15\u00a0% plus court que le français. Les colonnes de l’admin et les boutons respirent davantage, mais un libellé très court peut perdre en clarté\u00a0:
Enregistrerse rend parSave, pas par une abréviation.
Anglais britannique ou américain\u00a0: un choix qui se voit dans Django
Décidez de la variante avant de lancer makemessages, car elle détermine le dossier de locale. Avec makemessages -l en_GB, le fichier est créé dans locale/en_GB/LC_MESSAGES/ et correspond au code en-gb dans LANGUAGES. Avec -l en, Django applique ses formats de l’anglais générique, de tendance américaine.
- Orthographe\u00a0: colour ou color, organise ou organize, cancelled ou canceled, licence (nom) au Royaume-Uni.
- Dates et nombres\u00a0: ne les écrivez pas en dur dans vos chaînes. Une chaîne comme
Livraison le %(date)slaisse Django formater la date selon la locale active (05/03/2025 au Royaume-Uni, 03/05/2025 aux États-Unis). Une date figée dans lemsgidne serait pas convertie. - Vocabulaire\u00a0: postcode ou ZIP code, mobile ou cell phone, VAT ou sales tax selon le marché visé.
Vérifiez la variante obtenue dès l’extrait gratuit, qui montre un passage du fichier traduit au niveau choisi avant tout paiement.
Ce que Manuce rend exactement, et ce qu’il ne fait pas
Vous déposez le django.po (ou le djangojs.po) et vous récupérez le même fichier, dans le même format, prêt à remettre dans locale/. L’indentation, l’ordre des entrées, les guillemets, les commentaires (#: de référence, #. pour les traducteurs), les fins de ligne, l’encodage et le BOM éventuel sont conservés\u00a0; seules les valeurs changent.
- Les variables
%(name)set{name}sont vérifiées\u00a0: chaque valeur traduite est comparée à la source, variables et balises comprises. En cas d’écart persistant, la valeur source est gardée et le rapport le signale. - Ne sont pas traduits\u00a0: les clés, les valeurs vides, les URL, les adresses email, les nombres, les couleurs, les formats de date, les identifiants et tout ce qui est marqué non traduisible.
- Le rapport liste les chaînes traduites et celles laissées telles quelles, avec la raison.
Manuce ne lance ni makemessages ni compilemessages, ne produit pas le .mo, ne modifie pas votre code pour marquer les chaînes et ne règle pas vos settings.py. Il ne produit pas non plus de traduction assermentée, ce qui n’a de toute façon pas d’usage pour une interface. Pour une application montrée à des clients, le niveau Professionnel, confié au spécialiste du domaine, est le plus adapté.
Préparer le fichier et vérifier après traduction
Avant l’envoi\u00a0:
- Relancez
makemessages -l en_GB(ou-l en) pour que le fichier reflète le code actuel et que les entrées obsolètes soient marquées#~. - Ajoutez du contexte là où un mot est ambigu\u00a0:
pgettext("verbe", "Commande")etpgettext("nom", "Commande")donneront Order dans les deux cas, maisArchivepeut être un verbe ou un nom. - Remplacez les
%smultiples par des variables nommées.
Après livraison\u00a0:
- Vérifiez l’en-tête
LanguageetPlural-Forms. - Retirez les drapeaux
#, fuzzyrestants\u00a0:compilemessagesignore par défaut les entrées floues, qui resteraient en français. - Compilez, puis affichez une page avec un compteur à 0, 1 et 2 pour contrôler les pluriels.
- Lisez le rapport et traitez les chaînes laissées en source.
En pratique
- Lancez makemessages -l en_GB (ou -l en) et récupérez le fichier django.po généré.
- Déposez le fichier sur Manuce, consultez le devis et l’extrait gratuit.
- Récupérez le django.po traduit et son rapport, puis replacez-le dans locale/.
- Vérifiez l’en-tête Plural-Forms, retirez les entrées fuzzy et lancez compilemessages.
- Testez l’interface en anglais, notamment les pluriels et les libellés longs de l’admin.
Questions fréquentes
Faut-il traduire le msgid ou le msgstr\u00a0?
Uniquement le msgstr. Le msgid est la clé qui relie la chaîne du code à sa traduction\u00a0; le modifier rompt ce lien. Manuce laisse les msgid intacts et ne change que les valeurs.
Mes chaînes sont déjà en anglais dans le code, ai-je besoin d’un fichier anglais\u00a0?
Pas forcément. Sans traduction, Django affiche le msgid lui-même. Un fichier anglais sert alors surtout à adapter l’orthographe britannique ou à corriger des libellés écrits par des développeurs.
Le fichier .mo est-il livré\u00a0?
Non. Manuce rend le .po traduit\u00a0; c’est vous qui le compilez avec compilemessages dans votre projet. Pensez à retirer auparavant les entrées marquées fuzzy, ignorées par défaut à la compilation.
Que se passe-t-il si une variable comme %(user)s est perdue\u00a0?
Chaque valeur traduite est comparée à la source, variables et balises comprises. Si l’écart persiste, la valeur source est conservée pour ne pas casser l’affichage, et le rapport indique la chaîne concernée.
Le fichier djangojs.po peut-il être traduit aussi\u00a0?
Oui, c’est un fichier gettext du même format que django.po. Déposez-le de la même façon\u00a0; il sera rendu à l’identique, avec ses variables vérifiées et son propre rapport.
Le spécialiste qui s’en charge
Ce sujet est confié à Dédale, le spécialiste technique. Voir comment il travaille.
Le même fichier, vers une autre langue
Vers l’anglais, d’autres fichiers
À lire aussi
Testez sur votre fichier, gratuitement
Un extrait de votre fichier traduit au niveau choisi, avant tout paiement. Vous jugez, puis vous décidez.