Les fichiers de langue d’une application, c’est une seule tâche et treize extensions de fichier. Vous avez un fichier JSON, un strings.xml, un fichier PO ou un String Catalog, et vous voulez retrouver les mêmes chaînes dans cinq langues supplémentaires sans casser la compilation.
Le format change. Pas la tâche : conserver les clés et les espaces réservés, traduire les valeurs, puis recommencer à la prochaine version.
Quelle option choisir ?
| Idéal pour | Limites | |
|---|---|---|
| AI Glot | Tous les formats ci-dessous, plusieurs langues en une seule tâche, un glossaire à respecter, chaque version | Inutile pour dix chaînes |
| Une plateforme de gestion de traduction (Crowdin, Lokalise, Phrase) | Une équipe avec un processus continu, des réviseurs et une connexion au dépôt | Vous devez créer un projet et connecter votre dépôt avant de traiter la première chaîne |
| DeepL | Fichiers XLIFF jusqu’à 10 MB | Accepte le XLIFF, mais pas les autres formats présentés ici. Son glossaire remplace les termes sans comprendre pourquoi ils sont imposés |
| ChatGPT, Claude ou un autre assistant | Quelques chaînes | Vous rédigez le prompt et devez ajouter votre glossaire à chaque conversation. Un long fichier est généré lentement, jeton par jeton, et consomme votre quota. Chaque exécution risque de modifier une clé ou d’altérer un espace réservé |
| Un freelance ou une agence | La page App Store, votre parcours d’accueil | Lent, facturé au mot, et vous devez quand même préparer les fichiers |
Confiez à une personne les cinq chaînes qui vendent votre application : la fiche de la boutique et le premier écran. Faites traiter les milliers de chaînes qui se trouvent derrière par un moteur de traduction.
Choisissez votre fichier
Chaque format a sa propre page, avec un outil gratuit et les informations détaillées. Voici ce qu’il faut savoir pour chacun.
| Fichier | Emplacement | À savoir |
|---|---|---|
| JSON | locales/en.json |
Les clés sont renvoyées dans le même ordre. Les espaces réservés comme {count} sont protégés par vos instructions |
| ARB (Flutter) | lib/l10n/app_en.arb |
Les entrées de métadonnées @ sont recopiées. Définissez @@locale sur la langue cible |
| YAML | config/locales/en.yml |
Les espaces réservés de type Rails %{name} sont détectés. Les commentaires sont supprimés lors de la réécriture du fichier |
| TOML | i18n/en.toml (Hugo) |
Seules les valeurs textuelles changent. En principe, les commentaires sont conservés |
| XLIFF | Exports de vos outils | Versions 1.2 et 2.0. Les balises intégrées sont reconstituées à partir de la source |
| PO et POT | locale/fr/LC_MESSAGES/app.po |
Les entrées au pluriel reçoivent les formes de la langue cible, et l’en-tête Plural-Forms est réécrit |
| Qt Linguist | app_fr.ts |
Les messages au pluriel (numerus) ne sont pas encore traduits. Exécutez lrelease ensuite |
| String Catalog | Localizable.xcstrings |
Toutes les langues sont réunies dans un seul fichier. Les substitutions et les variantes d’appareil restent intactes |
| iOS .strings | fr.lproj/Localizable.strings |
Le fichier est renvoyé en UTF-8, avec les blocs de commentaires conservés. Les pluriels .stringsdict sont également pris en charge |
| Android XML | res/values-fr/strings.xml |
Les pluriels et les tableaux de chaînes sont pris en charge. translatable="false" est respecté |
| RESX et RESW | Resources.fr.resx |
Vous obtenez un fichier par langue. Les commentaires destinés aux développeurs restent en anglais |
| Java .properties | messages_fr.properties |
UTF-8 uniquement. Si une valeur se poursuit sur la ligne suivante, placez-la d’abord sur une seule ligne |
Les formats ne gèrent pas tous les langues de la même façon. Un String Catalog regroupe toutes les langues dans un seul fichier. La plupart des autres formats, notamment JSON, Android et iOS, contiennent une langue par fichier : chaque langue cible a donc son propre fichier.
À quoi ressemble un fichier traduit
Seules les valeurs changent.
{ "cart.title": "Your cart", "cart.title": "Votre panier", "cart.items": "{count} items", "cart.items": "{count} articles", "cart.checkout": "Go to checkout" "cart.checkout": "Passer à la caisse"}Le parcours d’un fichier
- 1ImporterLe fichier tel quelOu un ZIP contenant plusieurs fichiers
- 2Dites ce dont vous avez besoinLangues et périmètreGratuit
- 3Consultez le forfaitChaînes, mots, coûtGratuit
- 4ApprouverLa seule étape payanteConsomme des crédits
- 5TéléchargerUn fichier par langueDéposez-le
Vous ne dépensez rien avant la quatrième étape, et corriger un plan inadapté ne vous coûte rien.
Comment procéder, étape par étape
1. Testez gratuitement un fichier. Chaque page de format propose un outil gratuit, sans création de compte.
2. Importez le fichier dans l’application, ou envoyez-le depuis la ligne de commande, comme expliqué plus bas.
3. Indiquez en une phrase ce dont vous avez besoin.
Translate this file into French.
Skip every key that starts with "internal.".
Cette phrase détermine ce qui sera traduit dans l’ensemble du fichier. Les règles de formulation, comme « conservez chaque {placeholder} exactement tel quel » ou « utilisez le registre informel », sont à saisir dans le deuxième champ au moment de la validation, car elles s’appliquent à chaque chaîne au moment de sa rédaction.
4. Ajoutez un glossaire avec le nom du produit, les noms des fonctionnalités et les mots que votre application utilise toujours de la même manière. Comment en créer un.
5. Choisissez un niveau de qualité.
Lite permet de traduire environ trois fois plus de mots par crédit et va plus vite : idéal pour les nombreux paramètres et textes d’aide secondaires. Standard convient aux chaînes que les utilisateurs lisent en premier. Un crédit correspond à un mot en Standard.
6. Validez et téléchargez.
Un fichier, plusieurs langues
Les noms de fichiers ne sont qu’un exemple. Pour traiter tout un dossier de fichiers de langue, regroupez-les dans un ZIP : jusqu’à 200 fichiers et 20 MB sont traités en une seule tâche.
Trois façons de lancer le traitement
La ligne de commande est la méthode que les développeurs gardent. Les mêmes quatre étapes, dans un script :
# 1. Create the job. Free. Returns a plan and an id.
id=$(aiglot batches create locales/en.json \
--instruction "Translate into French. Skip every key that starts with internal." \
--json | jq -r '.data.id')
# 2. Read the plan for free, then commit.
aiglot batches get "$id" --json | jq '.data.plan'
aiglot batches approve "$id" --quality lite \
--instructions "Keep every {placeholder} exactly as written."
# 3. When the status is completed, bring the file back.
aiglot batches download "$id" --output locales/fr.json
Avec votre agent IA : connectez AI Glot en tant que serveur MCP. L’agent peut lire votre dépôt, proposer les termes de glossaire qu’il y trouve, les ajouter à votre espace de travail, lancer le traitement et remettre les fichiers à leur place.
Dans l’application : importez, cliquez, téléchargez. Idéal pour un traitement ponctuel.
Pour intégrer l’API, consultez la documentation de l’API.
Vérifiez le résultat
Créez l’application dans une langue traduite et ouvrez les trois écrans qui contiennent les chaînes les plus longues. Lancez ensuite votre vérification habituelle avec le linter ou un outil de détection des clés manquantes : une clé modifiée apparaît comme une chaîne manquante. Les textes traduits sont souvent plus longs qu’en anglais ; vérifiez donc que les boutons et les libellés ne débordent pas.
La page Tarifs indique le coût pour un volume plus important. Un compte gratuit inclut des crédits pour traiter un vrai fichier.
Les limites indiquées ici sont celles en vigueur au moment de la rédaction : 200 fichiers et 20 MB par ZIP. La limite de DeepL provient de sa propre documentation. Les noms de fichiers et le nombre de chaînes dans les schémas sont des exemples. Votre forfait indique les chiffres réels pour vos propres fichiers, et sa consultation est gratuite.
