หนึ่งบทความ 19 ภาษา: โครงสร้างไฟล์, prompt แปล, 5 จุดสะดุดจริง, วิธี POST ครั้งเดียว
เอกสารทางการของ Anthropic และ OpenAI มีแต่ภาษาอังกฤษ. นี่คือช่องว่างขนาดใหญ่ในระบบนิเวศเนื้อหาสำหรับนักพัฒนา AI ทั่วโลก how2claude กำลังอุดช่องว่างนั้น — ทุกบทความออก 19 ภาษาพร้อมกัน: zh / en / zh-TW / ja / ko / es / pt-BR / id / vi / tr / ar / fr / de / it / ru / uk / pl / he / th
จ้างคนแปลไม่สมจริง (20 บทแปลต่อบทความ บทละหลายพันดอลลาร์) ให้ Claude ทำดึงต้นทุนส่วนเพิ่มใกล้ศูนย์ — แต่โยนคำว่า "แปลเป็นญี่ปุ่น" ข้ามรั้วไปก็จะได้ข้อความกลิ่นเครื่องแปลชัดและเสียงของผู้เขียนหายหมด ต่อไปนี้คือกระบวนการครบถ้วนเพื่อทำให้ถูก: โครงสร้างไฟล์ วิธีเขียน prompt แปล จุดที่ Claude จะสะดุดแน่ๆ วิธีส่ง 19 ภาษาพร้อมทวีตรายภาษาด้วย POST ครั้งเดียวไปยัง API
สองอย่างที่ต่างกันมาก
การแปล ย้ายความหมายจากภาษา A ไป B — สิ่งที่ Google Translate ทำ อ่านแล้ว "ถูก" แต่ "แบน"
การปรับให้เข้าท้องถิ่น (localization) รักษาระดับภาษา จังหวะ และระดับเทคนิคของผู้เขียน เขียนใหม่ด้วย "น้ำเสียงบล็อกเทคนิค" เฉพาะของภาษาเป้าหมาย ผลลัพธ์อ่านเหมือนเจ้าของภาษาเขียน
การแปลเป็นงาน 5 นาทีของ Claude; การปรับให้เข้าท้องถิ่นต้องการ prompt ระบุชัด:
คำสั่ง /write-article ของ how2claude ฝังข้อกำหนดสไตล์ต่อภาษา:
| ไฟล์ภาษา | ข้อกำหนดสไตล์ |
|---|---|
ja.md |
น้ำเสียงบล็อกเทคนิค, ญี่ปุ่นธรรมชาติ |
ko.md |
น้ำเสียงบล็อกเทคนิค, เกาหลีธรรมชาติ |
zh-TW.md |
การใช้แบบไต้หวัน, อักษรตัวเต็ม |
ar.md |
อาหรับมาตรฐานสมัยใหม่ (เขียน) |
id.md |
อินโดนีเซียมาตรฐาน |
ดูเหมือนแค่บรรทัดเพิ่ม แต่สำหรับ Claude สำคัญยิ่ง — ไม่มีบรรทัดนี้ค่าเริ่มต้นจะออกมาเป็น "คำแปลตำรา"
หนึ่งโฟลเดอร์ต่อหนึ่งร่าง 20 ไฟล์:
docs/drafts/let-claude-translate-articles/
├── meta.json # title + summary ของทั้ง 19 ภาษา
├── zh.md # จีน (ต้นฉบับ, เขียนก่อน)
├── en.md # อังกฤษ (ชุดแปลแรก)
├── zh-TW.md
├── ja.md
├── ko.md
├── ...(อีก 14)
└── th.md
meta.json:
{
"category_slug": "use-cases",
"series_slug": "writing",
"free": true,
"title": {
"zh": "让 Claude 把一篇文章翻译成 19 种语言",
"en": "Letting Claude Translate One Article Into 19 Languages",
"th": "ให้ Claude แปลบทความหนึ่งเรื่องเป็น 19 ภาษา",
"...": "..."
},
"summary": {
"th": "หนึ่งบทความ 19 ภาษา: โครงสร้างไฟล์, prompt แปล, 5 จุดสะดุดจริง, วิธี POST ครั้งเดียว",
"...": "..."
}
}
บรรทัดแรกของแต่ละไฟล์ .md คือ # หัวเรื่อง, ที่เหลือคือเนื้อหา title ไม่ได้ดึงจากบรรทัดแรกของ md — แต่ดึงจาก meta.json ดังนั้นแต่ละภาษาจึงมีหัวเรื่องสั้นที่ขัดเกลาเป็นพิเศษ ไม่ใช่ประโยคเปิดบทความที่อาจยืดยาวตอนแปล
กระบวนการสองแบบที่ต้องหลีกเลี่ยง:
ผิด: แปลต่อโซ่ zh → en → ja → ko → ...
ปัญหา: ja อิง en, ko อิง ja — แต่ละกระโดดเสียความหมายไปนิด ถึง th (ไทย) ก็เป็นข้อมูลมือสี่
ถูก: แปลแบบรัศมี ล็อก zh → สร้าง en / ja / ko / ar / id / ... ตรงจากต้นฉบับ
ทุกภาษาออกจากต้นฉบับโดยตรง ไม่มีจุดแวะ
โครงสร้าง prompt (ห่ออยู่ใน /write-article):
นี่คือบทความบล็อกเทคนิคเรื่อง X ต้นฉบับภาษาจีน:
[zh.md เต็ม]
แปลเป็นภาษาต่อไปนี้ พร้อมข้อกำหนดรายภาษา:
- ja.md: น้ำเสียงบล็อกเทคนิค, ญี่ปุ่นธรรมชาติ
- ko.md: น้ำเสียงบล็อกเทคนิค, เกาหลีธรรมชาติ
- ar.md: อาหรับมาตรฐานสมัยใหม่ (เขียน)
...
กฎ:
1. รักษาน้ำเสียงผู้เขียนที่ตรงไปตรงมา เป็นมืออาชีพ และหยอกตัวเองเล็กน้อย
2. อย่าแปลโค้ดบล็อก คำสั่ง ชื่อ API URL
3. หัวเรื่อง หัวเรื่องย่อย การไหลของย่อหน้าปรับโครงสร้างได้
4. ออก title แยกต่อภาษา — สั้น มีตะขอ ไม่ใช่แปลตรงตัวจากหัวเรื่องต้นฉบับ
แปล 18 ภาษาแบบขนาน เซสชันเดียวของ Claude จบ รายละเอียดสำคัญข้อหนึ่ง: ทำในเซสชันเดียว / รุ่นโมเดลเดียว — เสียงจะลอยไปเมื่อข้ามเซสชันหรือข้ามรุ่นโมเดล
X นับตัวอักษร CJK (จีน/ญี่ปุ่น/เกาหลี) เข้มกว่า ผมให้ Claude สร้างทวีตตามเงื่อนไขนี้:
รอบแรกทวีตจีนสามตัวทะลุ (160, 164, 152) Claude แปลทวีตอังกฤษตามตัวอักษร — ทวีตอังกฤษ 260 ตัวอักษรแปลเป็นจีนแล้วแตะขีดจำกัดพอดี
กฎ: ทวีตจีนต้องเขียนใหม่ ไม่ใช่แปล ข้อกำหนด: เพดาน 140 ตัวอักษร ต้องมีตะขอ ยอมเสียรายละเอียดบ้างได้
zh → zh-TW ชวนให้ขี้เกียจ: ผ่านเครื่องแปลงอักษรตัวย่อ-เป็น-ตัวเต็ม ตัวอักษรตรง คำศัพท์ไม่ตรง:
| zh | zh-TW (ผิด) | zh-TW (ถูก) |
|---|---|---|
| 文件 | 文件 | 檔案 |
| 信息 | 信息 | 資訊 |
| 软件 | 軟件 | 軟體 |
| 视频 | 視頻 | 影片 |
เวลาสั่ง zh-TW จาก Claude ให้พูดทั้งสอง: "การใช้แบบไต้หวัน อักษรตัวเต็ม" "ตัวเต็มอย่างเดียว" จะได้แค่การแปลงอักษร
อาหรับและฮีบรูอ่านจากขวาไปซ้าย ฝั่ง Rails ต้องใช้ <html dir="rtl"> และ variants rtl: ของ Tailwind แต่การแปลเองก็มีกับดัก:
unicode-bidi: isolate ไม่งั้นโค้ดจะโดน "ดูด" เข้าไปในกระแส RTL، แทน , และ ؟ แทน ? Claude ค่าเริ่มต้นใช้เครื่องหมายอังกฤษ; ต้องระบุชัด2026) ภายในย่อหน้าที่ไหลขวาไปซ้าย เบราว์เซอร์จัดการเอง แต่ Claude มักสลับตอนเขียนข้อความดิบสำนวนพูดในต้นฉบับ ("ทีเดียวจบ", "พลาดท่า", "โดนเท") Claude แปลเป็นญี่ปุ่น/เกาหลีโดยปริยายเป็นรูปเขียนทางการ (「一気に実装」「落とし穴」「失敗」) — ความหมายตรง แต่น้ำเสียงหายไป
วิธีแก้: เขียนใน prompt — "รักษาน้ำเสียงบล็อกเทคนิคที่ตรงไปตรงมา หยอกตัวเองเล็กน้อย ไม่ทางการ อย่าทำให้เป็นวิชาการ" แม้กระนั้นบางภาษา (เยอรมัน รัสเซีย) จะลงจอดเป็นทางการกว่าต้นฉบับเล็กน้อย — ภาษาเองมี bias ไปทางระดับเขียน
สตริงในโค้ดแบ่งเป็นสองตะกร้า — ข้อความ UI (แปล) และ placeholder/ชื่อตัวแปร (ไม่):
t("pricing.page_title") # ไม่แปล (i18n key)
"user_id" # ไม่แปล (ชื่อตัวแปร)
"Monthly subscription" # แสดงเป็นตัวอย่างในเนื้อหาให้ผู้อ่าน → ไม่แปล
สำหรับทุกอย่างที่อยู่ติดโค้ด "ไม่แปล" เป็นค่าเริ่มต้นที่ปลอดภัยกว่า ที่ต้องแปลจริงๆ คือไฟล์ i18n locale (config/locales/xx.yml) นั่นเป็นงานคนละเรื่อง
/publish-article ส่ง POST ของร่างไปยัง how2claude.com/api/articles:
{
"category_slug": "use-cases",
"series_slug": "writing",
"free": true,
"thread": true,
"title": { "zh": "...", "en": "...", "ja": "...", ... },
"summary": { "zh": "...", "en": "...", ... },
"content": { "zh": "<md>", "en": "<md>", ... },
"tweets": { "en": ["...", "..."], "zh": [...], ... }
}
หนึ่งคำขอ ~300KB (19 ภาษา × ~15KB) เซิร์ฟเวอร์แยกไปตารางฐานข้อมูล:
articles, title / summary / content เป็น jsonb คีย์ตาม localex_queue_tweets, ตาม locale + account, ส่งเข้าคิวจัดเวลาทวีตส่งเฉพาะ locale ที่มีบัญชี X เชื่อมต่อแล้ว (ปัจจุบัน en/zh/ja/ko/ar/id — 6 บัญชี) ภาษาที่ไม่มีบัญชีส่ง [] ตรวจสอบบัญชี:
Account.all.each { |a| puts "#{a.locale}: #{a.name}" }
# en: @how2claude
# zh: @howtoclaude
# ja: @how2claude_ja
# ko: @how2claude_ko
# ar: @how2claude_ar
# id: @how2claude_id
เช็คลิสต์ครบถ้วนสำหรับให้ Claude แปลบทความหนึ่งเรื่องเป็น 19 ภาษา:
dir="rtl" + variants rtl: ของ Tailwind ฝั่ง Rails เครื่องหมายวรรคตอนผสมและแยกโค้ดบล็อก — จัดการแยกคอขวดจริงไม่ใช่คุณภาพการแปล — โมเดลระดับ Claude 4 แปลเป็นญี่ปุ่น/เกาหลี/อาหรับ/รัสเซียคุณภาพใกล้เจ้าของภาษา คอขวดคือ คุณยอมเอาบทความหนึ่งไปวางหน้าผู้อ่าน 19 ภาษาพร้อมกันหรือไม่ ทางเทคนิค 5 นาทีจบ ทางเนื้อหา ต้องมีความตั้งใจจะบริการผู้ชม 200 เท่าพร้อมกัน