ManuceTraduire un fichierTraduire une application Django en espagnol

Traduire une application Django en espagnol

Générez le fichier locale/es/LC_MESSAGES/django.po avec makemessages, déposez-le, et Manuce vous rend le même fichier avec les msgstr remplis en espagnol. Les variables %(name)s et {name} sont contrôlées chaîne par chaîne. Il ne vous reste qu'à relire et à lancer compilemessages.

Déposer mon fichier Voir les tarifs

Combien ça coûte

Pour les fichiers de langue d'une application Django totalisant environ 3 000 mots, vers l’espagnol :

Essentiel
18 €

Comprendre, usage interne.

Professionnel
54 €

Prêt à transmettre, par le spécialiste technique.

Premium
105 €

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 à envoyer : django.po pour la locale es

Django lit des catalogues gettext. La commande python manage.py makemessages -l es rassemble les chaînes marquées (gettext, _(), {% translate %}, {% blocktranslate %}) et produit locale/es/LC_MESSAGES/django.po. C’est ce fichier que vous déposez. Si une partie de l’interface passe par le catalogue JavaScript de Django, lancez aussi makemessages -d djangojs -l es et envoyez le djangojs.po.

Pour un public d’Amérique latine précis, Django accepte des locales régionales : le dossier s’appelle alors locale/es_MX/ (tiret bas), tandis que le code déclaré dans LANGUAGES s’écrit es-mx. Décidez-le avant de générer le fichier : c’est le nom du dossier qui indique à Django où chercher la traduction.

Le devis compte les mots du texte à traduire ; la syntaxe du fichier, les clés et les balises ne sont pas comptées.

Ce que l’espagnol change dans vos chaînes Django

  • Pluriels. CLDR donne trois catégories à l’espagnol : one, many, other ; « many » concerne les grands nombres ronds (« un millón de usuarios »). Pour Django, ce qui compte est l’en-tête Plural-Forms du .po : chaque msgid_plural doit avoir autant de msgstr[n] que l’en-tête annonce de formes. Autre différence avec le français : zéro prend le pluriel, « 0 archivos ».
  • Ordre des mots. « %(count)s files deleted » devient « Se eliminaron %(count)s archivos » : la variable change de place. Avec des variables nommées, aucun risque ; avec plusieurs %s anonymes, l’ordre ne peut pas être inversé.
  • Genre. Nuevo pedido mais Nueva factura, Ningún archivo mais Ninguna página. Une chaîne générique comme « Add %(name)s » alimentée par un verbose_name ne peut pas accorder correctement ; séparez les cas avec pgettext et un contexte.
  • ¿ et ¡. Le signe ouvrant se place en tête de phrase : « ¿Eliminar este elemento? ». Une question découpée en deux chaînes concaténées dans le gabarit ne peut pas être ponctuée correctement.
  • Registre et variante. Tutoiement (Introduce tu contraseña) ou vouvoiement (Introduzca su contraseña) ; ordenador en Espagne, computadora au Mexique ; móvil ou celular. Vérifiez la convention retenue sur l’extrait gratuit avant de payer.
  • Longueur. L’espagnol est plus long que l’anglais, proche du français : « Save » devient « Guardar cambios ». Prévoyez des boutons et menus qui s’élargissent.

Ce que Manuce rend, et ce qu’il ne fait pas

Vous récupérez le même django.po : indentation, ordre des entrées, guillemets, commentaires et références #:, fins de ligne, encodage et BOM éventuel sont conservés ; seules les valeurs traduites changent.

Chaque traduction est comparée à sa source : les variables %(name)s et {name} doivent toutes être présentes, de même que les balises HTML d’un blocktranslate. En cas d’écart persistant, la chaîne source est gardée et le rapport le signale : mieux vaut une chaîne restée en anglais qu’une erreur à la compilation ou au rendu. URL, adresses email, nombres, identifiants, formats de date, valeurs vides et tout ce qui est marqué non traduisible restent tels quels.

Le rapport liste les chaînes traduites et celles laissées telles quelles, avec la raison.

Manuce ne lance ni makemessages ni compilemessages, ne modifie ni votre code ni vos gabarits, ne retire pas les marques #, fuzzy et ne corrige pas l’en-tête Plural-Forms. Les contenus stockés en base (pages, fiches produit) ne passent pas par gettext et ne sont donc pas dans ce fichier.

Préparer le fichier avant l’envoi

  • Remplacez les %s multiples par des variables nommées : _("%(user)s commented on %(post)s") permet d’écrire « %(user)s comentó en %(post)s » ou de réordonner librement.
  • Donnez du contexte aux mots courts : pgettext("month name", "May") doit donner mayo (en minuscule, comme tous les mois en espagnol), pas puede.
  • Ajoutez des commentaires commençant par Translators: dans le code : Django les reprend dans le .po, utile pour préciser qu’un « Post » est un verbe.
  • Ne figez aucune date ni aucun montant dans une chaîne : avec la localisation active, Django affiche lui-même « 3 de marzo de 2025 » et la virgule décimale « 1.234,56 » pour la locale es.
  • Supprimez les concaténations de fragments dans les gabarits au profit d’un seul blocktranslate par phrase.

Après la livraison : compiler et tester

  1. Replacez le fichier dans locale/es/LC_MESSAGES/ et relisez les entrées marquées #, fuzzy : compilemessages les ignore tant que la marque reste.
  2. Lancez python manage.py compilemessages -l es pour produire le django.mo ; une variable incohérente dans une chaîne python-format y serait signalée.
  3. Vérifiez que es figure dans LANGUAGES et que LocaleMiddleware est actif, puis parcourez l’application en espagnol.
  4. Testez les pluriels avec 0, 1 et 2, les messages de formulaire, et les écrans aux boutons étroits.

En pratique

  1. Lancez makemessages -l es (et -d djangojs si besoin).
  2. Déposez locale/es/LC_MESSAGES/django.po et relisez l’extrait gratuit.
  3. Récupérez le .po traduit et son rapport.
  4. Replacez-le, traitez les entrées fuzzy, lancez compilemessages -l es.
  5. Testez l’interface en espagnol, pluriels et longueurs compris.

Questions fréquentes

Faut-il envoyer le .po ou le .mo ?

Le .po. Le .mo est un fichier binaire que compilemessages régénère à partir du .po traduit ; il n’y a rien à traduire dedans.

Espagnol d’Espagne ou d’Amérique latine ?

Le choix change le vocabulaire (ordenador/computadora, móvil/celular) et parfois le registre. Côté Django, il se traduit par le dossier : locale/es pour un espagnol général, locale/es_MX ou une autre locale régionale pour un pays précis. Vérifiez la convention sur l’extrait gratuit.

Les textes de l’admin Django seront-ils traduits ?

Django fournit déjà ses propres traductions espagnoles pour l’admin et les applications contrib. Votre django.po ne contient que vos chaînes : ce sont elles que Manuce traduit.

Que se passe-t-il si une variable %(name)s manque dans la traduction ?

Chaque valeur est comparée à la source. Si l’écart persiste, la chaîne source est conservée et le rapport l’indique, pour que vous puissiez la traiter à la main.

Combien de temps faut-il attendre ?

Pour un document courant, la traduction est livrée en quelques minutes, et le fichier reste disponible dans votre espace client.

Le spécialiste qui s’en charge

Ce sujet est confié à Dédale, le spécialiste technique. Voir comment il travaille.

Testez sur votre fichier, gratuitement

Un extrait de votre fichier traduit au niveau choisi, avant tout paiement. Vous jugez, puis vous décidez.

Déposer mon fichier