ข้ามไปยังเนื้อหาหลัก

วิธีการแปลภาษา

Rosetta รองรับวิธีการแปลภาษา 10 วิธี แต่ละคู่ภาษาสามารถใช้วิธีที่แตกต่างกันได้ — คุณไม่จำเป็นต้องยึดติดกับวิธีเดียวสำหรับทั้งโปรเจกต์ของคุณ

การเปรียบเทียบวิธีการ

ผู้ให้บริการ LLM

เน้นคุณภาพ, รองรับ Markdown, เข้ากันได้กับ coaching เหมาะที่สุดสำหรับโปรเจกต์ที่มีเนื้อหาเยอะ

วิธีการคีย์หน้าที่การทำงาน
llm (ค่าเริ่มต้น)OPENROUTER_API_KEYLLM ผ่าน OpenRouter — มีโมเดลมากกว่า 200 แบบ, กำหนดเส้นทางอัตโนมัติ
llm-coachedOPENROUTER_API_KEYLLM + กฎไวยากรณ์, พจนานุกรม, บันทึกรูปแบบ (style notes)
openaiOPENAI_API_KEYOpenAI API โดยตรง (gpt-4o, gpt-4o-mini)
anthropicANTHROPIC_API_KEYAnthropic API โดยตรง (Claude Sonnet, Haiku, Opus)
geminiGEMINI_API_KEYGoogle Gemini API โดยตรง (Flash, Pro) — มีระดับใช้งานฟรี

Traditional MT

เน้นความเร็วและต้นทุน เหมาะที่สุดสำหรับคู่คีย์-ค่า (key-value pairs) จำนวนมาก

วิธีการคีย์หน้าที่การทำงาน
google-translateGOOGLE_TRANSLATE_API_KEYGoogle Cloud Translation API v2 (130+ ภาษา)
deeplDEEPL_API_KEYDeepL API พร้อมรองรับ glossary (30+ ภาษา)
microsoft-translatorMICROSOFT_TRANSLATOR_API_KEYAzure Cognitive Services Translator (100+ ภาษา)
libretranslate(โฮสต์เอง)LibreTranslate แบบโฮสต์เอง (AGPL, ฟรี)

โครงสร้างพื้นฐาน (Infrastructure)

วิธีการคีย์หน้าที่การทำงาน
api(ตามผู้ให้บริการ)Thin HTTP client สำหรับ REST translation endpoint ใดๆ

แผนผังการตัดสินใจ (Decision Tree)


llm — การแปลด้วย LLM (ค่าเริ่มต้น)

แปลภาษาผ่าน LLM ใดๆ บน OpenRouter นี่คือวิธีการเริ่มต้นและมีความอเนกประสงค์มากที่สุด

วิธีการทำงาน:

  1. จัดกลุ่มคีย์ (ค่าเริ่มต้น 80 คีย์/ชุด) พร้อมคำสั่งเกี่ยวกับระดับภาษา (register) และบริบท
  2. ส่งไปยัง OpenRouter ในรูปแบบ prompt ที่มีโครงสร้าง
  3. แปลงผลลัพธ์ (Parse) การตอบกลับแบบ JSON
  4. ตรวจสอบความถูกต้องของการแปลแต่ละรายการผ่าน quality gate
  5. บันทึกคำแปลที่ผ่านเกณฑ์, ลองใหม่ หรือปฏิเสธคำแปลที่ไม่ผ่านเกณฑ์

เมื่อใดควรใช้: โปรเจกต์ส่วนใหญ่ โดยเฉพาะเว็บไซต์ที่มีเนื้อหาเยอะและใช้ Markdown ซึ่งจำเป็นต้องปกป้อง code blocks และ shortcodes

การตั้งค่า:

{
"defaultMethod": "llm",
"model": "google/gemini-3.5-flash"
}

llm-coached — การแปลด้วย Coached LLM

เหมือนกับ llm แต่มีการแทรกกฎไวยากรณ์, พจนานุกรมคำศัพท์, และบันทึกรูปแบบ (style notes) ลงในทุก prompt

