Naar hoofdinhoud gaan

champollion

Een volledig aanpasbaar internationalisatieframework. Eén commando vertaalt uw localebestanden. Eén configuratie beheert elke methode, elk model en elk taalpaar. En als de ingebouwde methoden niet volstaan — bouw uw eigen, bewijs dat het werkt, en zet het in productie.

npx champollion sync

champollion detecteert automatisch uw localebestanden, het formaat en de doeltalen. Het vertaalt wat ontbreekt, slaat over wat al gedaan is, valideert elk resultaat en schrijft nette uitvoer. Dat is het startpunt.


Waarom Het Niet Gewoon Zelf Scripten?

U kunt een snelle lus schrijven die Google Translate aanroept voor elke sleutel. De meeste ontwikkelaars doen dat — het kost ongeveer 30 regels. Hier loopt het mis:

  • Geen wijzigingsdetectie. Pas een Engelse string aan — de vertaling blijft voor altijd verouderd. champollion houdt elke bronwaarde bij met SHA-256-hashes en hertaalt alleen wat er veranderd is.
  • Geen batching. Eén API-aanroep per sleutel betekent 200 sleutels = 200 round trips. champollion batcht intelligent (configureerbaar, standaard 80 sleutels/batch voor LLM, 128 voor Google).
  • Geen caching. Elke synchronisatie hertaalt alles. champollion's Translation Memory slaat vertalingen op per brontekst + locale + methode — een sync opnieuw uitvoeren na één sleutelwijziging vertaalt alleen die ene sleutel, niet het hele bestand.
  • Geen kwaliteitscontrole. Machinevertaling hallucineert, echoot de bron terug, of produceert uitvoer in het verkeerde schrift. champollion valideert elke vertaling vóór het wegschrijven — verkeerd schrift, lengte-inflatie en bronecho's worden onderschept en afgewezen.
  • Geen formaatbewustzijn. Hardgecodeerd naar JSON? champollion verwerkt JSON, TOML, YAML en Hugo Markdown (frontmatter + body) met automatische detectie.
  • Geen methodebeheer. Elk taalpaar krijgt dezelfde methode. champollion laat u Google Translate gebruiken voor Frans, een LLM voor Japans, en een aangepaste community-hosted pipeline voor Cree — in hetzelfde configuratiebestand.

champollion is de productieversie van dat script.


Wat Het Onderscheidt

Elke methode is een plugin

De vertaalmethode is per taalpaar configureerbaar. Combineer Google Translate, LLM's, gecoachte prompts en aangepaste API's in hetzelfde project:

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" }
}
}

Frans krijgt Google Translate (snel, goedkoop). Japans krijgt een premium LLM (genuanceerd). Plains Cree krijgt een gecoachte plugin met grammaticaregels, woordenboeken en morfologische validatie. Hetzelfde sync-commando. Dezelfde kwaliteitscontrole. Dezelfde CLI.

Bewijs het

Denkt u dat uw methode Engels naar Spaans kan vertalen? Turks naar Azerbeidzjaans? Engels naar Cree?

Bewijs het. De bijbehorende eval harness benchmarkt elke vertaalmethode met reproduceerbare, gefingerprintte scores. Het leaderboard houdt elke inzending bij.

De eval harness en de productie-CLI delen dezelfde plugin-interface. Een methode die goed scoort in de harness kan in productie worden gebruikt — als de gemeenschap wier taal het betreft daarvoor toestemming geeft. Voor inheemse talen en talen met weinig middelen is die toestemming van belang. Zie 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

Dezelfde plugin. Aansluiten en testen.

De volledige toolkit

champollion is niet alleen sync. Het is een complete i18n-pipeline:

CommandoWat Het Doet
syncOntbrekende en verouderde sleutels vertalen (met verificatie na synchronisatie)
watchAutomatisch synchroniseren wanneer uw bronbestand wijzigt
lintBroncode scannen op hardgecodeerde strings
wrapHardgecodeerde strings automatisch inpakken in t()-aanroepen
auditAlle [EN]-fallbackmarkeringen uit eerdere runs weergeven
verifyVerifiëren of vertalingen aanwezig en correct zijn (CI-gate)
integrityPlaatshouderfouten, coderingsproblemen en ICU-meervoudsvolledigheid detecteren
seohreflang-tags, sitemaps en JSON-LD-schema genereren
statusPaarconfiguratie, plugins en benchmarkscores weergeven
provenanceLicenties van vertaalresources controleren
pluginMethodeplugins installeren, verwijderen en weergeven
fontsWeblettertypen downloaden voor PUA-schriftconverters
tmTranslation Memory-cache beheren (statistieken, wissen, per locale)
xliffXLIFF 1.2 exporteren/importeren voor beoordeling door professionele vertalers

Vier hiervan — lint, sync, verify, audit — vormen een CI-pipeline die hardgecodeerde strings onderschept, ze vertaalt, de correctheid verifieert en de build laat mislukken als een locale onvolledig is.


De Arena

Het Method Leaderboard is het scorebord. Elke inzending is gefingerprintt aan een Git-commit, gekoppeld aan een specifieke dataset en gescoord door dezelfde harness. Iedereen kan inzenden.

Wat kunt u bewijzen? De harness verwerkt JSON. Plugins verwerken JSON. Elke methode die JSON produceert, kan worden getest:

AanpakVoorbeeld
Gecoachte LLMGrammaticaregels en woordenboeken injecteren in de prompt van een frontiermodel
Fijnafgestemd modelEen open model trainen op parallelle tekst — maar niet op de evaluatiedata
FST-gated pipelineLLM genereert → finite-state transducer valideert morfologie → opnieuw proberen
Geketende modellenModel A maakt concept → Model B bewerkt na → Model C scoort
Woordenboek + LLMBekende termen uit een woordenboek afdwingen, de rest aan de LLM overlaten
EvolutionairKandidaten genereren, scoren, de beste muteren, herhalen
Gedeeltelijke vertalingEen steekproef met de hand vertalen, bewijzen dat uw LLM overeenkomt, de rest automatisch vertalen

Modellen fijnafstellen. Evolutionaire algoritmen inzetten. Studentantwoorden op taalexamens testen. Opzoektabellen bouwen. Drie modellen aan elkaar koppelen. Zolang uw methode JSON produceert, scoort de harness het en voert het framework het uit.

:::danger De ene regel Train niet op de evaluatiedata. Methoden die zijn blootgesteld aan de benchmarkdataset worden gediskwalificeerd. Stem af op wat u wilt. Alleen niet op de testset. :::

Dit is een open uitnodiging. Als u werkt met een taal met weinig middelen — als onderzoeker, gemeenschapslid, student of gewoon iemand die het belangrijk vindt — bouw een methode, voer de harness uit en claim de topscore. Het probleem is onopgelost. De infrastructuur is er.

→ Bekijk het leaderboard


Volgende Stappen

Aan de slag:

Uw configuratie aanpassen:

Dieper ingaan: