Aller au contenu

Open source · MIT · Apportez votre propre clé LLM

Votre agent localise. Le code garantit.

Votre agent de code déplace les chaînes codées en dur vers des clés et les traduit. glot vérifie chaque sortie du LLM avec du code déterministe et refuse tout ce qui est invalide ou trop long, avec la raison exacte, jusqu'à ce que la nouvelle tentative soit valide.

Ouvrir l'application

Détecte votre stack i18n, extrait les chaînes, traduit, vérifie. Relancez-la après chaque modification de l'interface.

Binaire glot réel. Le LLM de cet enregistrement est programmé pour se tromper sur trois chaînes ; les refus sont ceux de glot.

Benchmark, 18 octobre 2026

Chaînes cassées parvenues au catalogue

320 messages ICU par modèle et condition, 8 langues. Mêmes prompts, mêmes modèles.

Part des messages traduits cassés, par modèle et condition
ModèlePrompt brutAvec glot
Claude Haiku 5.514,1 %0 %
Claude Sonnet 5.58,8 %0 %
Avec glot, 1,9 % (Haiku) et 3,1 % (Sonnet) des chaînes ont été refusées après de nouvelles tentatives et laissées non traduites plutôt que livrées cassées. Un juge indépendant (FormatJS + Intl.PluralRules) est d'accord. Lire le rapport complet

Comment ça marche

Trois étapes. Votre agent peut aussi les exécuter.

Ou les trois d'un coup, de façon idempotente : npx glot-i18n localize.

  1. 1

    Détecter

    Détecte votre bibliothèque i18n et vos catalogues, écrit glot.toml et les règles que lit votre agent de code.

    $ npx glot-i18n init

    next-intl · messages/{locale}.json

    wrote glot.toml, CLAUDE.md rules

  2. 2

    Extraire

    Déplace les chaînes d'interface codées en dur vers des clés et réécrit les composants pour next-intl ou react-i18next.

    $ npx glot-i18n i18nize

    42 strings → keys in 9 components

    app/checkout/page.tsx +12 −12

  3. 3

    Traduire, validé

    Seul le delta. Chaque sortie est vérifiée ; un refus repart vers le modèle avec la raison. Toujours invalide après les nouvelles tentatives : rien n'est écrit.

    $ npx glot-i18n translate

    ✗ refused pl inbox.unread: missing few, many

    ✓ fixed pl attempt 2 · check passed

Les garanties

Le LLM propose. Le code décide de ce qui est écrit.

Chaque carte montre un refus réel, mot pour mot tel qu'affiché par glot.

  • Variables et balises

    Même ensemble que la source, aucun ajouté, aucun traduit. ICU, i18next et MessageFormat 2.

    fr "Bon retour, {nom} !"

    Refusé par glot: Placeholder `{nom}` does not exist in the source; remove it or fix its name (the source only has {name}).

  • Pluriels CLDR

    Toutes les catégories nécessaires à la langue cible : quatre pour le polonais, six pour l'arabe.

    pl "{count, plural, one {…} other {…}}"

    Refusé par glot: `{count, plural, …}` is missing plural categories required by pl: few, many.

  • Glossaire en code

    glossaire.toml dans votre dépôt : traductions obligatoires et interdites, termes à ne pas traduire.

    fr "Ouvrez votre espace"

    Refusé par glot: Glossary: `Workspace` must be translated as `Espace de travail` in fr.

  • Largeur en pixels

    Mesuré avec la police et la boîte réelles de votre application. Trop large : refusé, jamais tronqué.

    de "Zahlungserinnerung an den Kunden senden"

    Refusé par glot: Too wide for its box in the app: one line of 120px at Geist 14px/400; it renders 276px wide.

  • Lockfile

    glot.lock enregistre les hachages de la source et de la cible. Seul le delta est traduit ; les modifications manuelles ne sont jamais écrasées.

    $ glot translate --locales fr

    Refusé par glot: 1 edited by hand

  • Contrôle CI

    glot check exécute toutes les règles hors ligne sur chaque catalogue et quitte avec le code 1 en affichant des annotations de PR.

    $ glot check --format github

    Refusé par glot: ::error file=messages/de.json,line=12,title=glot tag_mismatch::[de] home.cta: Markup tags differ from the source: missing `<b>`

Budget en pixels

Des traductions qui tiennent dans le bouton

