TextSetu, une alternative à Crowdin
Vous cherchez une alternative à Crowdin ? Une seule commande migre un projet Crowdin, sa mémoire de traduction et son glossaire vers TextSetu. Voici exactement ce qui est transféré, ce qui ne l'est pas, et ce qu'il faut vérifier avant de changer.
Si vous envisagez de quitter Crowdin, ce n'est presque jamais le tableau comparatif des fonctionnalités qui tranche. Ce qui tranche, c'est de savoir si le travail déjà accumulé dans la plateforme vous suit : les traductions approuvées, la mémoire de traduction qui vous évite de payer deux fois la même phrase, et le glossaire qui maintient le vocabulaire de votre produit.
C'est donc le sujet de cette page. Pas une grille de fonctionnalités, mais la migration elle-même, décrite assez précisément pour que vous puissiez la vérifier avant de vous engager.
Vos données sont transférées par une seule commande
npx @textsetu/cli@latest migrate crowdin --from 123456 --dry-run
npx @textsetu/cli@latest migrate crowdin --from 123456
La commande lit votre projet Crowdin via l'API de Crowdin et l'écrit dans un projet TextSetu. Trois précisions sur son fonctionnement :
Elle ne fait que lire. Rien n'est modifié, renommé ni supprimé dans votre compte Crowdin. Votre installation existante continue de fonctionner exactement comme avant pendant que vous évaluez la nôtre.
Elle s'exécute sur votre machine, avec votre jeton. Vous créez dans Crowdin un jeton d'accès en lecture seule, qui ne quitte jamais votre ordinateur. Nous ne demandons jamais vos identifiants Crowdin et ne les stockons jamais.
Elle annonce d'abord ce qu'elle va faire. --dry-run lit les deux côtés intégralement et affiche le plan complet : les langues qui seront créées, le nombre de clés, de segments de mémoire de traduction et de termes de glossaire qui arriveront, et chaque perte ou modification, sous forme de nombre. Rien n'est écrit. Si le plan ne correspond pas à vos attentes, vous avez perdu cinq minutes.
Ce qui arrive
| Traductions | Toutes les langues d'un coup. Les pluriels conservent toutes leurs formes, dont les quatre du russe et les six de l'arabe, au lieu d'être réduits à une seule chaîne. |
| Variables | %s, %1$d, {count}, {{name}} arrivent à l'octet près. C'est la panne qui casse discrètement une mise en production : c'est donc celle que nous testons le plus. |
| Langues régionales | pt-BR et pt-PT restent deux langues. zh-CN et zh-TW également. |
| Contexte des clés | Le contexte Crowdin devient la description que lisent vos traducteurs. |
| Étiquettes | Deviennent des tags. |
| Mémoire de traduction | Chaque segment avec toutes ses variantes linguistiques, espaces compris. |
| Glossaire | Les termes avec leur statut, nature grammaticale, type, définition, notes et genre. |
Ce qui n'arrive pas
Une migration se juge à ce qui manque : l'outil compte donc chacun de ces points dans le plan plutôt que de vous le laisser découvrir plus tard.
- L'état d'approbation. Les traductions arrivent comme valeurs. La distinction approuvé/non approuvé de Crowdin n'est pas reprise : si l'approbation vous sert de garde-fou, prévoyez de réapprouver en masse à l'arrivée.
- L'historique, les commentaires, les auteurs et les dates. Seule la traduction actuelle est transférée.
- Les captures d'écran. Crowdin associe plusieurs captures à plusieurs chaînes, avec des zones délimitées. TextSetu conserve une capture par clé : cette association n'a nulle part où atterrir.
- L'arborescence de vos fichiers. Les clés arrivent comme des clés. Si c'est la structure que vous devez préserver, il existe un second chemin :
crowdin download, puistextsetu push --translations, qui la conserve à l'identique. - Les traductions délibérément vides, qui arrivent comme non traduites.
- Les réglages de projet tels que les contrôles qualité et les étapes de workflow. Configurez-les d'abord chez nous.
Un détail à connaître avant de commencer, car c'est la seule partie qui exige une décision de votre part : un identifiant Crowdin est unique par fichier, alors qu'une clé TextSetu est unique par projet. Si common.json et errors.json contiennent tous deux title, ce sont deux chaînes différentes qui se disputent une même clé. La migration refuse et les nomme toutes les deux plutôt que d'en laisser une écraser l'autre en silence. Une option ajoute à chaque clé le nom de son fichier, ce que la plupart des équipes préfèrent de toute façon.
Ce qui distingue réellement TextSetu
Trois différences méritent votre attention. Chacune porte sur le coût ou le contrôle, pas sur une case à cocher.
Vous utilisez votre propre compte d'IA. Connectez votre clé Claude, OpenAI, Gemini ou DeepSeek : les appels au modèle apparaissent sur la facture de votre fournisseur, à son tarif public. Nous n'appliquons aucune marge, puisque nous n'y touchons jamais. C'est l'inverse du paiement au mot, où le coût de la machine est enfoui dans un prix qui varie aussi selon la quantité de texte que votre équipe rédige ce trimestre. Notre page sur le paiement au mot détaille le calcul, et le calculateur l'applique à vos propres chiffres.
Votre glossaire et votre mémoire de traduction alimentent le modèle, pas seulement les humains. Un terme dont la traduction est fixée est transmis au modèle comme une contrainte avant qu'il n'écrive, et sa sortie est vérifiée ensuite par rapport à vos variables. La terminologie qui donnait lieu à un commentaire de relecture devient une règle que le brouillon respecte déjà.
Tout est accessible depuis un script. La même API alimente l'application web, l'outil en ligne de commande et un serveur MCP : vos traductions sont donc adressables depuis votre CI, une étape de déploiement ou un agent IA travaillant dans votre dépôt. La commande de migration n'est elle-même qu'un de ces points d'accès.
Ce qu'il faut vérifier avant de changer de plateforme
Cela vaut pour tout fournisseur que vous envisagez, nous compris. Les questions qui départagent le plus vite sont rarement celles du tableau comparatif :
- Combien coûte le départ ? Testez l'export avant de vous engager sur l'import. Une plateforme que l'on peut quitter en un après-midi n'est pas le même achat qu'une plateforme dont on ne peut pas sortir.
- Qui paie le fournisseur du modèle ? Si c'est l'éditeur, le prix de l'IA est inclus dans le vôtre et vous ne saurez jamais ce qu'il valait réellement.
- Que coûte la dixième langue par rapport à la première ? Si la réponse est « la même chose », rien n'est réutilisé.
- Les relecteurs sont-ils facturés par siège ? Si oui, vous rationnerez précisément les collègues les plus susceptibles de repérer une erreur.
- Voyez-vous la dépense pendant qu'elle se constitue, ou seulement sur la facture ? Après coup est le pire moment pour découvrir ce qu'a coûté une mise en production.
Questions fréquentes
Puis-je essayer la migration sans m'engager ? Oui, et c'est même la première étape recommandée. --dry-run n'écrit rien d'aucun côté et indique précisément ce que ferait une exécution réelle.
Puis-je n'en transférer qu'une partie ? Oui : --only translations, --only tm ou --only glossary, dans n'importe quelle combinaison. Beaucoup d'équipes commencent par la mémoire de traduction et le glossaire, puisque ce sont les actifs construits au fil des années.
Et si la migration échoue à mi-parcours ? La commande indique ce qui a déjà été écrit, puis s'arrête. Chaque étape est répétable : vous corrigez la cause et relancez la même commande. Rien n'est dupliqué ni supprimé.
Combien de temps cela prend-il ? Un projet de quelques milliers de clés prend une ou deux minutes, passées surtout à lire depuis Crowdin.
Est-ce compatible avec Crowdin Enterprise ? Oui, avec une option supplémentaire indiquant votre organisation.
Le guide complet, avec chaque avertissement que l'outil peut afficher et la marche à suivre correspondante, se trouve dans le guide de migration.