Lumaktaw sa pangunahing nilalaman

champollion

Isang ganap na nako-customize na internationalization framework. Isang command ang nagsasalin ng inyong mga locale file. Isang config ang kumokontrol sa bawat method, model, at pares ng wika. At kung hindi sapat ang mga built-in method — bumuo ng sarili ninyo, patunayang gumagana ito, at i-deploy ito.

npx champollion sync

Awtomatikong dini-detect ng champollion ang inyong mga locale file, format, at target na wika. Isinasalin nito ang kulang, nilalaktawan ang tapos na, vina-validate ang bawat resulta, at nagsusulat ng malinis na output. Iyon pa lamang ang panimulang punto.


Bakit Hindi na Lamang Kayo Gumawa ng Sarili Ninyong Script?

Maaari kayong magsulat ng mabilis na loop na tumatawag sa Google Translate para sa bawat key. Ginagawa iyon ng karamihan sa mga developer — humigit-kumulang 30 linya lang ito. Narito kung saan ito nagkakaproblema:

  • Walang change detection. Mag-update kayo ng English string — mananatiling luma ang translation magpakailanman. Sinusubaybayan ng champollion ang bawat source value gamit ang SHA-256 hashes at muling isinasalin lamang ang nagbago.
  • Walang batching. Isang API call kada key ay nangangahulugang 200 key = 200 round trip. Matalinong nagba-batch ang champollion (nako-configure, default na 80 key/batch para sa LLM, 128 para sa Google).
  • Walang caching. Bawat sync ay muling nagsasalin ng lahat. Kino-cache ng Translation Memory ng champollion ang mga translation ayon sa source text + locale + method — kapag muling pinatakbo ang sync matapos ang pagbabago sa isang key, ang key lamang na iyon ang isasalin, hindi ang buong file.
  • Walang quality gate. Ang machine translation ay maaaring mag-hallucinate, ibalik lang ang source, o mag-output sa maling script. Vina-validate ng champollion ang bawat translation bago ito isulat — natutukoy at tinatanggihan ang maling script, labis na paghabang, at pag-uulit ng source.
  • Walang format awareness. Hardcoded sa JSON? Hinahawakan ng champollion ang JSON, TOML, YAML, at Hugo Markdown (frontmatter + body) gamit ang auto-detection.
  • Walang kontrol sa method. Pare-pareho ang method ng bawat pares. Pinapahintulutan kayo ng champollion na gumamit ng Google Translate para sa French, LLM para sa Japanese, at custom pipeline na hosted ng community para sa Cree — sa parehong config file.

Ang champollion ang production version ng script na iyon.


Ano ang Nagpapaiba Rito

Bawat method ay isang plugin

Ang translation method ay nako-configure kada pares ng wika. Paghaluin ang Google Translate, LLMs, coached prompts, at custom APIs sa iisang project:

