Ga naar hoofdinhoud

Specificatie van de Method Plugin

Versie: 1.1
Doelgroep: Plugin-ontwikkelaars
Canoniek schema: schemas/rosetta-plugin.schema.json

Overzicht

i18n-rosetta maakt gebruik van een inplugbaar methodesysteem. Elk talenpaar kan een andere vertaalmethode gebruiken (LLM, gecoacht, script-converter, enz.). Methoden worden geregistreerd in lib/translate.js en per paar opgelost via lib/pairs.js.

De taak van de eval harness is om vertaalmethoden te ontwikkelen, testen en exporteren. De taak van i18n-rosetta is om deze te consumeren en uit te voeren. De harness draait nooit binnen rosetta.

Gegevensstroom


Formaat van de Method Plugin

Een method plugin is een enkel JSON-bestand (method.json) met optionele bestanden voor coachinggegevens.

method.json — Vereist

{
"name": "french-formal-v1",
"type": "llm-coached",
"version": "1.0.0",
"description": "Formally-tuned French with terminology enforcement and grammar coaching",
"author": "Plugin Author",

"config": {
"model": "google/gemini-3.5-flash",
"register": "formal",
"batchSize": 30,
"temperature": 0.2
},

"locales": ["fr"],

"benchmarks": {
"fr": {
"date": "2026-05-11T00:00:00Z",
"corpus_size": 500,
"exact_match_rate": 0.42,
"corpus_chrf": 72.3,
"corpus_bleu": 45.1,
"model": "google/gemini-3.5-flash",
"harness_version": "1.0.0"
}
},

"provenance": {
"resources": [],
"commercialReady": false,
"flags": ["license-unclear"]
},

"coaching": {
"dir": "coaching"
}
}

Veldreferentie

VeldTypeVereistBeschrijving
namestringUnieke methode-identificatie (kebab-case)
typestringRosetta-methodetype: llm, llm-coached, api, google-translate, deepl, microsoft-translator, libretranslate, openai, anthropic, gemini
versionstringSemver-versie (bijv. 1.0.0)
localesstring[]Op welke landcodes (locale codes) deze methode is gericht (minimaal 1)
descriptionstringMenselijk leesbare beschrijving
authorstringWie deze methode heeft ontwikkeld/getest
config.modelstringOpenRouter-modelidentificatie
config.registerstringRegister/toon van de doeltaal
config.batchSizenumberSleutels per API-batch (1–200, standaard: 30)
config.temperaturenumberLLM-temperatuur (0.0–2.0, standaard: 0.3)
benchmarksobjectBenchmarkresultaten per landcode (locale)
provenanceobjectLicenties en bronafhankelijkheden
coaching.dirstringRelatief pad naar de map met coachinggegevens

Benchmark-object (per locale)

VeldTypeVereistBeschrijving
datestringISO 8601-tijdstempel van de benchmarkuitvoering
corpus_sizenumberAantal geëvalueerde invoeren
exact_match_ratenumber0.0–1.0, verhouding van exacte overeenkomsten
corpus_chrfnumberchrF++-score (0–100)
corpus_bleunumberBLEU-score (0–100)
modelstringModel dat is gebruikt tijdens de evaluatie
harness_versionstringVersie van de gebruikte evaluation harness

:::info Welke metrieken worden weergegeven? De opdracht rosetta status geeft de chrF++ en de exacte overeenkomstverhouding uit het benchmarkblok weer. corpus_bleu wordt geaccepteerd in het manifest, maar wordt momenteel niet weergegeven of gebruikt door enige rosetta-opdracht. Het Method Leaderboard houdt de chrF++, exacte overeenkomst en FST-acceptatiegraad bij. :::


Provenance-object

Het provenance-blok communiceert de licentiestatus van de gebundelde bronnen van de plugin.

VeldTypeStandaardBeschrijving
resourcesobject[][]Lijst van gebundelde bronnen met name, license en type
commercialReadybooleanfalseOf de plugin is vrijgegeven voor commerciële distributie
flagsstring[]["license-unclear"]Machinaal leesbare statusvlaggen

Standaardstatus — geëxporteerde plugins worden geleverd met commercialReady: false en flags: ["license-unclear"].

Vrijgegeven status — wanneer de licentieverlening is geverifieerd: stel commercialReady: true in en wis de vlaggen.


Formaat van Coachinggegevens

Als type llm-coached is, dient de plugin bestanden voor coachinggegevens op te nemen in de submap coaching/.

coaching/<locale>.json

{
"grammar_rules": [
"French adjectives agree in gender and number with the noun they modify",
"Use 'vous' for formal contexts, 'tu' for informal"
],
"dictionary": {
"dashboard": "tableau de bord",
"deployment": "déploiement",
"settings": "paramètres"
},
"style_notes": "Prefer active voice. Avoid anglicisms where a native French term exists."
}
VeldTypeVereistBeschrijving
grammar_rulesstring[]Regels die worden geïnjecteerd in elke LLM-prompt voor deze locale
dictionaryobjectTerm → vertaling-map. Overeenkomende termen worden geïnjecteerd als vereiste terminologie.
style_notesstringVrije-vorm stijlinstructies die aan de prompt worden toegevoegd

Mapstructuur

french-formal-v1/
method.json # Method manifest with benchmarks
coaching/
fr.json # Coaching data for French

Voor methoden met meerdere locales:

european-formal-v2/
method.json # locales: ["fr", "de", "es", "it"]
coaching/
fr.json
de.json
es.json
it.json

Hoe Rosetta Plugins Consumeert

Installatie

i18n-rosetta plugin install ./french-formal-v1/

Slaat op in .rosetta/methods/french-formal-v1/.

Configuratie

i18n-rosetta.config.json
{
"pairs": {
"en:fr": {
"methodPlugin": "french-formal-v1"
}
}
}

:::info Samenvoegsemantiek De plugin definieert welke methode moet worden gebruikt (type). De paarconfiguratie stemt af hoe deze moet worden uitgevoerd (model, register, batchSize). Als het paar model instelt, overschrijft dit de standaardwaarde van de plugin. :::

Runtime

  1. Rosetta leest method.json uit .rosetta/methods/french-formal-v1/
  2. Het veld type van de plugin stelt de vertaalmethode in (bijv. llm-coached)
  3. Laadt coachinggegevens uit de map coaching/ van de plugin
  4. Gebruikt het blok config om hiaten in model/register/temperatuur op te vullen
  5. Het blok benchmarks wordt weergegeven in de uitvoer van rosetta status
  6. Het blok provenance wordt door rosetta provenance gecontroleerd op licentievlaggen

Schemavalidatie

Plugin-manifesten worden tijdens de installatie gevalideerd tegen schemas/rosetta-plugin.schema.json.

Verwijs naar het schema in uw method.json voor IDE-autocompletion:

{
"$schema": "./node_modules/i18n-rosetta/schemas/rosetta-plugin.schema.json",
"name": "my-method-v1"
}

Wat u NIET moet opnemen

  • ❌ Geen Python-code of harness-afhankelijkheden
  • ❌ Geen ruwe corpusgegevens of uitvoeringslogboeken
  • ❌ Geen API-sleutels of inloggegevens
  • ❌ Geen harness-configuratie
  • ❌ Geen interne prompt-sjablonen (deze bevinden zich in de methode-implementaties van rosetta)

De plugin is alleen data: configuratie, coaching-inhoud en benchmarkresultaten.


Zie ook