ManuceFichiers de langue

Traduire les fichiers de langue de votre site ou de votre application

Déposez le fichier de langue de votre site ou de votre application. Vous recevez le même fichier, dans le même format, avec les mêmes clés, le même ordre et les mêmes commentaires : seules les valeurs sont traduites.

Déposer mon fichier Voir les tarifs

Les formats pris en charge

  • JSON i18n — plat ou imbriqué, tableaux de chaînes — i18next, react-intl, vue-i18n, next-intl, Angular, ngx-translate
  • YAML — .yml et .yaml — Rails, Symfony, Hugo, i18n-js ; ancres, blocs | et >, commentaires conservés
  • gettext PO et POT — msgctxt, pluriels, commentaires #. #: #, conservés ; un .pot revient en .po par langue, en-tête Language et Plural-Forms posés
  • XLIFF 1.2 et 2.0 — source vers target, state mis à jour, translate="no" respecté, notes lues comme contexte
  • Android strings.xml — string, string-array, plurals ; translatable="false" respecté ; apostrophes et caractères spéciaux échappés à la manière d'Android
  • iOS .strings et .xcstrings — .strings en UTF-8 ou UTF-16 ; String Catalog d'Xcode : la langue cible est ajoutée au catalogue, variations plurielles comprises
  • Java .properties — échappements \uXXXX conservés quand le fichier les utilise, lignes de continuation, apostrophes de MessageFormat
  • .NET .resx — data et value ; commentaires lus comme contexte ; ressources non textuelles laissées intactes
  • Flutter .arb — clés @ ignorées, descriptions lues comme contexte, @@locale mis à la langue cible
  • CSV à clés — une colonne de clés et des colonnes de langue : la langue cible est ajoutée en colonne, ou remplie si elle existe

Jusqu'à 40 Mo par fichier. Plusieurs langues cibles : un fichier par langue, chacun avec son rapport.

Avant, après

Un fichier JSON en français, traduit en anglais. Les clés, la variable, la structure du pluriel, le lien et la couleur ne bougent pas.

Avant
{
  "checkout": {
    "title": "Votre panier",
    "pay": "Payer {amount}",
    "items": "{count, plural, one {# article} other {# articles}}",
    "terms": "J'accepte les <a href=\"/cgv\">conditions de vente</a>"
  },
  "theme_color": "#0f1b2d"
}
Après
{
  "checkout": {
    "title": "Your cart",
    "pay": "Pay {amount}",
    "items": "{count, plural, one {# item} other {# items}}",
    "terms": "I accept the <a href=\"/cgv\">terms of sale</a>"
  },
  "theme_color": "#0f1b2d"
}

Un strings.xml Android traduit en russe : l'apostrophe échappée disparaît parce que la phrase russe n'en a pas, les guillemets suivent l'usage russe, et les pluriels passent de deux formes à quatre.

Avant
<string name="cant_connect">Impossible d\'ouvrir « %1$s »</string>
<plurals name="songs">
    <item quantity="one">%d chanson</item>
    <item quantity="other">%d chansons</item>
</plurals>
Après
<string name="cant_connect">Не удаётся открыть «%1$s»</string>
<plurals name="songs">
    <item quantity="one">%d песня</item>
    <item quantity="few">%d песни</item>
    <item quantity="many">%d песен</item>
    <item quantity="other">%d песни</item>
</plurals>

Variables et balises protégées

Avant traduction, chaque variable devient un repère que le moteur linguistique ne peut pas modifier : les accolades de React ou de Flutter, les doubles accolades d'i18next et d'Angular, les %s, %d, %1$s et %@ de printf, d'Android et d'iOS, les :name de Laravel, les ${var} des gabarits, les %{count} de Rails, les balises HTML, les entités HTML, les sauts de ligne.

Les messages ICU sont traduits branche par branche : l'argument, le mot-clé et les sélecteurs restent tels quels, seul le texte de chaque branche change.

Après traduction, chaque valeur est contrôlée : mêmes variables, autant de fois, et les balises dans le même ordre. Une valeur qui ne passe pas le contrôle est retraduite ; si elle échoue encore, la valeur source est gardée et le rapport le signale.

Le moteur reçoit aussi le contexte de chaque chaîne : sa clé, le commentaire du développeur, le fichier d'où elle vient. Un même terme est traduit de la même façon dans tout le fichier, et les noms de marque ou de produit restent tels quels.

Combien ça coûte

Le prix se calcule sur les mots des seules valeurs à traduire : ni les clés, ni les variables, ni les balises ne comptent. L'extrait JSON ci-dessus compte 10 mots facturés.

Pour une application d'environ 1 500 chaînes et 6 000 mots, du français :