L'allemand est souvent d'un tiers plus long que l'anglais. glot fit capture votre application en cours d'exécution dans chaque langue, mesure chaque texte par rapport à son conteneur, demande au LLM une variante plus courte qui conserve le sens et les variables, puis effectue un nouveau rendu.

  • Mesuré dans le navigateur, et non estimé à partir d'un nombre de caractères
  • Les variantes raccourcies passent toujours le validateur et le glossaire
  • Un nombre fixe de passes, jamais de boucle sans fin
Avant · Déborde de son bouton de 112 px
Zahlungserinnerung sendenAls bezahlt markierenArchivieren

"Zahlungserinnerung senden"

Après glot fit, 1 itération · Tient
MahnungAls bezahlt markierenArchivieren

"Mahnung" · claude-haiku-5-5 · $0.0002

Exécution réelle sur l'application de démo, langue allemande.

Essayez, rien à installer

Pouvez-vous casser glot ?

Modifiez la traduction. Le même validateur que celui qui protège glot translate, compilé en WebAssembly, s’exécute dans votre navigateur à chaque frappe.

Partir d'une traduction cassée

Chargement du validateur…

Aucun refus pour l’instant. Essayez l’un des défis.

La largeur en pixels et le glossaire nécessitent votre application et votre dépôt : essayez-les avec la CLI.

Agents

Fonctionne avec l'agent que vous utilisez déjà

glot mcp fournit à votre agent vos clés, leurs emplacements d'utilisation et le glossaire. Chaque chaîne qu'il ajoute passe par le même validateur.

Configuration pour chaque agent

Édition dans l'application

Alt+clic sur n'importe quel texte de votre application

L'overlay de développement trouve la clé derrière le texte cliqué, l'affiche dans toutes les langues avec les problèmes du validateur en direct, et enregistre dans vos fichiers de catalogue.

  • Actions IA : suggérer, raccourcir, plus formel, tout traduire
  • Signale le texte qui déborde de son conteneur
  • Dev uniquement, environ 6 ko gzippé
Popover de glot affichant une clé, sa source et ses traductions en cinq langues

Comparatif

Ce qui différencie glot des plateformes de traduction hébergées et des autres outils pensés pour les développeurs.

FonctionnalitéglotLokaliseCrowdinLingo.devTolgee
PrixGratuit (MIT) + votre usage de LLMDès 149 $/mois, essai de 14 joursAbonnement après un essai de 14 jours, gratuit pour l'open sourceCLI gratuit avec votre propre clé API, moteur hébergé à 0 $ de base + usageOffre gratuite et auto-hébergement gratuit, cloud dès 58 €/mois
Open source
Apportez votre propre clé LLM
Validation déterministe de chaque chaîne
Git comme source de vérité (lockfile)
Serveur MCP pour agents de codage
Édition en contexte dans votre application
Ajustement au pixel près, sur le rendu

Vérifié sur le site public et la documentation de chaque éditeur, le 18 octobre 2026. Partiel signifie limité, dépendant de l'offre ou passant par une intégration. Non signifie qu'aucune fonctionnalité de ce type n'a été trouvée dans la documentation publique. Les offres évoluent : chaque cellule renvoie à sa source.

Sources et dates pour chaque cellule

Combien ça coûte ?

glot est MIT et gratuit. Vous payez votre fournisseur LLM avec votre propre clé : 850 chaînes coûtent 0,035 $ avec le modèle par défaut dans notre test. glot translate --dry-run estime d'abord, et un budget plafonne le coût.

Ajoute-t-il une dépendance à l'exécution ?

Non. Votre application garde next-intl, i18next ou FormatJS avec des catalogues JSON simples. glot travaille sur les fichiers, dans votre dépôt et en CI.

Que se passe-t-il si le modèle continue de mal traiter une chaîne ?

glot renvoie la raison exacte et réessaie deux fois, puis essaie le modèle de secours. Si cela échoue encore, rien n'est écrit : la clé est signalée comme rejetée et reste non traduite.

Mon code quitte-t-il ma machine ?

Les chaînes à traduire et leur contexte sont envoyés à votre fournisseur LLM, pas vos fichiers source. Rien ne part vers les auteurs de glot : il n'y a aucune télémétrie.

Ai-je besoin de l'application web ?

Non. La CLI et le serveur MCP effectuent toute la tâche localement. L'application ajoute un tableau de bord partagé, la relecture et la synchronisation GitHub pour les équipes.

Livrez chaque langue à chaque version.

Une commande dans votre dépôt. Rien de cassé n'atteint vos catalogues.

Lire le guide de démarrage