Traduire une application Django en allemand
Pour traduire une application Django en allemand, on traduit le fichier locale/de/LC_MESSAGES/django.po produit par makemessages, puis on le recompile avec compilemessages. Manuce vous rend ce même fichier, structure intacte, avec les variables %(name)s et {name} vérifiées et un rapport des chaînes laissées telles quelles.
Combien ça coûte
Pour les fichiers de langue d'une application Django totalisant environ 3 000 mots, vers l’allemand :
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.
Le fichier à traduire : locale/de/LC_MESSAGES/django.po
Tout part de python manage.py makemessages -l de. Django parcourt vos gabarits et votre code Python, relève les chaînes marquées avec gettext, gettext_lazy, {% translate %} ou {% blocktranslate %}, et écrit locale/de/LC_MESSAGES/django.po. Chaque entrée associe un msgid (le texte source) à un msgstr qui recevra l’allemand.
Bonne nouvelle pour le volume : l’interface d’administration et les applications fournies avec Django (django.contrib.auth, messages de validation des formulaires, etc.) disposent déjà de leurs traductions allemandes. Votre django.po ne contient donc que vos chaînes : libellés de modèles (verbose_name), messages de vos vues, textes de vos gabarits, courriels transactionnels.
Si votre interface utilise du JavaScript traduit, ses chaînes vont dans un catalogue distinct, djangojs.po, produit par makemessages -d djangojs -l de. Pensez-y avant de demander le devis, pour ne pas découvrir des boutons restés en français après la mise en ligne.
Ce que l’allemand change dans vos chaînes Django
- La longueur. Un libellé court s’allonge, parfois du double : « Paramètres du compte » devient
Kontoeinstellungen, « Mot de passe oublié ? » devientPasswort vergessen?. Prévoyez de la marge dans vos boutons, onglets et colonnes delist_display; un mot composé allemand ne se coupe pas tout seul. - La majuscule aux noms. Tous les noms prennent une majuscule, au milieu de la phrase comme au début :
Ihre Bestellung wurde versandt. Ne normalisez pas la casse par du CSS (text-transform: lowercase) : vous casseriez l’orthographe. - Le registre. En contexte professionnel, on vouvoie avec
Sie, qui prend lui aussi la majuscule, tout commeIhr:Bitte melden Sie sich an. Si votre produit tutoie (du), dites-le avant de commander : le choix doit être constant sur tout le fichier. - L’ordre des mots. Le verbe part souvent en fin de proposition, donc la variable change de place : « Supprimer %(count)s fichiers » devient
%(count)s Dateien löschen. C’est pourquoi les variables nommées sont indispensables ; avec plusieurs%sanonymes, makemessages vous avertit déjà. - Les pluriels. L’allemand a deux formes, comme le français, mais le zéro est au pluriel :
0 Dateien, alors que le français écrit « 0 fichier ». Avecngettext,msgstr[0]porte le singulier etmsgstr[1]le pluriel. - La ponctuation. Pas d’espace avant les deux-points ni le point d’interrogation, et des guillemets
„…“dans le texte affiché.
Ce que Manuce vous rend, et ce qu’il ne fait pas
Vous récupérez le même django.po, prêt à remettre dans locale/de/LC_MESSAGES/ : indentation, ordre des entrées, guillemets, commentaires, fins de ligne, encodage et BOM sont conservés ; seul le texte traduit change.
- Les variables
%(name)set{name}sont vérifiées : chaque chaîne traduite est comparée à la source, variables et balises comprises. Si un écart persiste, la chaîne source est gardée et le rapport le signale, plutôt que de livrer un%(nom)squi ferait échouer l’affichage. - Ne sont pas traduits : les URL, adresses email, nombres, couleurs, formats de date, identifiants et tout ce que vous avez marqué non traduisible.
- Le rapport liste les chaînes traduites et celles laissées telles quelles, avec la raison.
- Le devis porte sur les mots du texte à traduire, balises exclues.
Manuce ne lance pas compilemessages, ne modifie ni vos gabarits ni votre CSS, et ne vérifie pas le rendu à l’écran : la mise en page d’un libellé allemand trop long reste à contrôler chez vous. Pour des conditions générales en allemand destinées à une autorité, sachez que Manuce ne produit pas de traduction assermentée. Pour une interface publique, le niveau Professionnel est celui prévu pour un texte prêt à transmettre.
Préparer le fichier et vérifier après livraison
Avant le dépôt :
- Relancez
makemessages -l depour partir d’un catalogue à jour. - Vérifiez l’en-tête :
"Plural-Forms: nplurals=2; plural=(n != 1);\n"est la règle attendue pour l’allemand. - Ajoutez du contexte aux mots ambigus avec
pgettext: « Mai » (le mois) et « Mai » d’un autre sens n’ont rien à voir, de même que « Ordre » (commande,Bestellung) et « Ordre » (tri,Reihenfolge). Lemsgctxtet les commentaires#.laissés parTranslators:aident à trancher.
Après livraison :
- Lisez le rapport et traitez les chaînes restées en langue source.
- Retirez les marques
#, fuzzyhéritées d’anciennes versions : par défaut, compilemessages ignore ces entrées. - Lancez
compilemessages -l de; il faut les outils GNU gettext sur la machine. - Parcourez les écrans avec
LANGUAGE_CODEou l’en-tête du navigateur réglé surde, en visant les boutons, menus et colonnes d’administration les plus étroits.
En pratique
- Générez le catalogue avec makemessages -l de (et -d djangojs si besoin).
- Déposez locale/de/LC_MESSAGES/django.po : devis immédiat et extrait gratuit d’un paragraphe.
- Récupérez le django.po traduit et le rapport des chaînes laissées telles quelles.
- Recompilez avec compilemessages -l de et contrôlez les libellés longs à l’écran.
Questions fréquentes
Dois-je traduire l’administration Django moi-même ?
Non. L’administration et les applications fournies avec Django ont déjà leur traduction allemande, activée dès que la langue est de. Votre django.po ne contient que les chaînes de votre projet, ce qui limite le volume à traduire.
Sie ou du : quel registre pour mon application ?
Le vouvoiement Sie est la norme pour un outil professionnel, un service client ou une boutique sérieuse. Le tutoiement du se rencontre dans des applications grand public au ton familier. L’essentiel est de choisir avant la traduction et de s’y tenir dans tout le fichier, courriels compris.
Que se passe-t-il si une variable %(name)s est mal reprise ?
Chaque chaîne traduite est comparée à la source, variables et balises comprises. Si l’écart persiste, la chaîne source est conservée et le rapport l’indique, pour que compilemessages et l’affichage ne cassent pas.
Faut-il envoyer le fichier .mo ?
Non, envoyez le .po. Le .mo est un fichier compilé : vous le régénérez vous-même avec compilemessages à partir du django.po traduit.
Les pluriels avec ngettext sont-ils gérés en allemand ?
L’allemand a deux formes, singulier et pluriel, avec la règle plural=(n != 1) : zéro prend le pluriel. Vérifiez que l’en-tête Plural-Forms de votre fichier correspond bien à cette règle avant le dépôt.
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’allemand, 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.