Ga naar hoofdinhoud

i18n-rosetta

Een volledig aanpasbaar internationalisatie-framework. Eén commando vertaalt uw locale-bestanden. Eén configuratie beheert elke methode, elk model en elk talenpaar. En als de ingebouwde methoden niet voldoende zijn — bouw uw eigen methode, bewijs dat deze werkt en deploy deze.

npx i18n-rosetta sync

rosetta detecteert automatisch uw locale-bestanden, het formaat en de doeltalen. Het vertaalt wat ontbreekt, slaat over wat al gedaan is, valideert elk resultaat en schrijft schone output. Dat is het startpunt.


Waarom schrijft u niet gewoon zelf een script?

U zou een snelle loop kunnen schrijven die Google Translate aanroept voor elke key. De meeste developers doen dit — het kost ongeveer 30 regels. Hier gaat het mis:

  • Geen change detection. Update een Engelse string — de vertaling blijft voor altijd verouderd. rosetta volgt elke bronwaarde met SHA-256 hashes en vertaalt alleen opnieuw wat er is veranderd.
  • Geen batching. Eén API call per key betekent 200 keys = 200 round trips. rosetta bundelt intelligent (configureerbaar, standaard 80 keys/batch voor LLM, 128 voor Google).
  • Geen caching. Elke sync vertaalt alles opnieuw. De Translation Memory van rosetta slaat vertalingen op in de cache op basis van brontekst + locale + methode — het opnieuw uitvoeren van een sync na de wijziging van één key vertaalt alleen die ene key, niet het hele bestand.
  • Geen quality gate. Machine translation hallucineert, echoot de bron terug of geeft output in het verkeerde script. rosetta valideert elke vertaling voordat deze wordt weggeschreven — verkeerd script, lengte-inflatie en bron-echo's worden opgevangen en afgewezen.
  • Geen format awareness. Hardcoded naar JSON? rosetta verwerkt JSON, TOML, YAML en Hugo Markdown (frontmatter + body) met automatische detectie.
  • Geen method control. Elk paar krijgt dezelfde methode. Met rosetta kunt u Google Translate gebruiken voor het Frans, een LLM voor het Japans en een aangepaste community-hosted pipeline voor het Cree — in hetzelfde configuratiebestand.

rosetta is de productie-versie van dat script.


Wat maakt het anders

Elke methode is een plugin

De vertaalmethode is configureerbaar per talenpaar. Combineer Google Translate, LLM's, coached prompts en custom API's in hetzelfde project:

i18n-rosetta.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 coached plugin met grammaticaregels, woordenboeken en morfologische validatie. Hetzelfde sync commando. Dezelfde quality gate. Dezelfde CLI.

Bewijs het

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

Bewijs het. De bijbehorende eval harness benchmarkt elke vertaalmethode met reproduceerbare, gefingerprinte 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 — mits de gemeenschap wiens taal het bedient, toestemming geeft. Voor inheemse en low-resource talen is die toestemming van belang. Zie Data Sovereignty.

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

# Use it locally
npx i18n-rosetta sync

Dezelfde plugin. Inpluggen en testen.

De volledige toolkit

rosetta is niet zomaar sync. Het is een complete i18n pipeline:

CommandoWat het doet
syncVertaalt ontbrekende en verouderde keys (met post-sync verificatie)
watchAutomatische sync wanneer uw bronbestand wijzigt
lintScant broncode op hardcoded strings
wrapWrapt hardcoded strings automatisch in t() calls
auditToont een lijst van alle [EN] fallback markers van eerdere runs
verifyVerifieert of vertalingen aanwezig en correct zijn (CI gate)
integrityDetecteert corruptie van placeholders, coderingsproblemen en ICU plural completeness
seoGenereert hreflang tags, sitemaps en JSON-LD schema
statusToont de configuratie van paren, plugins en benchmarkscores
provenanceVoert een audit uit op de licenties van vertaalresources
pluginInstalleert, verwijdert en toont methode-plugins
fontsDownloadt web fonts voor PUA script converters
tmBeheert de Translation Memory cache (statistieken, wissen, per-locale)
xliffExporteert/importeert XLIFF 1.2 voor beoordeling door professionele vertalers

Vier hiervan — lint, sync, verify, audit — vormen een CI pipeline die hardcoded strings opvangt, deze vertaalt, de correctheid verifieert en de build laat falen als een locale onvolledig is.


De Arena

Het Method Leaderboard is het scorebord. Elke inzending wordt gefingerprint naar een Git commit, geversioneerd naar een specifieke dataset en gescoord door dezelfde harness. Iedereen kan een inzending doen.

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

AanpakVoorbeeld
Coached LLMInjecteer grammaticaregels en woordenboeken in de prompt van een frontier model
Fine-tuned modelTrain een open model op parallelle tekst — alleen niet op de eval data
FST-gated pipelineLLM genereert → finite-state transducer valideert morfologie → opnieuw proberen
Chained modelsModel A maakt een concept → Model B doet post-editing → Model C scoort
Dictionary + LLMForceer bekende termen uit een woordenboek, laat de LLM de rest afhandelen
EvolutionaryGenereer kandidaten, scoor ze, muteer de beste, herhaal
Partial translationVertaal een sample handmatig, bewijs dat uw LLM overeenkomt, vertaal de rest automatisch

Fine-tune modellen. Deploy evolutionaire algoritmen. Test antwoorden van studenten op taalexamens. Bouw lookup tables. Koppel drie modellen aan elkaar. Zolang uw methode JSON produceert, scoort de harness deze en voert het framework deze uit.

:::danger De enige regel Train niet op de evaluatiedata. Methoden die zijn blootgesteld aan de benchmark dataset worden gediskwalificeerd. Fine-tune op wat u maar wilt. Alleen niet op de testset. :::

Dit is een open uitnodiging. Als u werkt met een low-resource taal — als onderzoeker, lid van de gemeenschap, student of gewoon iemand die erom geeft — bouw een methode, voer de harness uit en claim de topscore. Het probleem is nog onopgelost. De infrastructuur is hier.

→ Bekijk het leaderboard


Volgende stappen

Aan de slag:

Uw setup aanpassen:

Verdieping: