<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>i18n-rosetta Blog</title>
        <link>https://i18n-rosetta.com/nl/blog</link>
        <description>i18n-rosetta Blog</description>
        <lastBuildDate>Thu, 14 May 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>nl</language>
        <item>
            <title><![CDATA[v3.2.0: Kwaliteitsinfrastructuur van industrieel niveau]]></title>
            <link>https://i18n-rosetta.com/nl/blog/v3-2-quality-infrastructure</link>
            <guid>https://i18n-rosetta.com/nl/blog/v3-2-quality-infrastructure</guid>
            <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[v3.2.0 is de kwaliteitsrelease. 702 tests, 163 test suites, nultolerantie voor silent failures.]]></description>
            <content:encoded><![CDATA[<p>v3.2.0 is de kwaliteitsrelease. 702 tests, 163 test suites, nultolerantie voor silent failures.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="wat-er-is-gewijzigd">Wat er is gewijzigd<a href="https://i18n-rosetta.com/nl/blog/v3-2-quality-infrastructure#wat-er-is-gewijzigd" class="hash-link" aria-label="Directe link naar Wat er is gewijzigd" title="Directe link naar Wat er is gewijzigd" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="quality-gate-5-controles">Quality Gate (5 controles)<a href="https://i18n-rosetta.com/nl/blog/v3-2-quality-infrastructure#quality-gate-5-controles" class="hash-link" aria-label="Directe link naar Quality Gate (5 controles)" title="Directe link naar Quality Gate (5 controles)" translate="no">​</a></h3>
<p>Elke vertaling doorloopt nu vijf deterministische validatiecontroles voordat deze naar de schijf wordt geschreven:</p>
<ol>
<li class=""><strong>Empty/blank</strong> — Model heeft niets geretourneerd</li>
<li class=""><strong>Source echo</strong> — Model heeft de Engelse invoer geretourneerd</li>
<li class=""><strong>Hallucination loop</strong> — Herhaalde trigrampatronen</li>
<li class=""><strong>Length inflation</strong> — Uitvoer is 4×+ langer dan de bron</li>
<li class=""><strong>Script compliance</strong> — Verkeerd script voor de locale</li>
</ol>
<p>Geen enkele vertaling wordt weggeschreven zonder voor alle vijf de controles te slagen. Mislukte vertalingen worden gelogd en opnieuw geprobeerd.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="retry-cascade">Retry Cascade<a href="https://i18n-rosetta.com/nl/blog/v3-2-quality-infrastructure#retry-cascade" class="hash-link" aria-label="Directe link naar Retry Cascade" title="Directe link naar Retry Cascade" translate="no">​</a></h3>
<p>Wanneer een batch mislukt, probeert rosetta het opnieuw met steeds kleinere batches:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">Full batch (30 keys) → parse error</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  └→ Half batch (15 keys) → 2 failures</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      └→ Individual keys (1 each) → isolates the problem keys</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="security-hardening">Security Hardening<a href="https://i18n-rosetta.com/nl/blog/v3-2-quality-infrastructure#security-hardening" class="hash-link" aria-label="Directe link naar Security Hardening" title="Directe link naar Security Hardening" translate="no">​</a></h3>
<ul>
<li class=""><strong>Prototype pollution guard</strong> — <code>__proto__</code>, <code>constructor</code> keys worden geweigerd tijdens het parsen</li>
<li class=""><strong>Path traversal guard</strong> — Gemanipuleerde locale-codes kunnen niet buiten de geconfigureerde directory's schrijven</li>
<li class=""><strong>Response validation</strong> — Alleen keys die zijn verzonden, worden teruggeaccepteerd</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="testinfrastructuur">Testinfrastructuur<a href="https://i18n-rosetta.com/nl/blog/v3-2-quality-infrastructure#testinfrastructuur" class="hash-link" aria-label="Directe link naar Testinfrastructuur" title="Directe link naar Testinfrastructuur" translate="no">​</a></h3>



































<table><thead><tr><th>Suite</th><th>Tests</th><th>Wat het omvat</th></tr></thead><tbody><tr><td>Core (8 suites)</td><td>280+</td><td>Config, sync, CLI, watch, audit, pairs, format, init</td></tr><tr><td>Red team</td><td>89</td><td>Adversarial inputs, encoding-aanvallen</td></tr><tr><td>Contract</td><td>120</td><td>API-integratiecontracten</td></tr><tr><td>Performance</td><td>36</td><td>Batch-optimalisatie, throughput-regressie</td></tr><tr><td>Coverage</td><td>702 totaal</td><td>Volledige pipeline</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="prompt-caching">Prompt Caching<a href="https://i18n-rosetta.com/nl/blog/v3-2-quality-infrastructure#prompt-caching" class="hash-link" aria-label="Directe link naar Prompt Caching" title="Directe link naar Prompt Caching" translate="no">​</a></h3>
<p>Systeemberichten worden nu gescheiden van gebruikersberichten, wat prompt cache hits mogelijk maakt bij providers zoals Anthropic en Google. Dit verlaagt de tokenkosten voor multi-batch syncs aanzienlijk.</p>
<p>Raadpleeg de <a class="" href="https://i18n-rosetta.com/nl/docs/concepts/quality-gate">Quality Gate-documentatie</a> en <a class="" href="https://i18n-rosetta.com/nl/docs/concepts/security">Security-documentatie</a> voor de volledige technische details.</p>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[v3.1.0: Hugo Markdown-contentvertaling]]></title>
            <link>https://i18n-rosetta.com/nl/blog/v3-1-content-translation</link>
            <guid>https://i18n-rosetta.com/nl/blog/v3-1-content-translation</guid>
            <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[v3.1.0 voegt volledige vertaling van Hugo Markdown-content toe — front matter-velden en body-content, met automatische bescherming voor code blocks, shortcodes en interpolatievariabelen.]]></description>
            <content:encoded><![CDATA[<p>v3.1.0 voegt volledige vertaling van Hugo Markdown-content toe — front matter-velden en body-content, met automatische bescherming voor code blocks, shortcodes en interpolatievariabelen.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="content-bewuste-vertaling">Content-bewuste vertaling<a href="https://i18n-rosetta.com/nl/blog/v3-1-content-translation#content-bewuste-vertaling" class="hash-link" aria-label="Directe link naar Content-bewuste vertaling" title="Directe link naar Content-bewuste vertaling" translate="no">​</a></h2>
<p>Bij het vertalen van Markdown kunt u niet zomaar het ruwe bestand naar een LLM sturen. Code blocks worden vertaald. Shortcodes raken beschadigd. Hugo template-variabelen worden verminkt.</p>
<p>Rosetta v3.1.0 lost dit op met <strong>Unicode sentinel shielding</strong>:</p>
<ol>
<li class="">Voorafgaand aan de vertaling worden gestructureerde blokken (code fences, shortcodes, inline code, HTML) vervangen door unieke sentinel tokens</li>
<li class="">De LLM ontvangt alleen vertaalbare tekst</li>
<li class="">Na de vertaling worden de sentinels hersteld met de originele content</li>
</ol>
<p>De LLM ziet uw code blocks nooit. Het kan ze niet beschadigen.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="front-matter-ondersteuning">Front Matter-ondersteuning<a href="https://i18n-rosetta.com/nl/blog/v3-1-content-translation#front-matter-ondersteuning" class="hash-link" aria-label="Directe link naar Front Matter-ondersteuning" title="Directe link naar Front Matter-ondersteuning" translate="no">​</a></h2>
<p>Zowel YAML (<code>---</code>) als TOML (<code>+++</code>) front matter-scheidingstekens worden ondersteund. Standaard worden <code>title</code>, <code>description</code>, <code>summary</code>, <code>subtitle</code>, <code>caption</code> en <code>linkTitle</code> vertaald. Alle andere velden (date, draft, tags, weight) blijven behouden.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="setup">Setup<a href="https://i18n-rosetta.com/nl/blog/v3-1-content-translation#setup" class="hash-link" aria-label="Directe link naar Setup" title="Directe link naar Setup" translate="no">​</a></h2>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_OeMC">i18n-rosetta.config.json</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"contentDir"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"./content"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></div></code></pre></div></div>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">npx i18n-rosetta </span><span class="token function" style="color:rgb(80, 250, 123)">sync</span><span class="token plain">   </span><span class="token comment" style="color:rgb(98, 114, 164)"># now translates content too</span><br></div></code></pre></div></div>
<p>Raadpleeg de <a class="" href="https://i18n-rosetta.com/nl/docs/guides/content-translation">Content Translation-gids</a> voor meer informatie.</p>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[i18n-rosetta v3.0.0: Vertaalarchitectuur per talenpaar]]></title>
            <link>https://i18n-rosetta.com/nl/blog/v3-release</link>
            <guid>https://i18n-rosetta.com/nl/blog/v3-release</guid>
            <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[i18n-rosetta v3.0.0 introduceert de per-pair vertaalarchitectuur — het bepalende kenmerk van het gehele systeem.]]></description>
            <content:encoded><![CDATA[<p>i18n-rosetta v3.0.0 introduceert de per-pair vertaalarchitectuur — het bepalende kenmerk van het gehele systeem.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="wat-er-is-gewijzigd">Wat er is gewijzigd<a href="https://i18n-rosetta.com/nl/blog/v3-release#wat-er-is-gewijzigd" class="hash-link" aria-label="Directe link naar Wat er is gewijzigd" title="Directe link naar Wat er is gewijzigd" translate="no">​</a></h2>
<p>Eerdere versies gebruikten één enkele vertaalmethode voor alle talenparen. v3.0.0 laat deze koppeling los: elk bron→doel-paar kan een andere methode, een ander model en een andere kwaliteitsconfiguratie gebruiken.</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"version"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">3</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"pairs"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"en:fr"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> </span><span class="token property">"method"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"google-translate"</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"en:ja"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> </span><span class="token property">"method"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"llm"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token property">"model"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"google/gemini-2.5-pro"</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"en:crk"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> </span><span class="token property">"methodPlugin"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"crk-coached-v1"</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="waarom-per-pair">Waarom Per-Pair?<a href="https://i18n-rosetta.com/nl/blog/v3-release#waarom-per-pair" class="hash-link" aria-label="Directe link naar Waarom Per-Pair?" title="Directe link naar Waarom Per-Pair?" translate="no">​</a></h2>
<p>Deze architectuur bestaat omdat één project Google Translate nodig had voor het Frans en een coached FST pipeline voor een inheemse taal, die naast elkaar draaien in hetzelfde sync command.</p>
<p>Google Translate ondersteunt ~130 talen. Er zijn er meer dan 7.000. Het per-pair-systeem betekent dat rosetta kan opschalen naar elke taal — u heeft slechts een methode nodig die voor dat specifieke paar werkt.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="andere-hoogtepunten">Andere hoogtepunten<a href="https://i18n-rosetta.com/nl/blog/v3-release#andere-hoogtepunten" class="hash-link" aria-label="Directe link naar Andere hoogtepunten" title="Directe link naar Andere hoogtepunten" translate="no">​</a></h2>
<ul>
<li class=""><strong>Plugin-systeem</strong> — Installeer kant-en-klare vertaalmethoden vanuit de eval harness</li>
<li class=""><strong>Config versie 3</strong> — Nieuw schema met pair-level overrides</li>
<li class=""><strong>Kwaliteitsniveaus</strong> — Standard, High, Research, Verified — weergegeven per paar in <code>status</code></li>
</ul>
<p>Raadpleeg de <a class="" href="https://i18n-rosetta.com/nl/docs/concepts/architecture">Architectuurdocumentatie</a> voor het volledige ontwerp van het ecosysteem.</p>]]></content:encoded>
            <category>release</category>
        </item>
    </channel>
</rss>