วิธีการทำงาน:

  1. โหลดข้อมูล coaching จาก .rosetta/coaching/<locale>.json หรือไดเรกทอรี coaching/ ของปลั๊กอิน
  2. แทรกกฎไวยากรณ์, คำศัพท์ในพจนานุกรม, และบันทึกรูปแบบลงใน system prompt
  3. คำศัพท์ในพจนานุกรมที่ตรงกับคีย์ต้นทางจะถูกรวมไว้เป็นคำศัพท์ที่บังคับใช้
  4. ดำเนินการแปลเช่นเดียวกับ llm โดยใช้ข้อมูล coaching เพื่อเพิ่มความแม่นยำ

เมื่อใดควรใช้: ภาษาที่มีทรัพยากรน้อย (low-resource languages), คำศัพท์เฉพาะทาง (กฎหมาย, การแพทย์), ระดับภาษาที่เป็นทางการ, หรือกรณีใดๆ ที่ผลลัพธ์จาก LLM ทั่วไปไม่มีความแม่นยำเพียงพอ

รูปแบบข้อมูล Coaching:

.rosetta/coaching/fr.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."
}

ดูเพิ่มเติม: คู่มือสำหรับภาษาที่มีทรัพยากรน้อย (Low-Resource Languages Guide)


openai — OpenAI API โดยตรง

แปลภาษาโดยตรงผ่าน OpenAI Chat Completions API ไม่มีตัวกลางอย่าง OpenRouter — ใช้คีย์ของคุณ, บัญชีของคุณ, และแดชบอร์ดการใช้งานของคุณ

โมเดล: gpt-4o (ค่าเริ่มต้น), gpt-4o-mini

คุณสมบัติ:

  • ✅ รองรับ Markdown (การแปลเนื้อหา)
  • ✅ รองรับ Coaching (กฎไวยากรณ์, การแทนที่ด้วยพจนานุกรม, บันทึกรูปแบบ)
  • ✅ โหมด JSON สำหรับผลลัพธ์คีย์-ค่า (key-value) ที่มีโครงสร้าง
  • ✅ การหน่วงเวลาแบบทวีคูณ (Exponential backoff) พร้อมการลองใหม่ (retry)

การตั้งค่า:

{
"pairs": {
"en:fr": { "method": "openai", "model": "gpt-4o-mini" }
}
}
export OPENAI_API_KEY=sk-proj-...

รับคีย์ของคุณได้ที่ platform.openai.com/api-keys

anthropic — Anthropic API โดยตรง

แปลภาษาโดยตรงผ่าน Anthropic Messages API ใช้พารามิเตอร์ system สำหรับข้อมูล coaching ซึ่งช่วยให้สามารถใช้งาน prompt caching ของ Anthropic ได้

โมเดล: claude-sonnet-4-6 (ค่าเริ่มต้น), claude-haiku-4-5, claude-opus-4-7

คุณสมบัติ:

  • ✅ รองรับ Markdown (การแปลเนื้อหา)
  • ✅ รองรับ Coaching (กฎไวยากรณ์, การแทนที่ด้วยพจนานุกรม, บันทึกรูปแบบ)
  • ✅ System prompt caching (เฉลี่ยต้นทุน coaching ในแต่ละชุดข้อมูล)
  • ✅ การหน่วงเวลาแบบทวีคูณพร้อมการลองใหม่

การตั้งค่า:

{
"pairs": {
"en:ja": { "method": "anthropic", "model": "claude-haiku-4-5" }
}
}
export ANTHROPIC_API_KEY=sk-ant-...

รับคีย์ของคุณได้ที่ console.anthropic.com

gemini — Google Gemini API โดยตรง

แปลภาษาโดยตรงผ่าน Google Gemini generateContent API มีระดับใช้งานฟรี (Free tier) — เป็นจุดเริ่มต้นแบบไม่มีค่าใช้จ่ายที่ดีที่สุด

โมเดล: gemini-2.5-flash (ค่าเริ่มต้น), gemini-2.5-pro

คุณสมบัติ:

  • ✅ รองรับ Markdown (การแปลเนื้อหา)
  • ✅ รองรับ Coaching (กฎไวยากรณ์, การแทนที่ด้วยพจนานุกรม, บันทึกรูปแบบ)
  • ✅ โหมดการตอบกลับแบบ JSON ผ่าน responseMimeType
  • ✅ ระดับใช้งานฟรี (โควตารายวันจำนวนมาก)
  • ✅ การหน่วงเวลาแบบทวีคูณพร้อมการลองใหม่