Professionnel, vers l'anglais
107 €

Prêt à publier.

Professionnel, cinq langues
266 €

Anglais, allemand, espagnol, italien et portugais, remise multilingue de 50 % comprise.

Essentiel, vers l'anglais
35 €

Pour une version de test.

TVA non applicable, article 293 B du CGI. Le devis exact s'affiche dès le dépôt de votre fichier, avant tout paiement.

Le rapport livré avec chaque fichier

Pour chaque langue, un court rapport accompagne le fichier : le nombre de chaînes traduites, celles laissées telles quelles et pourquoi, les variables vérifiées, les pluriels adaptés, les métadonnées mises à jour comme l'en-tête Language d'un fichier PO ou l'attribut target-language d'un XLIFF, et l'emplacement du fichier dans votre projet pour Android.

Le fichier rendu est relu par un analyseur strict de son format avant de vous être livré. Un fichier qui ne passerait pas cette relecture ne part pas.

Questions fréquentes

Le fichier rendu est-il vraiment le même ?

Oui. Les valeurs sont remplacées à leur place dans le texte du fichier, sans le réécrire : indentation, ordre des clés, guillemets, commentaires, fins de ligne, encodage et BOM restent ceux de votre fichier. Sans traduction, le fichier ressortirait identique à l'octet près ; nous le vérifions sur chaque format.

Que se passe-t-il si une variable est perdue ?

Chaque valeur traduite est comparée à la source : mêmes variables, autant de fois, balises dans le même ordre. En cas d'écart, la chaîne est retraduite ; si l'écart persiste, la valeur source est gardée et le rapport livré avec le fichier vous dit laquelle et pourquoi. Aucune chaîne cassée ne part en production.

Les pluriels sont-ils adaptés à la langue cible ?

Oui. Le russe a trois formes, l'arabe six, le japonais une seule. Manuce pose l'en-tête Plural-Forms d'un fichier PO, écrit le bon nombre de formes, et ajoute dans un fichier Android, un String Catalog ou un message ICU les catégories que la langue réclame (few, many…), chacune rédigée pour les nombres qu'elle couvre.

Qu'est-ce qui n'est pas traduit ?

Les clés, les valeurs vides, les URL, les adresses email, les nombres, les couleurs, les formats de date et les identifiants techniques, ainsi que tout ce que vous avez marqué comme non traduisible (translatable="false", translate="no", shouldTranslate). Le rapport en donne la liste.

Comment le prix est-il calculé ?

Sur les mots des seules valeurs à traduire. Les clés, les variables, les balises et les valeurs techniques ne sont pas comptées. Le devis s'affiche dès le dépôt du fichier, avant tout paiement.

Mes fichiers sont-ils conservés ?

Ils restent dans votre espace pour que vous puissiez les retélécharger, et vous pouvez les supprimer à tout moment. Personne chez Manuce ne lit vos fichiers.

Par format de fichier, par application et par langue

Traduire un fichier JSON i18n en anglaisTraduire un fichier XLIFF en anglaisTraduire un fichier PO (gettext) en anglaisTraduire un fichier YAML en anglaisTraduire un fichier CSV de chaînes en anglaisTraduire un fichier JSON i18n en allemandTraduire un fichier XLIFF en allemand sans casser les balisesTraduire un fichier PO (gettext) en allemandTraduire un fichier YAML en allemand sans casser sa structureTraduire un fichier CSV de chaînes en allemandTraduire un fichier JSON i18n en espagnolTraduire un fichier XLIFF en espagnolTraduire un fichier PO (gettext) en espagnolTraduire un fichier YAML en espagnol (Rails, Symfony, Hugo)Traduire un fichier CSV de chaînes en espagnolTraduire un site WordPress en anglais\u00a0: thème, extensions et contenuTraduire une boutique PrestaShop en anglaisTraduire un site Drupal en anglais à partir du fichier .poTraduire une application Django en anglaisTraduire une application Ruby on Rails en anglaisTraduire une application Symfony en anglaisTraduire une application Laravel en anglaisTraduire une application React ou Next.js en anglaisTraduire une application Vue en anglais : fichiers vue-i18nTraduire une application Angular en anglaisTraduire une application Flutter en anglaisTraduire une application iOS en anglais (.strings et .xcstrings)Traduire une application Android en anglaisTraduire une application .NET en anglais : fichiers .resxTraduire une application Java (Spring) en anglaisTraduire un jeu Unity ou Godot en anglais

Toutes les pages : traduire un fichier

Déposez votre fichier de langue

Le devis s'affiche aussitôt. Vous testez gratuitement sur quelques chaînes avant de payer.

Déposer mon fichier