Claude Traducteur
C'est le pipeline qui fonctionne www.conveythis.com lui-même — un site Astro de 238 pages, en direct en 55 langues. Nous l'avons extrait, documenté tous les modes de défaillance qu'il nous a coûté de trouver et publié le tout. Ce n’est ni un essai ni un teaser : il n’y a pas de clé à acheter, pas de quota et pas de compte.
Deux décisions de conception
Comment ça fonctionne
Deux décisions le définissent. Tout d'abord, les traductions sont insérées dans le HTML construit par décalage d'octet et le document n'est jamais resérialisé à partir d'un DOM — donc CSS critique intégré, l'élément LCP, les hachages d'actifs et le width/height les attributs qui contiennent CLS restent tous intacts. C'est pourquoi les pages locales correspondent à la langue source sur Core Web Vitals plutôt que de simplement lui ressembler. Deuxièmement, l'unité de traduction est le bloc entier, et non le nœud de texte, car environ un cinquième des nœuds de texte d'un site typique sont divisés par un balisage en ligne et la traduction séparée des fragments brise la grammaire dans toute langue qui réorganise ou infléchit.
Le résultat est prouvé plutôt qu’affirmé : huit portes et un audit SEO exhaustif sur chaque page, dont une porte qui existe uniquement parce que les mesures de couverture sont structurellement aveugles aux bugs d’extraction.
Vérification
Est-ce que ça tient vraiment ?
C'est une question légitime, et elle est vérifiable plutôt que quelque chose pour laquelle vous devez nous croire sur parole. doctranslator.com/fr est un grand site Astro dont les pages françaises ont été construites par ce pipeline. Comparez-le à l'original anglais et le balisage est octet-identique:
2,743
balises, dans une séquence identique
2,031
attributs de classe, tous correspondants
+0.74%
poids de la page — le français est plus long
Rien de structurel n'a bougé, il n'y a donc rien que le navigateur puisse présenter différemment. Vérifiez-le vous-même — cela prend environ dix secondes :
curl -s https://doctranslator.com/ | grep -o 'class="[^"]*"' > en.txt
curl -s https://doctranslator.com/fr | grep -o 'class="[^"]*"' > fr.txt
diff en.txt fr.txt && echo "markup identical — only the text changed"Et les scores
| Source anglaise | Français, à partir de cet outil | A11y / Meilleures pratiques / SEO | |
|---|---|---|---|
| Bureau | 100 | 100 | 100 / 100 / 100 |
| Mobile | 98 | 98 | 100 / 100 / 100 |
Scores de performance de PageSpeed Insights, mesurés le 25 août 2026. L'accessibilité, les meilleures pratiques et le référencement étaient au top à chaque exécution des deux pages, dans les deux stratégies.
Ce sont des médianes, délibérément. Les scores de Lighthouse bougent : cinq exécutions consécutives de la même page mobile anglaise ont renvoyé 98, 98, 88, 98, 98, avec une peinture la plus riche en contenu oscillant entre 1,8 s et 3,2 s. Il s’agit de la variance du réseau et du CDN plutôt que de la qualité de la page. Si vous mesurez une fois et obtenez 91, c'est pourquoi — exécutez-le plusieurs fois et comparez les deux langues l'une par rapport à l'autre plutôt que par rapport à un nombre sur une page marketing.
Et la langue
L'identité du balisage est mesurable. Si l'espagnol est un bien c'est une question différente, et jusqu'à la version 2.0, le pipeline n'avait pas de réponse — les tests vérifiaient les formes des requêtes et les échafaudages, et rien n'obtenait de traduction.
node scripts/i18n/tqa.mjs --lang es --dry # sample size and cost, no API call
node scripts/i18n/tqa.mjs --lang es,fr,de # scorecard + per-locale JSON
node scripts/i18n/tqa.mjs --lang es --repeat # judge the same sample twiceIl évalue un échantillon stratifié sur la typologie d'erreur MQM à ses pondérations conventionnelles — mineur 1, majeur 5, critique 10 — et pondère l'échantillon en fonction de la fréquence à laquelle chaque chaîne apparaît, de sorte que l'en-tête que tout le monde lit compte pour plus qu'une note de bas de page unique. Trois choses empêchent le numéro d’être décoratif :
- Le juge est un modèle différent du traducteur
- Les modèles obtiennent généreusement leur propre résultat. Si aucune deuxième clé de fournisseur n'est configurée, elle utilise la même et l'indique, lors de l'exécution et dans le rapport.
- L'échantillon est ensemencé et la variance est rapportée
- Une graine reproduit exactement une partition ;
--repeatnote deux fois le même échantillon et imprime l'écart. Un numéro de qualité que personne ne peut redériver, cité sans son bruit, est un numéro marketing. - Une unité que le juge ne peut pas évaluer est exclue et n'est pas considérée comme propre
- Une première version imprimait 100,00 sur 100 à partir d'un échantillon dont chaque unité n'avait pas réussi à analyser. Dans ce cas, elle refuse désormais de communiquer un score.
Lisez-le comme une comparaison — entre les lieux, entre les modèles, avant et après un changement rapide — et non comme une note. Il s’agit d’une évaluation par un modèle du travail d’un autre plutôt que d’une analyse humaine, et le rapport le dit à première vue.
Décision trois
La terminologie n'est pas un choix par phrase
Les chaînes identiques étaient toujours cohérentes — les unités sont saisies par un hachage du texte source, donc une étiquette de navigation traduite une fois est réutilisée sur chaque page et entre les exécutions. Ce que cela ne peut pas faire, c'est maintenir un mandat à l'intérieur de phrases variées: “Le tableau de bord” dans deux paragraphes différents contient deux hachages, deux lots, deux requêtes sans état et rien ne les compare.
[
{ "source": "Acme", "rule": "keep", "matchCase": true },
{ "source": "Dashboard", "rule": "translate",
"targets": { "es": "Panel de control", "de": "Übersicht" } }
]matchCase est la réponse à une question qui nous a été posée directement : peut-elle dire Pomme l'entreprise de pomme le fruit ? Une liste plate de noms ne peut pas exprimer cela. Des règles complètes et sensibles à la casse le peuvent.
| source | espagnol | pourquoi |
|---|---|---|
| Apple a annoncé un appareil | Apple annonce un dispositif | majuscule A — protégé, et maintenant vérifié |
| Une pomme par jour | Una manzana al día | minuscule — traduit normalement |
| La compote de pommes est en vente | La compota está en oferta | mot entier — ne correspond jamais à l'intérieur d'un mot plus long |
La même version indique au modèle qu'est-ce qu'une chaîne. Il recevait le texte et rien d'autre, donc une étiquette de bouton et un paragraphe de corps étaient indiscernables — ce qui rendait inapplicable la propre instruction de l'invite de garder les étiquettes de bouton courtes. A <button>, un titre, une étiquette de formulaire et une méta description le disent désormais chacun.
Il n'exige délibérément pas l'impératif des boutons : l'interface utilisateur allemande préfère un nom verbal et le français l'infinitif, il demande donc la construction que cette langue met réellement sur un bouton. Les noms de marque que vous répertoriez déjà sont automatiquement intégrés en tant que règles de conservation sensibles à la casse, ce qui les place également sous une porte de vérification qui vérifie qu'ils ont survécu. Rien n'a vérifié cela auparavant.
Conventions locales
Les chiffres sont localisés. Les prix ne sont jamais convertis.
En écrivant 1,234.56 pour un lecteur allemand, c’est l’une des marques les plus visibles d’une traduction automatique. Les modèles ne sont pas fiables lors des conventions de séparation, il est donc demandé au modèle de laisser les nombres tranquilles et Intl les reformate ensuite, de manière déterministe.
| source | devient | où |
|---|---|---|
| 1,234.56 | 1.234,56 | of |
| 1,234.56 | 1 234,56 | Ven |
| $5 | 5,00 $US | fr — placement et espacement, pas la quantité |
| 50% | 50 % | fr — avec un espace insécable |
Il formate. Il ne se convertit jamais.
aucune option de configuration pour celaUn prix est un engagement commercial, et en convertir un à un taux intégré dans une version — obsolète le lendemain de sa rédaction — est la façon dont un outil de traduction commence à publier de mauvaises offres sur des marchés que personne ne surveille. Chaque montant monétaire trouvé est écrit dans un rapport, de sorte qu'un humain évalue délibérément chaque marché.
Une porte d'intégrité numérique confirme cela en échouant à la construction si un nombre valeur changements entre la source et la traduction. Un modèle qui expédie tranquillement $39 où la source a dit $49 passe tous les autres contrôles : balisage identique, espaces réservés correspondants, longueur plausible, espagnol courant.
Délibérément laissé tranquille : numéros de version, heures, adresses IP, dates ISO, numéros de téléphone et tout numéro non groupé — au cours du développement, un modèle gourmand s'est transformé 192.168.1.1 dans 1.921.681,1, et ce cas est désormais un test. Un résultat qui ressemble à un bug et qui ne l'est pas : l'espagnol ne regroupe pas les nombres à quatre chiffres, donc 1,234.50 est correct 1234,50 dans es et 1.234,50 dans de.
Routage honnête
De lequel avez-vous réellement besoin ?
La substitution statique et une couche d'exécution résolvent différents problèmes. Choisir le mauvais vous coûte un week-end, alors voici la répartition honnête.
Vous avez une version statique, le contenu change à une cadence de publication et vous souhaitez posséder entièrement le HTML.
Claude Traducteur
Gratuit, auto-hébergé, AGPL-3.0. Votre propre clé API, vos propres fichiers, pas de compte.
Voir sur GitHub →Votre contenu change quotidiennement, vit dans un CMS, est généré par les utilisateurs ou se trouve derrière une connexion ou un paiement.
ConveyThis
Une couche d'exécution gérée. Aucune étape de construction à accrocher, aucune réexécution à chaque modification, un éditeur visuel et une révision humaine.
Voir les tarifs →Ce dont vous avez besoin traduit, ce sont des documents plutôt que des pages — PDF, DOCX, XLSX, PPTX.
DocTranslator
Fichiers entiers, mise en page et tableaux conservés, 100+ langues.
Aller à DocTranslator →Démarrage rapide
Installez-le
Référentiel
https://github.com/ConveyThis/claude-translator
AGPL-3.0 · Nœud ≥ 20 · une dépendance (parse5) · ouvert sur GitHub →
Vous avez besoin
- Node.js 20 ou plus récent
- Un site qui construit en HTML statique — il lit votre sortie de build, pas votre source
- Une clé API pour le modèle que vous choisissez — ou aucun du tout, si vous en exécutez un localement
En tant que compétence Claude Code
Clonez-le dans votre répertoire de compétences, puis demandez à Claude de localiser le site. Il suit les instructions fournies, y compris les modes de défaillance qui nous coûtent de l'argent réel à trouver — et les règles pour savoir quand il s'agit du mauvais outil.
git clone https://github.com/ConveyThis/claude-translator.git \
~/.claude/skills/claude-translatorDans n'importe quel projet
Une commande. init copie le pipeline dans scripts/i18n/, écrit une configuration, déclare parse5 et ajoute le dérivé i18n/ chemins vers votre .gitignore. Il n'écrase jamais rien sans --force, et il imprime chaque fichier qu'il a touché.
cd your-project
npx claude-translator init
npm install # parse5, the only dependencyLes scripts atterrissent dans votre référentiel plutôt que d'y rester node_modules exprès — ils résolvent les chemins du projet dans lequel ils se trouvent, ils sont suffisamment courts pour être lus et la licence existe pour que vous puissiez les modifier.
Installation sans npx
git clone https://github.com/ConveyThis/claude-translator.git
cp -r claude-translator/scripts your-project/scripts/i18n
cp claude-translator/i18n.config.example.json your-project/i18n.config.json
cd your-project && npm install --save-dev parse5Configurer
La plus petite configuration qui s'exécute. buildDir c'est là que votre générateur écrit du HTML ; baseUrl est votre origine canonique, pas de barre oblique finale.
{
"buildDir": "dist",
"baseUrl": "https://example.com",
"provider": "anthropic",
"glossary": "glossary.json",
"locales": [
{ "hreflang": "es", "pathCode": "es", "nativeLabel": "Español" },
{ "hreflang": "de", "pathCode": "de", "nativeLabel": "Deutsch" }
]
}echo "ANTHROPIC_API_KEY=your-key-here" >> .env # and gitignore itExécutez-le
| npm exécuter la construction | votre build normal — langue source uniquement |
| scripts de nœuds/i18n/extract.mjs | trouver chaque unité traduisible |
| scripts de nœuds/i18n/translate.mjs --lang es,fr | traduire dans la mémoire |
| scripts de nœuds/i18n/build-locales.mjs --lang all | écrire les pages localisées |
| scripts de nœud/i18n/verify.mjs --lang tout | huit portes — sorties non nulles en cas d'échec |
| scripts de nœuds/i18n/audit-seo.mjs | canoniques, hreflang, JSON-LD, plans de site |
| scripts de nœuds/i18n/tqa.mjs --lang es --dry | facultatif — score de qualité MQM, coût en premier |
Déployez ensuite le répertoire de build exactement comme vous le déployez aujourd'hui — les pages localisées sont des fichiers ordinaires situés à côté de vos fichiers existants. Les options complètes, chaque mode de défaillance et le raisonnement derrière chaque décision de conception sont dans le LIREME.
Des modèles
Apportez votre propre modèle — y compris un modèle local
L'étape de traduction communique avec un modèle via un petit adaptateur, et trois sont livrés avec lui : Claude (par défaut), Gemini et tout point de terminaison compatible OpenAI. Ce dernier couvre la majeure partie du domaine — OpenAI, Azure, Groq, DeepSeek, Mistral, OpenRouter, Together, Fireworks— et il couvre également Ollama, LM Studio et vLLM.
Ce qui signifie que trois lignes de configuration exécutent l'intégralité du pipeline sur votre propre matériel :
{
"provider": "openai",
"apiBaseUrl": "http://localhost:11434/v1",
"model": "qwen2.5:14b"
}Pas de clé, pas de quota, et rien ne quitte la machine — ce qui compte si le contenu est confidentiel. Tout ce qui ne figure pas dans cette liste est un fichier adaptateur contenant deux fonctions.
Limites
Où s'arrête l'outil gratuit
Six limites réelles. Aucune d'entre elles n'est une fonctionnalité paralysée — elles correspondent à la forme de l'approche et les scripts vous indiquent quand vous en appuyez une au lieu d'échouer discrètement.
- Hydratation côté client
- Les îles et les charges utiles du framework s'affichent à nouveau dans le navigateur, via le code HTML substitué. L'extracteur compte les pages concernées afin que vous le sachiez en quelques secondes, et non après une exécution complète.
- Des documents
- Les PDF liés, DOCX et XLSX restent dans la langue source — le pipeline ne touche que HTML.
- Baratte
- La mémoire est indexée par hachage source, elle peut donc vous indiquer quelle part de votre site a changé depuis la dernière exécution. Un taux de désabonnement élevé signifie payer pour retraduire, à plusieurs reprises.
- Édition d'une traduction
- Recherchez le hachage dans le fichier mémoire, modifiez la chaîne, reconstruisez. Il n'y a pas d'éditeur, pas de réviseur et pas de flux de travail.
- Volume
- Vous payez directement votre propre fournisseur de modèle, à son tarif, avec votre propre clé — ou rien du tout, si vous exécutez le modèle vous-même.
- Utilisation modifiée du réseau
- AGPL-3.0 §13 vous oblige à publier des modifications si vous exécutez une copie modifiée en tant que service pour d'autres personnes. Son exécution sans modification, ou modifiée en interne, est illimitée.
Les quatre premiers sont ceux que les gens frappent réellement, et ils ont tous la même forme : quelque chose doit arriver après la construction, ce qu'un outil de construction ne peut pas faire. C'est à cela que sert le produit géré, et le plan gratuit c'est 5 000 mots sans carte, ce qui suffit pour savoir si cela aide. Vous n'en avez pas besoin pour utiliser quoi que ce soit sur cette page.
Attribution
Ce qu'il met sur vos pages
Les pages localisées portent un <meta name="generator"> balise et un commentaire HTML nommant ConveyThis — environ 150 octets, aucune demande, aucun script et aucun lien. C'est le même mécanisme qu'Astro, Hugo et WordPress utilisent. Deux clés de configuration le suppriment et rien dans le dépôt ne vérifie si vous l'avez fait.
Si vous préférez afficher un crédit visible, définissez credit.visibleLink à true et placez l'emplacement où vous le souhaitez sur la page. Rien ne vous est demandé pour cela et rien n'est donné en retour — cela existe parce que certaines personnes veulent créditer les outils qu'elles utilisent, et pour aucune autre raison.
Le lien de crédit est rel="nofollow", délibérément. Non pas parce qu'il est payant — ce n'est pas le cas — mais parce qu'il s'agit d'un lien qu'un script de construction ajouterait autrement sur chaque page d'un site, et les liens à l'échelle du site qui apparaissent via des outils plutôt que par choix éditorial sont la forme à laquelle s'adressent les conseils de Google en matière de schéma de liens. Cela vaut la peine d'avoir du trafic de référence, pas des backlinks — quiconque vous dit le contraire vous vend une pénalité.
Licence commerciale
Le code est AGPL-3.0. La localisation de vos propres sites et l'expédition de la sortie sont illimitées — la licence couvre le logiciel et non le HTML qu'il écrit. Ça ne mord que si tu cours un modifié copier en tant que service réseau pour d'autres personnes. Si c'est vous et que vous ne pouvez pas publier vos modifications, écrivez à [email protégé].
Des questions
Les questions que les gens posent réellement
Est-ce vraiment gratuit ? Quel est le piège ?
Ai-je besoin d'un compte ConveyThis ?
Combien coûte réellement une course ?
Puis-je utiliser mon propre modèle ou l’exécuter complètement hors ligne ?
Les pages traduites seront-elles plus lentes que les originales ?
Est-ce que cela fonctionne avec mon framework ?
Qu'en est-il des composants React ou des îlots Astro qui s'hydratent ?
Peut-il garder ma terminologie cohérente et distinguer un nom de marque d’un mot ordinaire ?
Je l'utilise déjà. Qu'est-ce qui change lorsque je passe à la version 2.0.0 ?
Puis-je corriger une traduction que je n'aime pas ?
Que se passe-t-il lorsque je modifie une page ou que j'en ajoute une nouvelle ?
Les pages traduites seront-elles indexées par Google ?
Puis-je l'utiliser commercialement ? Que signifie AGPL-3.0 pour moi ?
L'attribution ConveyThis est-elle requise ?
En quoi est-ce différent de ConveyThis lui-même ?
La traduction, bien plus que la simple connaissance des langues, est un processus complexe.
En suivant nos conseils et en utilisant ConveyThis , vos pages traduites trouveront un écho auprès de votre public, se sentant natif de la langue cible.
Même si cela demande des efforts, le résultat est gratifiant. Si vous traduisez un site Web, ConveyThis peut vous faire gagner des heures grâce à la traduction automatique automatisée.
Commencez par ConveyThis sur notre forfait gratuit — aucune carte de crédit requise !