การตั้งค่า:

{
"pairs": {
"en:ko": { "method": "gemini", "model": "gemini-2.5-pro" }
}
}
export GEMINI_API_KEY=AI...

รับคีย์ของคุณได้ที่ aistudio.google.com/apikey

การตรวจสอบความถูกต้องของโมเดล (Model Validation)

ผู้ให้บริการ LLM โดยตรง (openai, anthropic, gemini) จะตรวจสอบสตริงโมเดลของคุณในการใช้งานครั้งแรก ซึ่งจะช่วยตรวจจับข้อผิดพลาด 3 ประเภท:

รูปแบบวิธีการผิด — การใช้ path ของโมเดลในรูปแบบ OpenRouter กับผู้ให้บริการโดยตรง:

[WARN] OpenAI: model "google/gemini-3.5-flash" looks like an OpenRouter path.
Direct providers use bare model names (e.g., "gpt-4o").
To use OpenRouter models, set method to 'llm' instead.

ผู้ให้บริการผิด — การใช้โมเดลจากผู้ให้บริการรายอื่นโดยสิ้นเชิง:

[WARN] Gemini: model "claude-sonnet-4-6" is an Anthropic model.
This provider (gemini) cannot serve Anthropic models.
Use --method anthropic or set "method": "anthropic" in config.

โมเดลถูกยกเลิกหรือสะกดผิด — ในการเรียกใช้ API ครั้งแรก rosetta จะดึงรายการโมเดลล่าสุดของผู้ให้บริการและตรวจสอบโมเดลของคุณกับรายการนั้น:

[WARN] Gemini: model "gemini-1.5-flash" not found in available models.
Similar models: gemini-2.0-flash, gemini-2.5-flash, gemini-2.5-pro
The API call will proceed — the provider will give the final verdict.

:::note นี่คือคำเตือน ไม่ใช่ข้อผิดพลาด (errors) การตรวจสอบโมเดลจะบันทึกคำเตือนแต่จะไม่บล็อกการเรียก API ผู้ให้บริการ API จะเป็นผู้ตัดสินขั้นสุดท้าย — ชื่อโมเดลในอนาคตอาจตรงกับรูปแบบที่แตกต่างออกไป และเราไม่ต้องการปิดกั้นด้วยการใช้ heuristics :::


google-translate — Google Cloud Translation API

การผสานการทำงานโดยตรงกับ Google Cloud Translation API v2 ใช้ REST API — ไม่มี SDK, ไม่มี service account ใช้เพียงแค่ API key

เมื่อใดควรใช้: คู่สตริงคีย์-ค่า (key-value) จำนวนมากที่ความเร็วและต้นทุนมีความสำคัญมากกว่าความสละสลวยของภาษา รองรับมากกว่า 130 ภาษาทันทีที่ใช้งาน

ข้อจำกัด:

  • ⚠️ ไม่รองรับ Markdown จะทำให้ code blocks, shortcodes, และตัวแปร interpolation เสียหาย
  • ไม่มีการควบคุมระดับภาษา/น้ำเสียง (register/tone)
  • ไม่มีการใช้ coaching หรือการบังคับใช้คำศัพท์เฉพาะ
npx i18n-rosetta sync --method google-translate

:::tip การตรวจจับอัตโนมัติ หากมีการตั้งค่าเพียง GOOGLE_TRANSLATE_API_KEY (ไม่มีคีย์ OpenRouter) rosetta จะสลับไปใช้ Google Translate โดยอัตโนมัติ ไม่จำเป็นต้องเปลี่ยนการตั้งค่า :::

deepl — DeepL API

การผสานการทำงานโดยตรงกับ DeepL translation API รองรับ glossaries เพื่อความสม่ำเสมอของคำศัพท์

เมื่อใดควรใช้: ภาษายุโรปที่ DeepL ทำได้ดีเยี่ยม (เยอรมัน, ฝรั่งเศส, สเปน, ดัตช์, โปแลนด์ ฯลฯ) การรองรับ Glossary ช่วยบังคับใช้คำศัพท์ให้สม่ำเสมอโดยไม่ต้องใช้ข้อมูล coaching

