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 :
{
"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 :
| Commande | Ce qu'elle fait |
|---|---|
sync | Traduire les clés manquantes et obsolètes (avec vérification post-synchronisation) |
watch | Synchronisation automatique lorsque votre fichier source change |
lint | Analyser le code source pour les chaînes codées en dur |
wrap | Envelopper automatiquement les chaînes codées en dur dans les appels t() |
audit | Lister tous les marqueurs de secours [EN] des exécutions antérieures |
verify | Vérifier que les traductions sont présentes et correctes (porte CI) |
integrity | Détecter la corruption des espaces réservés, les problèmes d'encodage et l'exhaustivité des pluriels ICU |
seo | Générer les balises hreflang, les sitemaps et le schéma JSON-LD |
status | Afficher la configuration de paire, les plugins et les scores de référence |
provenance | Auditer les licences des ressources de traduction |
plugin | Installer, supprimer et lister les plugins de méthode |
fonts | Télécharger les polices web pour les convertisseurs de scripts PUA |
tm | Gérer le cache de Mémoire de Traduction (statistiques, effacer, par locale) |
xliff | Exporter/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 :
| Approche | Exemple |
|---|---|
| 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 FST | LLM génère → transducteur à états finis valide la morphologie → réessayer |
| Modèles chaînés | Le modèle A brouille → Le modèle B post-édite → Le modèle C note |
| Dictionnaire + LLM | Forcer les termes connus d'un dictionnaire, laisser le LLM gérer le reste |
| Évolutionnaire | Générer des candidats, les noter, muter les meilleurs, répéter |
| Traduction partielle | Traduire 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.
Prochaines étapes
Pour commencer :
- Installation — Configurez en 2 minutes
- Démarrage rapide — Exécutez votre première synchronisation
- Langues prises en charge — Ce qui est disponible d'emblée
Personnaliser votre configuration :
- Méthodes de traduction — Choisir la bonne méthode par paire
- Mémoire de traduction — Comment la mise en cache vous fait économiser de l'argent
- Configuration — Référence de configuration complète
- Site multilingue Hugo — Traduction de contenu Markdown
Aller plus loin :
- Travailler avec des traducteurs professionnels — Flux de travail d'export/import XLIFF
- Data Sovereignty — Principes OCAP, CARE et Māori Data Sovereignty
- Soutenir une langue peu dotée en ressources — Le défi qui l'a lancé
- Cookbook : Pipeline contrôlé par FST — Construire un pipeline de décomposition
- Évaluation MT — Comment le harnais et le classement fonctionnent
- Classement des méthodes — Scores en direct et soumissions