<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://i18n-rosetta.com/fil/blog</id>
    <title>i18n-rosetta Blog</title>
    <updated>2026-05-14T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://i18n-rosetta.com/fil/blog"/>
    <subtitle>i18n-rosetta Blog</subtitle>
    <icon>https://i18n-rosetta.com/fil/img/favicon.svg</icon>
    <entry>
        <title type="html"><![CDATA[v3.2.0: Industrial-Grade na Quality Infrastructure]]></title>
        <id>https://i18n-rosetta.com/fil/blog/v3-2-quality-infrastructure</id>
        <link href="https://i18n-rosetta.com/fil/blog/v3-2-quality-infrastructure"/>
        <updated>2026-05-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Ang v3.2.0 ay ang quality release. 702 tests, 163 test suites, at zero tolerance para sa silent failures.]]></summary>
        <content type="html"><![CDATA[<p>Ang v3.2.0 ay ang quality release. 702 tests, 163 test suites, at zero tolerance para sa silent failures.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="mga-nagbago">Mga Nagbago<a href="https://i18n-rosetta.com/fil/blog/v3-2-quality-infrastructure#mga-nagbago" class="hash-link" aria-label="Direktang link sa Mga Nagbago" title="Direktang link sa Mga Nagbago" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="quality-gate-5-checks">Quality Gate (5 checks)<a href="https://i18n-rosetta.com/fil/blog/v3-2-quality-infrastructure#quality-gate-5-checks" class="hash-link" aria-label="Direktang link sa Quality Gate (5 checks)" title="Direktang link sa Quality Gate (5 checks)" translate="no">​</a></h3>
<p>Dumadaan na ngayon ang bawat translation sa five deterministic validation checks bago ito i-write sa disk:</p>
<ol>
<li class=""><strong>Empty/blank</strong> — Walang ni-return ang model</li>
<li class=""><strong>Source echo</strong> — Ni-return ng model ang English input</li>
<li class=""><strong>Hallucination loop</strong> — Paulit-ulit na trigram patterns</li>
<li class=""><strong>Length inflation</strong> — Ang output ay 4×+ na mas mahaba kaysa sa source</li>
<li class=""><strong>Script compliance</strong> — Maling script para sa locale</li>
</ol>
<p>Walang translation na isusulat nang hindi pumapasa sa lahat ng five checks. Ang mga failed translations ay naka-log at ire-retry.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="retry-cascade">Retry Cascade<a href="https://i18n-rosetta.com/fil/blog/v3-2-quality-infrastructure#retry-cascade" class="hash-link" aria-label="Direktang link sa Retry Cascade" title="Direktang link sa Retry Cascade" translate="no">​</a></h3>
<p>Kapag nag-fail ang isang batch, magre-retry ang rosetta gamit ang progressively smaller 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/fil/blog/v3-2-quality-infrastructure#security-hardening" class="hash-link" aria-label="Direktang link sa Security Hardening" title="Direktang link sa Security Hardening" translate="no">​</a></h3>
<ul>
<li class=""><strong>Prototype pollution guard</strong> — Nire-reject ang <code>__proto__</code>, <code>constructor</code> keys sa parse time</li>
<li class=""><strong>Path traversal guard</strong> — Hindi pwedeng mag-write ang mga crafted locale codes sa labas ng configured directories</li>
<li class=""><strong>Response validation</strong> — Tanging ang mga keys na ipinadala lang ang tatanggapin pabalik</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="test-infrastructure">Test Infrastructure<a href="https://i18n-rosetta.com/fil/blog/v3-2-quality-infrastructure#test-infrastructure" class="hash-link" aria-label="Direktang link sa Test Infrastructure" title="Direktang link sa Test Infrastructure" translate="no">​</a></h3>



































<table><thead><tr><th>Suite</th><th>Tests</th><th>Ano ang Sinasaklaw</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 attacks</td></tr><tr><td>Contract</td><td>120</td><td>API integration contracts</td></tr><tr><td>Performance</td><td>36</td><td>Batch optimization, throughput regression</td></tr><tr><td>Coverage</td><td>702 total</td><td>Full pipeline</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="prompt-caching">Prompt Caching<a href="https://i18n-rosetta.com/fil/blog/v3-2-quality-infrastructure#prompt-caching" class="hash-link" aria-label="Direktang link sa Prompt Caching" title="Direktang link sa Prompt Caching" translate="no">​</a></h3>
<p>Naka-split na ngayon ang system messages mula sa user messages, kaya nag-e-enable ito ng prompt cache hits sa mga providers tulad ng Anthropic at Google. Malaki ang nababawas nito sa token costs para sa mga multi-batch syncs.</p>
<p>Tingnan ang <a class="" href="https://i18n-rosetta.com/fil/docs/concepts/quality-gate">Quality Gate docs</a> at <a class="" href="https://i18n-rosetta.com/fil/docs/concepts/security">Security docs</a> para sa full technical details.</p>]]></content>
        <author>
            <name>Curtis Forbes</name>
            <uri>https://github.com/gamedaysuits</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[v3.1.0: Translation ng Hugo Markdown Content]]></title>
        <id>https://i18n-rosetta.com/fil/blog/v3-1-content-translation</id>
        <link href="https://i18n-rosetta.com/fil/blog/v3-1-content-translation"/>
        <updated>2026-04-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Ang v3.1.0 po ay nagdadagdag ng full Hugo Markdown content translation — front matter fields at body content, na may automatic protection para sa mga code blocks, shortcodes, at interpolation variables.]]></summary>
        <content type="html"><![CDATA[<p>Ang v3.1.0 po ay nagdadagdag ng full Hugo Markdown content translation — front matter fields at body content, na may automatic protection para sa mga code blocks, shortcodes, at interpolation variables.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="content-aware-translation">Content-Aware Translation<a href="https://i18n-rosetta.com/fil/blog/v3-1-content-translation#content-aware-translation" class="hash-link" aria-label="Direktang link sa Content-Aware Translation" title="Direktang link sa Content-Aware Translation" translate="no">​</a></h2>
<p>Kapag nagta-translate po ng Markdown, hindi pwedeng i-send lang ang raw file sa isang LLM. Nata-translate ang mga code blocks. Nako-corrupt ang mga shortcodes. Nasisira ang mga Hugo template variables.</p>
<p>Sinu-solve po ito ng Rosetta v3.1.0 gamit ang <strong>Unicode sentinel shielding</strong>:</p>
<ol>
<li class="">Bago mag-translate, ang mga structured blocks (code fences, shortcodes, inline code, HTML) ay pinapalitan ng mga unique sentinel tokens</li>
<li class="">Nare-receive lang ng LLM ang translatable text</li>
<li class="">Pagkatapos mag-translate, nire-restore ang mga sentinels gamit ang original content</li>
</ol>
<p>Hindi po nakikita ng LLM ang inyong mga code blocks. Hindi nito mako-corrupt ang mga ito.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="front-matter-support">Front Matter Support<a href="https://i18n-rosetta.com/fil/blog/v3-1-content-translation#front-matter-support" class="hash-link" aria-label="Direktang link sa Front Matter Support" title="Direktang link sa Front Matter Support" translate="no">​</a></h2>
<p>Parehong supported po ang YAML (<code>---</code>) at TOML (<code>+++</code>) front matter delimiters. By default, nata-translate ang <code>title</code>, <code>description</code>, <code>summary</code>, <code>subtitle</code>, <code>caption</code>, at <code>linkTitle</code>. Naka-preserve naman ang lahat ng iba pang fields (date, draft, tags, weight).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="setup">Setup<a href="https://i18n-rosetta.com/fil/blog/v3-1-content-translation#setup" class="hash-link" aria-label="Direktang link sa Setup" title="Direktang link sa 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>Tingnan po ang <a class="" href="https://i18n-rosetta.com/fil/docs/guides/content-translation">Content Translation guide</a> para sa karagdagang details.</p>]]></content>
        <author>
            <name>Curtis Forbes</name>
            <uri>https://github.com/gamedaysuits</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[i18n-rosetta v3.0.0: Per-Pair Translation Architecture]]></title>
        <id>https://i18n-rosetta.com/fil/blog/v3-release</id>
        <link href="https://i18n-rosetta.com/fil/blog/v3-release"/>
        <updated>2026-04-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Ipinapakilala ng i18n-rosetta v3.0.0 ang per-pair translation architecture — ang defining feature ng buong system.]]></summary>
        <content type="html"><![CDATA[<p>Ipinapakilala ng i18n-rosetta v3.0.0 ang per-pair translation architecture — ang defining feature ng buong system.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ano-ang-nagbago">Ano ang Nagbago<a href="https://i18n-rosetta.com/fil/blog/v3-release#ano-ang-nagbago" class="hash-link" aria-label="Direktang link sa Ano ang Nagbago" title="Direktang link sa Ano ang Nagbago" translate="no">​</a></h2>
<p>Gumamit ang mga nakaraang version ng single translation method para sa lahat ng language pairs. Tinatanggal ng v3.0.0 ang coupling na ito: bawat source→target pair ay pwede nang gumamit ng magkakaibang method, model, at quality configuration.</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="bakit-per-pair">Bakit Per-Pair?<a href="https://i18n-rosetta.com/fil/blog/v3-release#bakit-per-pair" class="hash-link" aria-label="Direktang link sa Bakit Per-Pair?" title="Direktang link sa Bakit Per-Pair?" translate="no">​</a></h2>
<p>Ginawa ang architecture na ito dahil may isang project na nangailangan ng Google Translate para sa French at isang coached FST pipeline para sa isang Indigenous language, na nagra-run side by side sa iisang sync command.</p>
<p>Sinu-support ng Google Translate ang ~130 languages. Mayroong higit sa 7,000. Ibig sabihin ng per-pair system ay pwedeng mag-scale ang rosetta sa kahit anong language — kailangan mo lang ng method na gumagana para sa pair na iyon.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="iba-pang-highlights">Iba pang Highlights<a href="https://i18n-rosetta.com/fil/blog/v3-release#iba-pang-highlights" class="hash-link" aria-label="Direktang link sa Iba pang Highlights" title="Direktang link sa Iba pang Highlights" translate="no">​</a></h2>
<ul>
<li class=""><strong>Plugin system</strong> — Mag-install ng pre-packaged translation methods mula sa eval harness</li>
<li class=""><strong>Config version 3</strong> — Bagong schema na may pair-level overrides</li>
<li class=""><strong>Quality tiers</strong> — Standard, High, Research, Verified — naka-display per pair sa <code>status</code></li>
</ul>
<p>Tingnan po ang <a class="" href="https://i18n-rosetta.com/fil/docs/concepts/architecture">Architecture docs</a> para sa buong ecosystem design.</p>]]></content>
        <author>
            <name>Curtis Forbes</name>
            <uri>https://github.com/gamedaysuits</uri>
        </author>
        <category label="release" term="release"/>
    </entry>
</feed>