คุณสมบัติ:

  • ✅ การตรวจจับ endpoint แบบ free/pro อัตโนมัติ (ต่อท้ายด้วย :fx บนคีย์ฟรี)
  • ✅ การสร้างและการจัดการ Glossary
  • ✅ การควบคุมระดับความเป็นทางการ
  • ⚠️ ไม่รองรับ Markdown — สำหรับคู่คีย์-ค่าเท่านั้น

การตั้งค่า:

{
"pairs": {
"en:de": { "method": "deepl" }
}
}
export DEEPL_API_KEY=your-key-here

รับคีย์ของคุณได้ที่ deepl.com/pro-api

microsoft-translator — Azure Cognitive Services

การผสานการทำงานโดยตรงกับ Microsoft Translator Text API v3

เมื่อใดควรใช้: สภาพแวดล้อมระดับองค์กรที่มีโครงสร้างพื้นฐาน Azure อยู่แล้ว รองรับมากกว่า 100 ภาษา รวมถึงหลายภาษาที่ Google Translate ไม่ครอบคลุม

คุณสมบัติ:

  • ✅ สูงสุด 100 segments ต่อคำขอ (ปริมาณงานสูง)
  • ✅ พารามิเตอร์ region (ตัวเลือก) สำหรับการปรับแต่ง latency
  • ⚠️ ไม่รองรับ Markdown — สำหรับคู่คีย์-ค่าเท่านั้น
  • ⚠️ ไม่มีการแปลเนื้อหา — สำหรับคู่คีย์-ค่าเท่านั้น

การตั้งค่า:

{
"pairs": {
"en:ar": { "method": "microsoft-translator" }
}
}
export MICROSOFT_TRANSLATOR_API_KEY=your-key
export MICROSOFT_TRANSLATOR_REGION=global # optional

รับคีย์ของคุณจาก Azure Portal → Cognitive Services → Translator

libretranslate — การแปลแบบโฮสต์เอง (Self-Hosted Translation)

การแปลแบบโอเพนซอร์สที่โฮสต์เองโดยใช้ LibreTranslate ทำงานบนเครื่อง (locally) หรือบนโครงสร้างพื้นฐานของคุณเอง — ไม่มีค่าใช้จ่าย API, มีอำนาจอธิปไตยของข้อมูลอย่างสมบูรณ์

เมื่อใดควรใช้: โปรเจกต์ที่ต้องการการแปลแบบออฟไลน์, การปฏิบัติตามกฎระเบียบความเป็นส่วนตัวของข้อมูล (GDPR), หรือการทำงานที่ไม่มีค่าใช้จ่าย มีประโยชน์อย่างยิ่งสำหรับ CI pipelines ที่ไม่ควรพึ่งพา API ภายนอก

คุณสมบัติ:

  • ✅ โฮสต์เอง — ไม่มีการเรียกใช้ API ภายนอก
  • ✅ ฟรีและเป็นโอเพนซอร์ส (AGPL-3.0)
  • ✅ มีการปรับใช้ (deployment) ผ่าน Docker
  • ⚠️ ไม่รองรับ Markdown — สำหรับคู่คีย์-ค่าเท่านั้น
  • ⚠️ ไม่มีการแปลเนื้อหา — สำหรับคู่คีย์-ค่าเท่านั้น
  • ⚠️ คุณภาพแตกต่างกันไปตามคู่ภาษา

การติดตั้ง:

# Run LibreTranslate locally with Docker
docker run -d -p 5000:5000 libretranslate/libretranslate

# Configure (optional — defaults to localhost:5000)
export LIBRETRANSLATE_API_URL=http://localhost:5000/translate
{
"pairs": {
"en:es": { "method": "libretranslate" }
}
}

api — Remote Translation API

Thin HTTP client สำหรับ translation endpoints ที่โฮสต์โดยชุมชนหรือได้รับการคุ้มครองทรัพย์สินทางปัญญา (IP-protected) Rosetta จะส่งคีย์ออกไปและรับคำแปลกลับมา — โดยไม่มีตรรกะการแปลใดๆ อยู่ภายใน

