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
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
name | string | ✅ | Unieke methode-identificatie (kebab-case) |
type | string | ✅ | Rosetta-methodetype: llm, llm-coached, api, google-translate, deepl, microsoft-translator, libretranslate, openai, anthropic, gemini |
version | string | ✅ | Semver-versie (bijv. 1.0.0) |
locales | string[] | ✅ | Op welke landcodes (locale codes) deze methode is gericht (minimaal 1) |
description | string | — | Menselijk leesbare beschrijving |
author | string | — | Wie deze methode heeft ontwikkeld/getest |
config.model | string | — | OpenRouter-modelidentificatie |
config.register | string | — | Register/toon van de doeltaal |
config.batchSize | number | — | Sleutels per API-batch (1–200, standaard: 30) |
config.temperature | number | — | LLM-temperatuur (0.0–2.0, standaard: 0.3) |
benchmarks | object | — | Benchmarkresultaten per landcode (locale) |
provenance | object | — | Licenties en bronafhankelijkheden |
coaching.dir | string | — | Relatief pad naar de map met coachinggegevens |
Benchmark-object (per locale)
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
date | string | ✅ | ISO 8601-tijdstempel van de benchmarkuitvoering |
corpus_size | number | ✅ | Aantal geëvalueerde invoeren |
exact_match_rate | number | ✅ | 0.0–1.0, verhouding van exacte overeenkomsten |
corpus_chrf | number | — | chrF++-score (0–100) |
corpus_bleu | number | — | BLEU-score (0–100) |
model | string | ✅ | Model dat is gebruikt tijdens de evaluatie |
harness_version | string | ✅ | Versie 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.
| Veld | Type | Standaard | Beschrijving |
|---|---|---|---|
resources | object[] | [] | Lijst van gebundelde bronnen met name, license en type |
commercialReady | boolean | false | Of de plugin is vrijgegeven voor commerciële distributie |
flags | string[] | ["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."
}
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
grammar_rules | string[] | — | Regels die worden geïnjecteerd in elke LLM-prompt voor deze locale |
dictionary | object | — | Term → vertaling-map. Overeenkomende termen worden geïnjecteerd als vereiste terminologie. |
style_notes | string | — | Vrije-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
{
"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
- Rosetta leest
method.jsonuit.rosetta/methods/french-formal-v1/ - Het veld
typevan de plugin stelt de vertaalmethode in (bijv.llm-coached) - Laadt coachinggegevens uit de map
coaching/van de plugin - Gebruikt het blok
configom hiaten in model/register/temperatuur op te vullen - Het blok
benchmarkswordt weergegeven in de uitvoer vanrosetta status - Het blok
provenancewordt doorrosetta provenancegecontroleerd 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
- Vertaalmethoden — hoe elke ingebouwde methode werkt
- Configuratie — configuratie per paar en per taal
- Een methode aanbieden via API — methoden hosten als HTTP-services
- Kookboek: FST-Gated Pipeline — een pijplijn bouwen en verpakken
- MT-evaluatie — methoden benchmarken voor indiening op het leaderboard
- Een taal met weinig bronnen ondersteunen — de use case voor community-plugins