Accéder au contenu principal

champollion

Un cadre d'internationalisation entièrement personnalisable. Une seule commande traduit vos fichiers de locale. Une seule configuration contrôle chaque méthode, modèle et paire de langues. Et si les méthodes intégrées ne suffisent pas — construisez la vôtre, prouvez qu'elle fonctionne, et déployez-la.

npx champollion sync

champollion détecte automatiquement vos fichiers de locale, leur format et vos langues cibles. Il traduit ce qui manque, ignore ce qui est fait, valide chaque résultat et produit une sortie propre. C'est le point de départ.


Pourquoi ne pas simplement l'écrire vous-même ?

Vous pourriez écrire une boucle rapide qui appelle Google Translate sur chaque clé. La plupart des développeurs le font — cela prend environ 30 lignes. Voici où cela s'effondre :

  • Pas de détection de changements. Mettez à jour une chaîne anglaise — la traduction reste obsolète à jamais. champollion suit chaque valeur source avec des hachages SHA-256 et ne retraduit que ce qui a changé.
  • Pas de regroupement par lot. Un appel API par clé signifie 200 clés = 200 allers-retours. champollion regroupe intelligemment (configurable, par défaut 80 clés/lot pour LLM, 128 pour Google).
  • Pas de mise en cache. Chaque synchronisation retraduit tout. La Mémoire de Traduction de champollion met en cache les traductions par texte source + locale + méthode — réexécuter la synchronisation après un changement d'une seule clé ne traduit que cette clé, pas le fichier entier.
  • Pas de contrôle de qualité. La traduction automatique hallucine, répète la source ou produit un script incorrect. champollion valide chaque traduction avant de l'écrire — les scripts incorrects, l'inflation de longueur et les échos de source sont détectés et rejetés.
  • Pas de sensibilisation au format. Codé en dur pour JSON ? champollion gère JSON, TOML, YAML et Markdown Hugo (frontmatter + corps) avec détection automatique.
  • Pas de contrôle de méthode. Chaque paire obtient la même méthode. champollion vous permet d'utiliser Google Translate pour le français, un LLM pour le japonais et un pipeline personnalisé hébergé par la communauté pour le Cree — dans le même fichier de configuration.

champollion est la version de production de ce script.


Ce qui le rend différent

Chaque méthode est un plugin

La méthode de traduction est configurable par paire de langues. Mélangez Google Translate, les LLM, les invites coachées et les API personnalisées dans le même projet :

champollion.config.json
{
"version": 3,
"pairs": {
"en:fr": { "method": "google-translate" },
"en:ja": { "method": "llm", "model": "google/gemini-2.5-pro" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}

Le français obtient Google Translate (rapide, bon marché). Le japonais obtient un LLM premium (nuancé). Le Cree des Plaines obtient un plugin coaché avec des règles de grammaire, des dictionnaires et une validation morphologique. Même commande sync. Même contrôle de qualité. Même CLI.

Prouvez-le

Pensez-vous que votre méthode peut traduire l'anglais vers l'espagnol ? Le turc vers l'azerbaïdjanais ? L'anglais vers le Cree ?

Prouvez-le. Le harnais d'évaluation compagnon évalue toute méthode de traduction avec un scoring reproductible et empreinte numérique. Le classement suit chaque soumission.

Le harnais d'évaluation et la CLI de production partagent la même interface de plugin. Une méthode qui obtient un bon score dans le harnais peut être utilisée en production — si la communauté dont elle sert la langue donne son consentement. Pour les langues autochtones et peu dotées en ressources, ce consentement compte. Voir Data Sovereignty.

# Benchmark your method (in the eval harness repo)
cd arena
python eval/baseline_experiment.py --dataset data/edtekla-dev-v1.json --submit

# Use it locally
npx champollion sync

Même plugin. Branchez et testez.

L'ensemble complet des outils

champollion n'est pas seulement sync. C'est un pipeline i18n complet :

CommandeCe qu'elle fait
syncTraduire les clés manquantes et obsolètes (avec vérification post-synchronisation)
watchSynchronisation automatique lorsque votre fichier source change
lintAnalyser le code source pour les chaînes codées en dur
wrapEnvelopper automatiquement les chaînes codées en dur dans les appels t()
auditLister tous les marqueurs de secours [EN] des exécutions antérieures
verifyVérifier que les traductions sont présentes et correctes (porte CI)
integrityDétecter la corruption des espaces réservés, les problèmes d'encodage et l'exhaustivité des pluriels ICU
seoGénérer les balises hreflang, les sitemaps et le schéma JSON-LD
statusAfficher la configuration de paire, les plugins et les scores de référence
provenanceAuditer les licences des ressources de traduction
pluginInstaller, supprimer et lister les plugins de méthode
fontsTélécharger les polices web pour les convertisseurs de scripts PUA
tmGérer le cache de Mémoire de Traduction (statistiques, effacer, par locale)
xliffExporter/importer XLIFF 1.2 pour examen par traducteur professionnel

Quatre d'entre elles — lint, sync, verify, audit — forment un pipeline CI qui détecte les chaînes codées en dur, les traduit, vérifie l'exactitude et échoue la construction si une locale est incomplète.


L'Arène

Le Classement des Méthodes est le tableau de bord. Chaque soumission est empreinte numérique à un commit Git, versionnée à un ensemble de données spécifique et notée par le même harnais. N'importe qui peut soumettre.

Qu'pouvez-vous prouver ? Le harnais prend du JSON. Les plugins prennent du JSON. Toute méthode qui produit du JSON peut être testée :

ApprocheExemple
LLM coachéInjecter des règles de grammaire et des dictionnaires dans l'invite d'un modèle de pointe
Modèle affinéEntraîner un modèle ouvert sur du texte parallèle — simplement pas sur les données d'évaluation
Pipeline contrôlé par FSTLLM génère → transducteur à états finis valide la morphologie → réessayer
Modèles chaînésLe modèle A brouille → Le modèle B post-édite → Le modèle C note
Dictionnaire + LLMForcer les termes connus d'un dictionnaire, laisser le LLM gérer le reste
ÉvolutionnaireGénérer des candidats, les noter, muter les meilleurs, répéter
Traduction partielleTraduire un échantillon à la main, prouver que votre LLM correspond, auto-traduire le reste

Affinez les modèles. Déployez des algorithmes évolutionnaires. Testez les réponses des étudiants aux examens de langue. Construisez des tables de consultation. Chaînez trois modèles ensemble. Tant que votre méthode produit du JSON, le harnais la note et le cadre l'exécute.

:::danger La seule règle Ne pas entraîner sur les données d'évaluation. Les méthodes exposées à l'ensemble de données de référence seront disqualifiées. Affinez sur ce que vous voulez. Simplement pas sur l'ensemble de test. :::

C'est une invitation ouverte. Si vous travaillez avec une langue peu dotée en ressources — en tant que chercheur, membre de la communauté, étudiant ou simplement quelqu'un qui s'en soucie — construisez une méthode, exécutez le harnais et réclamez le meilleur score. Le problème n'est pas résolu. L'infrastructure est ici.

→ Voir le classement


Prochaines étapes

Pour commencer :

Personnaliser votre configuration :

Aller plus loin :