เมื่อใดควรใช้: เมื่อวิธีการแปลถูกโฮสต์อยู่ฝั่งเซิร์ฟเวอร์ (เช่น ข้อมูล coaching ที่เป็นกรรมสิทธิ์, โมเดลที่ผ่านการ fine-tune, FST pipelines ที่ไม่สามารถแจกจ่ายได้)

{
"pairs": {
"en:crk": {
"method": "api",
"endpoint": "https://api.example.com/v1/translate",
"apiKey": "your-key"
}
}
}

:::note การแปลโดยชุมชนที่เข้ากันได้กับ OCAP วิธีการ api คือสะพานเชื่อมไปยัง การแปลที่โฮสต์โดยชุมชนซึ่งเข้ากันได้กับ OCAP ชุมชนชนพื้นเมืองและภาษาชนกลุ่มน้อยสามารถโฮสต์ translation endpoints ของตนเองได้ — โดยเก็บข้อมูล coaching, โมเดลที่ผ่านการ fine-tune, และทรัพย์สินทางปัญญาด้านภาษาศาสตร์ไว้ภายใต้การควบคุมของชุมชน — ในขณะที่ Rosetta เชื่อมต่อกับพวกเขาในฐานะ thin client

ดู การสนับสนุนภาษาที่มีทรัพยากรน้อย (Support a Low-Resource Language) สำหรับคำแนะนำการโฮสต์โดยชุมชนแบบเต็มรูปแบบ, และ การให้บริการวิธีการผ่าน API (Serving a Method via API) สำหรับข้อกำหนดของ endpoint :::


การตั้งค่าตามคู่ภาษา (Per-Pair Configuration)

พลังที่แท้จริงคือการผสมผสานวิธีการตามคู่ภาษา:

