Cookbook: Isalin ang 30 Wika
Palawakin ang isang proyekto mula sa iilang locale tungo sa pandaigdigang saklaw. Ipinapaliwanag ng cookbook na ito ang pagpili ng method, pag-optimize ng gastos, at CI integration para sa isang tunay na multi-language deployment.
Senaryo: Mayroon kayong SaaS app na may en, fr, es. Kailangan ninyong magdagdag ng 27 pang wika sa tatlong tier ng mga kinakailangan sa kalidad.
Hakbang 1: Ikategorya ang Inyong mga Wika
Hindi kailangan ng lahat ng 30 wika ang parehong approach. Pangkatin ang mga ito ayon sa available na kalidad ng method:
| Tier | Mga Wika | Method | Bakit |
|---|---|---|---|
| Tier 1 — Premium | ja, ko, zh, de, pt | llm (GPT-4o) | Mga market na may mataas na halaga, maselang grammar |
| Tier 2 — Standard | it, nl, pl, sv, da, fi, no, cs, ro, hu, el, tr, id, ms, th, vi, uk, bg | google-translate | Mataas ang volume, mahusay na sinusuportahan ng Google |
| Tier 3 — Coached | crk, oj, mi, haw | llm-coached + plugins | Low-resource, nangangailangan ng pagpapatupad ng terminolohiya |
Hakbang 2: I-configure Bawat Pair
{
"version": 3,
"inputLocale": "en",
"localesDir": "./locales",
"defaultMethod": "google-translate",
"model": "google/gemini-3.5-flash",
"languages": {
"ja": { "name": "Japanese", "register": "Polite/formal" },
"ko": { "name": "Korean", "register": "Formal" },
"zh": { "name": "Simplified Chinese", "register": "Neutral" },
"de": { "name": "German", "register": "Formal (Sie)" },
"pt": { "name": "Brazilian Portuguese", "register": "Informal" },
"crk": { "name": "Plains Cree (SRO)", "register": "Neutral" }
},
"pairs": {
"en:ja": { "method": "llm", "model": "openai/gpt-4o" },
"en:ko": { "method": "llm", "model": "openai/gpt-4o" },
"en:zh": { "method": "llm", "model": "openai/gpt-4o" },
"en:de": { "method": "llm", "model": "openai/gpt-4o" },
"en:pt": { "method": "llm", "model": "openai/gpt-4o" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}
Tandaan: Ang mga wikang hindi nakalista sa pairs ay nagmamana ng defaultMethod: "google-translate". Hindi ninyo kailangang ilista ang lahat ng 30.
Kasalukuyang dine-develop ang suporta para sa crk — tingnan ang Suportahan ang isang Low-Resource na Wika para sa status at mga gabay sa kontribusyon.
Hakbang 3: I-set Up ang mga API Key
Kakailanganin ninyo ang parehong API key para sa configuration na ito:
export OPENROUTER_API_KEY="sk-or-v1-..."
export GOOGLE_TRANSLATE_API_KEY="AIza..."
Hakbang 4: Mag-Dry Run Muna
Palaging mag-preview bago magsalin ng 30 wika:
npx champollion sync --dry
Suriin ang output. Ipapakita nito:
- Aling mga pair ang gumagamit ng aling method
- Ilang key ang bago/binago bawat locale
- Tinatayang bilang ng API calls bawat tier
Hakbang 5: Patakbuhin ang Sync
npx champollion sync
Pinoproseso ng Champollion ang bawat pair nang magkakahiwalay. Mabilis ang mga Tier 2 pair na gumagamit ng Google Translate. Mas mabagal ang Tier 1 LLM pairs ngunit mas mataas ang kalidad. Ginagamit ng Tier 3 coached pairs ang coaching data ng plugin.
Incremental Updates
Pagkatapos ng initial sync, isasalin lamang ng mga susunod na run ang mga binago o bagong key:
# Only keys that changed since last sync
npx champollion sync
Sinusubaybayan ng lock file (.champollion.lock) kung ano ang naisalin na, kaya hindi na ninyo kailanman muling isasalin ang stable na content.
Hakbang 6: I-audit ang Kalidad
Tingnan ang status ng lahat ng language pairs:
npx champollion status
Naglalabas ito ng table na nagpapakita ng method, model, quality tier ng bawat pair, at kung available ang coaching data o benchmark scores.
Sinunod ba ng output ang inyong mga register?
Sa Hakbang 2, nagdeklara kayo ng register bawat wika — "Polite/formal" para sa Japanese, "Formal (Sie)" para sa German. (Bago sa inyo ang terminong ito? Ipinapaliwanag ito ng glossary sa simpleng wika.) Napupunta ang mga instruction na iyon sa translation prompt, ngunit ang prompt ay kahilingan, hindi garantiya.
Ang MT Eval Arena harness — ang parehong tool na nagpapatakbo sa public leaderboard — ay maaaring sumukat ng pagsunod sa register at style sa isang sample ng inyong mga translation. Sinusuri ng writing-style metrics nito ang bawat output laban sa inaasahang register (formal/informal markers, T–V na panghalip, mga contraction, sentence-length drift) at nag-uulat ng style_consistency_rate sa buong run. Maaari rin ninyo itong ituro sa isang custom brand-voice profile gamit ang --style-profile.
# install the harness, then run your sample corpus through it
curl -fsSL champollion.dev/harness | bash
mt-eval run --corpus my-sample.json --style-profile brand-voice.json
Dalawang tapat na paalala: ang mga metric na ito ay informational (hindi kailanman pumapasok sa composite score ng leaderboard), at ang formality detection ay marker-based — isang drift detector, hindi paghatol ng tao. Mga detalye at depinisyon ng metric: Writing-style at register metrics.
Hakbang 7: CI Integration
Idagdag sa inyong GitHub Actions workflow upang manatiling updated ang mga translation sa bawat push:
name: Sync Translations
on:
push:
paths:
- 'locales/en/**'
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- name: Sync translations
run: npx champollion sync
env:
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
GOOGLE_TRANSLATE_API_KEY: ${{ secrets.GOOGLE_TRANSLATE_API_KEY }}
- name: Commit updated translations
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add locales/
git diff --staged --quiet || git commit -m "chore(i18n): sync translations"
git push
Pagtatantiya ng Gastos
Para sa isang proyektong may 500 source key sa 30 wika:
| Tier | Mga Wika | Method | Tinatayang Gastos |
|---|---|---|---|
| Tier 1 (5 wika) | ja, ko, zh, de, pt | GPT-4o | ~$2.50/full sync |
| Tier 2 (18 wika) | it, nl, pl, atbp. | Google Translate | ~$0.90/full sync |
| Tier 3 (4 wika) | crk, oj, mi, haw | GPT-4o-mini coached | ~$0.40/full sync |
| Kabuuan | 30 wika | Mixed | ~$3.80/full sync |
Ang incremental syncs (5–20 binagong key) ay nagkakahalaga lamang ng maliit na bahagi ng full sync.
Tingnan Din
- Translation Methods — Paano gumagana ang bawat translation method at kailan ito dapat gamitin
- Plugin Specification — Gumawa ng coaching data para sa alinman sa inyong mga Tier 3 na wika
- CI/CD Guide — Advanced CI patterns kabilang ang PR preview builds
- Quality Gate — Paano vine-validate ng Champollion ang bawat translation bago ito isulat
- Supported Languages — Kumpletong listahan ng mga language code at method compatibility
- Writing-style at register metrics — Sukatin ang pagsunod sa register/style gamit ang eval harness (informational metrics)
- Glossary: register — Ano ang ibig sabihin ng "register", sa simpleng wika
- Suportahan ang isang Low-Resource na Wika — Magdagdag ng coaching data para sa mga wikang walang malawak na saklaw ng MT