Localisation continue : chaque langue, à chaque fusion.
La localisation continue traduit les chaînes nouvelles et modifiées au fur et à mesure que votre code évolue, plutôt que lors d’une phase distincte avant chaque version. Chaque langue reste prête à être publiée avec le code qui en a besoin.
Qu’est-ce que la localisation continue?
La localisation continue est un mode de travail où les chaînes nouvelles et modifiées sont envoyées en traduction automatiquement dès qu’elles changent, et le texte traduit revient dans le produit sans planification humaine.
Il n’y a pas de phase de traduction, car la traduction ne s’arrête jamais. Un développeur fusionne une chaîne, les traductions suivent dans le même flux que le code, et une publication n’attend pas le fichier de quelqu’un.
C’est la moitié « localisation » de la livraison continue. Une équipe qui fusionne chaque jour et transfère la traduction toutes les quelques semaines a des langues en retard sur son code pendant la majeure partie du mois. La localisation continue réduit cet écart à la durée d’une exécution.
Cela ne signifie pas que le contenu généré par machine est publié sans relecture. Vous décidez quelles chaînes nécessitent l’intervention d’une personne, et une publication peut ne contenir que ce qui a été révisé.
La différence réside dans le moment où la traduction a lieu, et non dans qui la fait.
| Modifications | Transfert par lots | Continue |
|---|---|---|
| Côte à côte | ||
| Moment de la traduction | Durant une phase précédant chaque version | À chaque modification d’une chaîne |
| Déclencheur | Quelqu’un exporte un fichier | Un envoi, une fusion ou une modification de contenu |
| Taille de chaque élément | Des semaines de chaînes en une fois | Les chaînes d’une seule modification |
| Ce qu’attend une version | Le retour du fichier | La révision, sur les chaînes que vous avez marquées pour cela |
| Une modification tardive du texte | Un autre aller-retour | Une nouvelle exécution pour cette clé uniquement |
| Contexte de travail du traducteur | Une feuille de calcul de chaînes | La ligne, avec ses termes de glossaire, correspondances de mémoire et captures d’écran |
| Langues au lancement | Échelonnées, une vague après l’autre | Ensemble, avec la fonctionnalité |
- Moment de la traduction
- Durant une phase précédant chaque version
- Déclencheur
- Quelqu’un exporte un fichier
- Taille de chaque élément
- Des semaines de chaînes en une fois
- Ce qu’attend une version
- Le retour du fichier
- Une modification tardive du texte
- Un autre aller-retour
- Contexte de travail du traducteur
- Une feuille de calcul de chaînes
- Langues au lancement
- Échelonnées, une vague après l’autre
- Moment de la traduction
- À chaque modification d’une chaîne
- Déclencheur
- Un envoi, une fusion ou une modification de contenu
- Taille de chaque élément
- Les chaînes d’une seule modification
- Ce qu’attend une version
- La révision, sur les chaînes que vous avez marquées pour cela
- Une modification tardive du texte
- Une nouvelle exécution pour cette clé uniquement
- Contexte de travail du traducteur
- La ligne, avec ses termes de glossaire, correspondances de mémoire et captures d’écran
- Langues au lancement
- Ensemble, avec la fonctionnalité
Fonctionnement de la localisation continue
Suivez une nouvelle chaîne tout au long du cycle. Chaque étape montre ce que vous verriez réellement.
La modification parvient à Transglot via l’interface de ligne de commande, l’action GitHub ou l’application sur votre hébergeur Git. Les fichiers sources sont analysés dans l’un des 20 formats natifs, et chaque chaîne est comparée à ce que le projet contient déjà. Seules les chaînes nouvelles et modifiées sont traitées.
Une correspondance exacte issue de la mémoire de traduction remplit la ligne sans compter de mots. Le reste est envoyé à Glossa avec votre glossaire, votre guide de style et le contexte de cette clé.
Les marqueurs, les formes plurielles, les termes du glossaire et la longueur sont vérifiés pour chaque ligne à chaque exécution. Un marqueur brisé, une forme plurielle manquante ou un terme de glossaire interdit est corrigé une fois et revérifié; s’il échoue une seconde fois, il est refusé et non livré. Une ligne qui dépasse seulement sa limite de longueur est écrite, et à partir du forfait Équipe, l’approbation automatique ou une exécution d’assurance qualité la signale pour révision.
Une exécution n’écrase jamais une ligne qu’une personne a modifiée ou révisée. Si sa source change plus tard, le texte reste, l’exécution compte la ligne et vous en informe, et à partir du forfait Équipe, une mise à jour suggérée attend à côté pour qu’une personne l’accepte.
Les applications Git valident les fichiers de locale dans une branche de synchronisation et maintiennent une demande de tirage à jour. Sur GitHub, commentez /translate sur une demande de tirage et les fichiers atterrissent sur la branche propre à cette demande de tirage. Ou publiez sur le CDN, et le produit en cours de lecture intègre la modification sans aucune nouvelle version.
Six façons dont la localisation continue échoue, et ce qui arrête chacune
Une exécution écrase le travail d’une personne
Chaque rédacteur vérifie d’abord l’état de la ligne : une exécution, une correspondance en mémoire et un envoi. Une ligne modifiée ou révisée par une personne est conservée, et l’exécution le signale.
→fr, révisé, source vient de changer
✓conservé, comptabilisé, signalé
Une chaîne brisée atteint la production
Chaque jeton entré doit ressortir. Sur un projet ICU, un message qui provoquerait une erreur au moment du rendu est exclu de la demande d’intégration, du connecteur et du lot CDN, et l’exécution le nomme.
→{count, plural, one {# article}
✓exclu du fichier, nommé dans l’exécution
Le dépôt se remplit de demandes d’intégration automatisées
Une branche de synchronisation et une demande d’intégration par dépôt. Deux envois rapides convergent vers celle-ci au lieu d’en ouvrir une seconde.
→#812 #815 #819 #823 mise à jour l10n
✓#812 transglot/sync, mis à jour sur place
Une modification de la source laisse les anciennes traductions derrière
Chaque ligne cible enregistre la source pour laquelle elle a été rédigée, ainsi une chaîne modifiée est identifiée comme obsolète dans toutes les langues simultanément, et seule cette clé est traitée à nouveau.
→Save est devenu Save draft. fr, de, ja indiquent toujours Save
✓fr, de, ja traités à nouveau pour cette clé unique
Chaque exécution facture à nouveau l’ensemble du projet
Une exécution est dimensionnée selon ce qui a changé. Une chaîne inchangée n’est pas envoyée, une correspondance exacte en mémoire ne coûte aucun mot, et une ligne attribuée à une personne est refusée avant toute dépense.
→le fichier contient 48 000 mots
✓cette exécution : 60 mots
Une demande d’intégration inachevée efface un fichier de locale
Si le serveur ne signale aucune entrée pour une locale, la demande d’intégration refuse d’écraser un fichier contenant du contenu et quitte avec le code 1 afin que le pipeline s’arrête là.
→demande d’intégration : 0 entrée pour ja, le fichier contient 1 204 éléments
✓refus d’écraser locales/ja.json avec un lot vide
- run 4182 fr : espace réservé manquant dans l’ébauche, réparé lors de la nouvelle tentative
- run 4182 de : 3 lignes conservées, une personne en est responsable
- run 4182 ja : 41 lignes issues de la mémoire, 0 mot
- run 4183 ar : forme plurielle manquante après nouvelle tentative, ligne refusée
- pull écrit locales/pt-BR.json
- sync transglot/sync mis à jour, demande d’intégration #812
Les trois se connectent à votre dépôt. La différence réside dans ce qui se produit lors de la fusion.
Lecture effectuée à partir des pages officielles de chaque entreprise le 5 novembre 2026. La ligne de prix provient de nos pages de comparaison, liées ci-dessous, qui présentent le forfait et les calculs. Les prix et les forfaits évoluant, vérifiez-les avant de prendre votre décision.
| Ce qui se passe | Transglot | Lokalise | Crowdin |
|---|---|---|---|
| Une nouvelle chaîne est fusionnée | Traduit par défaut Le push déclenche l’exécution. Un paramètre du projet permet de la désactiver. | Traduit une fois la configuration effectuée Les automatisations sont désactivées par défaut lors de la création d’une clé et de l’importation de fichiers. Un flux de travail incluant une étape IA s’exécute selon sa propre planification. | Traduit une fois l’option activée Sous Paramètres, Traduction automatique, elle s’exécute ensuite à chaque téléversement. La synchronisation Git s’exécute toutes les heures par défaut. |
| Une traduction échoue à une vérification | Corrigé une fois, puis refusé Pour un marqueur de position, une forme plurielle ou un terme interdit défectueux, sur chaque ligne de chaque exécution. Un dépassement de longueur est consigné. Dans un projet ICU, une ligne défectueuse est exclue de la demande d’extraction (pull), des connecteurs et du CDN. | Une vérification de niveau Erreur bloque l’enregistrement dans l’éditeur Chaque vérification est configurée sur Désactivé, Avertissement ou Erreur. | Une vérification de niveau Erreur bloque l’enregistrement Chaque vérification est configurée sur Avertissement ou Erreur. |
| Une personne a déjà modifié la ligne | L’exécution refuse de l’écrire Il en va de même pour une correspondance en mémoire et un push. Si la source change ultérieurement, l’exécution signale la ligne. | Les automatisations remplissent les valeurs vides par défaut Une option de force et une action de réinitialisation écrasent les valeurs remplies. | Des options conservent les lignes humaines et approuvées Une option de remplacement global existe également. |
| Demandes d’extraction (pull requests) sur un dépôt très actif | Une branche, une demande d’extraction (pull request) Mis à jour sur place à chaque push. | Une nouvelle branche pour chaque demande d’extraction (pull request) Nommée avec un horodatage. | Une branche de service, synchronisée toutes les heures Toutes les heures est la valeur par défaut, et l’intervalle peut être modifié. |
| Ce que le forfait compte | Mots traduits, une fois par langue Les correspondances exactes en mémoire sont gratuites. Le stockage d’une chaîne est gratuit. | Mots traités La langue de base et la langue cible comptent toutes les deux. | Mots hébergés Mots à traduire, multipliés par les langues cibles. |
| Ce qui finance l’IA | Les mots du forfait Aucune facturation séparée. | Quotas de mots IA selon le forfait Les mots Standard AI et Pro AI constituent des lignes distinctes du forfait. | Un solde distinct ou votre propre clé L’IA gérée de Crowdin est payée avec des crédits, en dehors de l’abonnement. |
| Le même travail : 5,000 chaînes dans 10 langues | $39 par mois Team, traduction incluse | $1,049 par mois Advanced (billed yearly) | $138 par mois Pro with 560K hosted words (billed monthly), IA en sus |
| GitHub, GitLab, Bitbucket, Azure Repos, une CLI et un serveur MCP | Tous Les applications Git débutent au niveau Équipe et couvrent les éditions cloud. | Tous Les intégrations sont disponibles sur tous les forfaits. | Tous Cela inclut également Bitbucket Server. |
- Une nouvelle chaîne est fusionnée
- Traduit par défautLe push déclenche l’exécution. Un paramètre du projet permet de la désactiver.
- Une traduction échoue à une vérification
- Corrigé une fois, puis refuséPour un marqueur de position, une forme plurielle ou un terme interdit défectueux, sur chaque ligne de chaque exécution. Un dépassement de longueur est consigné. Dans un projet ICU, une ligne défectueuse est exclue de la demande d’extraction (pull), des connecteurs et du CDN.
- Une personne a déjà modifié la ligne
- L’exécution refuse de l’écrireIl en va de même pour une correspondance en mémoire et un push. Si la source change ultérieurement, l’exécution signale la ligne.
- Demandes d’extraction (pull requests) sur un dépôt très actif
- Une branche, une demande d’extraction (pull request)Mis à jour sur place à chaque push.
- Ce que le forfait compte
- Mots traduits, une fois par langueLes correspondances exactes en mémoire sont gratuites. Le stockage d’une chaîne est gratuit.
- Ce qui finance l’IA
- Les mots du forfaitAucune facturation séparée.
- Le même travail : 5,000 chaînes dans 10 langues
- $39 par moisTeam, traduction incluse
- GitHub, GitLab, Bitbucket, Azure Repos, une CLI et un serveur MCP
- TousLes applications Git débutent au niveau Équipe et couvrent les éditions cloud.
- Une nouvelle chaîne est fusionnée
- Traduit une fois la configuration effectuéeLes automatisations sont désactivées par défaut lors de la création d’une clé et de l’importation de fichiers. Un flux de travail incluant une étape IA s’exécute selon sa propre planification.
- Une traduction échoue à une vérification
- Une vérification de niveau Erreur bloque l’enregistrement dans l’éditeurChaque vérification est configurée sur Désactivé, Avertissement ou Erreur.
- Une personne a déjà modifié la ligne
- Les automatisations remplissent les valeurs vides par défautUne option de force et une action de réinitialisation écrasent les valeurs remplies.
- Demandes d’extraction (pull requests) sur un dépôt très actif
- Une nouvelle branche pour chaque demande d’extraction (pull request)Nommée avec un horodatage.
- Ce que le forfait compte
- Mots traitésLa langue de base et la langue cible comptent toutes les deux.
- Ce qui finance l’IA
- Quotas de mots IA selon le forfaitLes mots Standard AI et Pro AI constituent des lignes distinctes du forfait.
- Le même travail : 5,000 chaînes dans 10 langues
- $1,049 par moisAdvanced (billed yearly)
- GitHub, GitLab, Bitbucket, Azure Repos, une CLI et un serveur MCP
- TousLes intégrations sont disponibles sur tous les forfaits.
- Une nouvelle chaîne est fusionnée
- Traduit une fois l’option activéeSous Paramètres, Traduction automatique, elle s’exécute ensuite à chaque téléversement. La synchronisation Git s’exécute toutes les heures par défaut.
- Une traduction échoue à une vérification
- Une vérification de niveau Erreur bloque l’enregistrementChaque vérification est configurée sur Avertissement ou Erreur.
- Une personne a déjà modifié la ligne
- Des options conservent les lignes humaines et approuvéesUne option de remplacement global existe également.
- Demandes d’extraction (pull requests) sur un dépôt très actif
- Une branche de service, synchronisée toutes les heuresToutes les heures est la valeur par défaut, et l’intervalle peut être modifié.
- Ce que le forfait compte
- Mots hébergésMots à traduire, multipliés par les langues cibles.
- Ce qui finance l’IA
- Un solde distinct ou votre propre cléL’IA gérée de Crowdin est payée avec des crédits, en dehors de l’abonnement.
- Le même travail : 5,000 chaînes dans 10 langues
- $138 par moisPro with 560K hosted words (billed monthly), IA en sus
- GitHub, GitLab, Bitbucket, Azure Repos, une CLI et un serveur MCP
- TousCela inclut également Bitbucket Server.
Lancez-le depuis l’endroit où vivent vos chaînes. Toutes les portes mènent au même pipeline.
Comment configurer la localisation continue
- 01
Extraire les chaînes du code
Chaque chaîne visible par l’utilisateur doit avoir une clé stable dans un fichier de locale. Transglot lit 20 formats, alors gardez celui que vous avez.
jsonyamlxliffarb - 02
Connecter le dépôt
La commande init trouve vos fichiers de locale, vous connecte via le navigateur, télécharge ce que vous avez déjà et lance la première traduction.
npx transglot@latest init - 03
L’exécuter à chaque fusion
Ajoutez l’action GitHub, appelez la CLI depuis n’importe quel autre CI, ou installez l’application pour GitHub, GitLab, Bitbucket ou Azure Repos.
transglot push --wait - 04
Décider ce qui nécessite une intervention humaine
Définissez min_state à reviewed sur une règle de pull et ce fichier ne contiendra que les chaînes qu’une personne a révisées. Laissez-le désactivé et les brouillons seront déployés.
min_state: reviewed
Ce que coûte l’exécution à chaque fusion : les mots qui ont changé.
Un mot est un mot source, compté une fois par langue cible. Une exécution est dimensionnée selon ce qui a changé, donc une fusion qui touche douze mots dans cinq langues compte soixante, quelle que soit la taille du projet.
Tient dans Starter : $19/mo, 300,000 mots par mois.
Cela représente environ 9% de l’allocation.
Cela ne compte que la traduction. Les contrôles de qualité, les ébauches de ton de marque et les corrections comptent également comme des mots, tandis que les correspondances exactes issues de la mémoire de traduction sont gratuites. L’interface en ligne de commande (CLI) et l’action GitHub débutent au niveau Starter, et les applications pour GitHub, GitLab, Bitbucket et Azure Repos débutent au niveau Team.
Trois problèmes que la localisation continue ne résout pas
Chaînes toujours intégrées au code
Un pipeline ne peut traduire que ce qu’il peut lire. Les chaînes codées en dur et les phrases assemblées à partir de fragments doivent d’abord être corrigées; c’est souvent la raison pour laquelle un déploiement est bloqué.
Personne ne possède la responsabilité des textes
L’automatisation déplace les chaînes. Elle ne décide pas de la terminologie de votre produit. Quelqu’un doit être responsable du glossaire, sinon une langue peu consultée peut dériver sans que personne ne s’en aperçoive.
Textes nécessitant un jugement humain
Les textes juridiques, les prix et les slogans de marque méritent l’intervention d’une personne. Envoyez-les pour révision et excluez-les des fichiers livrés jusqu’à ce qu’ils soient approuvés.
FAQ sur la localisation continue
Les questions que se posent les équipes avant de l’activer.
Qu’est-ce que la localisation continue?
En quoi la localisation continue diffère-t-elle de la localisation traditionnelle?
La localisation continue est-elle la même chose que CI/CD?
Ai-je besoin d’un pipeline CI/CD pour la localisation continue?
La localisation continue signifie-t-elle aucune révision humaine?
Une exécution automatisée peut-elle écraser la modification d’un traducteur?
La localisation continue vaut-elle la peine pour une petite équipe?
Comment éviter qu’une exécution ne coûte plus cher que prévu?
Fonctionne-t-elle avec GitLab, Bitbucket et Azure DevOps?
Puis-je faire de la localisation continue sans Git?
Les traductions peuvent-elles se mettre à jour sans nouvelle version?
Comment migrer un projet existant?
41 connecteurs, déjà intégrés.
Connectez un dépôt. La prochaine fusion fera le reste.
Une commande trouve vos fichiers de langue, vous connecte via le navigateur et lance la première traduction.