i18n-rosetta.config.json
{
"version": 3,
"pairs": {
"en:fr": { "method": "deepl" },
"en:ja": { "method": "openai", "model": "gpt-4o" },
"en:ko": { "method": "gemini" },
"en:ar": { "method": "microsoft-translator" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}

สิ่งนี้จะแปลภาษาฝรั่งเศสผ่าน DeepL (รองรับ glossary), ภาษาญี่ปุ่นผ่าน OpenAI (คุณภาพ), ภาษาเกาหลีผ่าน Gemini (ระดับใช้งานฟรี), ภาษาอาหรับผ่าน Microsoft Translator (ความครอบคลุม), และภาษา Plains Cree ผ่าน coached plugin (เฉพาะทาง)

ปลั๊กอิน (Plugins)

ปลั๊กอินคือสูตรการแปลที่จัดเตรียมไว้ล่วงหน้าสำหรับคู่ภาษาเฉพาะ เป็น JSON manifests — ไม่ใช่โค้ด — ที่บอก rosetta ว่าควรใช้วิธีการใด, ด้วยการตั้งค่าแบบใด, และคุณภาพใดที่ได้รับการเปรียบเทียบ (benchmarked) แล้ว

:::tip จาก eval harness สู่ production ในคำสั่งเดียว ปลั๊กอินที่พัฒนาและพิสูจน์แล้วใน eval harness สามารถติดตั้งได้โดยตรง — วิธีการที่คุณตรวจสอบความถูกต้องที่นั่นสามารถนำมาใช้งานที่นี่ได้ด้วยคำสั่ง plugin install เพียงคำสั่งเดียว ดู การประเมิน MT (MT Evaluation) สำหรับเวิร์กโฟลว์การประเมินฉบับเต็ม :::

i18n-rosetta plugin install ./french-formal-v1/
i18n-rosetta plugin list
i18n-rosetta plugin remove french-formal-v1

ดู ข้อกำหนดของปลั๊กอิน (Plugin Specification) สำหรับรูปแบบ manifest ฉบับเต็ม


การสลับผู้ให้บริการ (Switching Providers)

ต้องการเปลี่ยนวิธีการใช่ไหม? รูปแบบโมเดลและตัวแปรสภาพแวดล้อม (env var) จะเปลี่ยนไป — นี่คือแผนผัง:

OpenRouter → ผู้ให้บริการโดยตรง

i18n-rosetta.config.json
{
"pairs": {
"en:fr": {
- "method": "llm",
- "model": "openai/gpt-4o"
+ "method": "openai",
+ "model": "gpt-4o"
}
}
}
Environment variables
- export OPENROUTER_API_KEY=sk-or-v1-...
+ export OPENAI_API_KEY=sk-proj-...

ข้อแตกต่างที่สำคัญ:

  • OpenRouter ใช้รูปแบบ provider/model (เช่น openai/gpt-4o) ผู้ให้บริการโดยตรงใช้ชื่อโมเดลเปล่าๆ (เช่น gpt-4o)
  • ผู้ให้บริการโดยตรงแต่ละรายมีตัวแปรสภาพแวดล้อมของตนเอง (OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY)
  • หากคุณใช้รูปแบบโมเดลผิด rosetta จะเตือนคุณ — ดู การตรวจสอบความถูกต้องของโมเดล (Model Validation)

ผู้ให้บริการโดยตรง → OpenRouter

i18n-rosetta.config.json
{
"pairs": {
"en:ja": {
- "method": "anthropic",
- "model": "claude-sonnet-4-6"
+ "method": "llm",
+ "model": "anthropic/claude-sonnet-4-6"
}
}
}

:::tip เมื่อใดควรใช้ OpenRouter เทียบกับผู้ให้บริการโดยตรง ใช้ OpenRouter เมื่อคุณต้องการสลับระหว่างโมเดลโดยไม่ต้องเปลี่ยนตัวแปรสภาพแวดล้อม, หรือเมื่อคุณต้องการเข้าถึงโมเดลมากกว่า 200 แบบจากคีย์เดียว ใช้ผู้ให้บริการโดยตรง เมื่อคุณต้องการการเรียกเก็บเงินที่ง่ายกว่า, latency ที่ต่ำกว่า (ไม่มีตัวกลาง), หรือเข้าถึงคุณสมบัติเฉพาะของผู้ให้บริการ เช่น prompt caching ของ Anthropic :::


การเปรียบเทียบต้นทุน (Cost Comparison)

ต้นทุนโดยประมาณต่อ 1,000 คีย์ที่แปล (สมมติว่า ~10 โทเค็นต่อคีย์, 80 คีย์ต่อชุด):

วิธีการต้นทุน / 1K คีย์ความเร็วคุณภาพเหมาะที่สุดสำหรับ
gemini (Flash)ฟรี (ภายในระดับใช้งาน)เร็วดีการเริ่มต้น, โปรเจกต์ส่วนตัว
google-translate~$0.02เร็วที่สุดพอใช้ปริมาณมาก, ภาษายุโรป
deepl~$0.02เร็วดีภาษายุโรป, คำศัพท์เฉพาะ
microsoft-translator~$0.01เร็วพอใช้ผู้ใช้ Azure, ความครอบคลุมภาษาที่กว้างขวาง
libretranslateฟรี (โฮสต์เอง)แตกต่างกันไปปานกลางระบบปิด (Air-gapped), GDPR, CI pipelines
gemini (Pro)~$0.07ปานกลางดีมากเน้นคุณภาพ, โควตาฟรี
openai (GPT-4o-mini)~$0.01เร็วดีLLM ราคาประหยัด
openai (GPT-4o)~$0.10ปานกลางดีมากเน้นคุณภาพ
anthropic (Haiku)~$0.01เร็วดีLLM ราคาประหยัด
anthropic (Sonnet)~$0.10ปานกลางดีมากเน้นคุณภาพ
anthropic (Opus)~$0.50ช้ายอดเยี่ยมคุณภาพสูงสุด
llm (OpenRouter)แตกต่างกันไปตามโมเดลแตกต่างกันไปแตกต่างกันไปการเปรียบเทียบโมเดล, การทดลอง

:::note นี่คือการประมาณการ ต้นทุนจริงขึ้นอยู่กับความยาวของข้อความต้นทาง, ขนาดชุดข้อมูล (batch size), และการเปลี่ยนแปลงราคาของผู้ให้บริการ โปรดตรวจสอบหน้าราคาปัจจุบันของผู้ให้บริการแต่ละรายสำหรับอัตราที่แน่นอน :::


ดูเพิ่มเติม