champollion.config.json
{
"version": 3,
"pairs": {
"en:fr": { "method": "google-translate" },
"en:ja": { "method": "llm", "model": "google/gemini-2.5-pro" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}

Makakakuha ang French ng Google Translate (mabilis, mura). Makakakuha ang Japanese ng premium LLM (may nuance). Makakakuha ang Plains Cree ng coached plugin na may grammar rules, dictionaries, at morphological validation. Parehong sync command. Parehong quality gate. Parehong CLI.

Patunayan ito

Sa tingin ba ninyo kaya ng inyong method na magsalin mula English patungong Spanish? Turkish patungong Azerbaijani? English patungong Cree?

Patunayan ito. Ang kasamang eval harness ay nagbe-benchmark ng anumang translation method gamit ang reproducible at may-fingerprint na scoring. Sinusubaybayan ng leaderboard ang bawat submission.

Iisa ang plugin interface ng eval harness at ng production CLI. Ang method na mataas ang score sa harness ay maaaring gamitin sa production — kung nagbibigay ng pahintulot ang community na pinaglilingkuran ng wikang iyon. Para sa mga wikang Katutubo at mga wikang low-resource, mahalaga ang pahintulot na iyon. Tingnan ang Soberanya sa Data.

# Benchmark your method (in the eval harness repo)
cd arena
python eval/baseline_experiment.py --dataset data/edtekla-dev-v1.json --submit

# Use it locally
npx champollion sync

Parehong plugin. I-plug at subukan.

Ang kumpletong toolkit

Ang champollion ay hindi lamang sync. Isa itong kumpletong i18n pipeline:

CommandGinagawa Nito
syncIsalin ang kulang at lumang mga key (may post-sync verification)
watchMag-auto-sync kapag nagbago ang inyong source file
lintI-scan ang source code para sa mga hardcoded string
wrapAwtomatikong i-wrap ang mga hardcoded string sa mga t() call
auditIlista ang lahat ng [EN] fallback marker mula sa mga naunang run
verifyI-verify na naroroon at tama ang mga translation (CI gate)
integrityTukuyin ang placeholder corruption, mga encoding issue, at ICU plural completeness
seoBumuo ng hreflang tags, sitemaps, at JSON-LD schema
statusIpakita ang pair config, plugins, at benchmark scores
provenanceI-audit ang licensing ng translation resource
pluginMag-install, mag-remove, at maglista ng mga method plugin
fontsMag-download ng web fonts para sa PUA script converters
tmPamahalaan ang Translation Memory cache (stats, clear, per-locale)
xliffMag-export/mag-import ng XLIFF 1.2 para sa review ng professional translator

Apat sa mga ito — lint, sync, verify, audit — ang bumubuo ng CI pipeline na humuhuli ng mga hardcoded string, nagsasalin sa mga ito, nagve-verify ng kawastuhan, at nagpapabagsak ng build kung may anumang locale na hindi kumpleto.


Ang Arena

Ang Method Leaderboard ang scoreboard. Bawat submission ay may fingerprint sa isang Git commit, naka-version sa isang partikular na dataset, at binibigyan ng score ng parehong harness. Sinuman ay maaaring magsumite.

Ano ang kaya ninyong patunayan? JSON ang tinatanggap ng harness. JSON ang tinatanggap ng plugins. Maaaring subukan ang anumang method na gumagawa ng JSON:

ApproachHalimbawa
Coached LLMMag-inject ng grammar rules at dictionaries sa prompt ng frontier model
Fine-tuned modelMag-train ng open model sa parallel text — huwag lang sa eval data
FST-gated pipelineLLM generates → finite-state transducer validates morphology → retry
Chained modelsModel A drafts → Model B post-edits → Model C scores
Dictionary + LLMIpilit ang mga kilalang term mula sa dictionary, hayaan ang LLM na hawakan ang natitira
EvolutionaryBumuo ng mga candidate, bigyan sila ng score, i-mutate ang pinakamahusay, ulitin
Partial translationMagsalin ng sample nang manu-mano, patunayang tumutugma ang inyong LLM, awtomatikong isalin ang natitira

Mag-fine-tune ng mga model. Mag-deploy ng evolutionary algorithms. Subukan ang mga sagot ng estudyante sa language exams. Bumuo ng lookup tables. Pagdugtungin ang tatlong model. Hangga't gumagawa ng JSON ang inyong method, bibigyan ito ng score ng harness at patatakbuhin ito ng framework.

:::danger Ang iisang tuntunin Huwag mag-train sa evaluation data. Made-disqualify ang mga method na nalantad sa benchmark dataset. Mag-fine-tune sa anumang nais ninyo. Huwag lamang sa test set. :::

Isa itong bukas na paanyaya. Kung nagtatrabaho kayo sa isang wikang low-resource — bilang researcher, miyembro ng community, estudyante, o simpleng taong nagmamalasakit — bumuo ng method, patakbuhin ang harness, at kunin ang pinakamataas na score. Hindi pa nalulutas ang problemang ito. Narito na ang infrastructure.

→ Tingnan ang leaderboard


Mga Susunod na Hakbang

Pagsisimula:

Pag-customize ng inyong setup:

Mas malalim na pagtalakay: