แปลไฟล์ JSON locale โดยไม่แตะต้องคีย์ของคุณ
คีย์ยังคงเป็นคีย์ การซ้อนยังคงสมบูรณ์ มีเพียงค่าข้อความเท่านั้นที่ถูกแปล — และแค่ค่าข้อความเท่านั้น คุณสมบัติประเภทอื่น ๆ จะถูกส่งกลับมาเหมือนเดิมทุกประการ
เครื่องมือแปลมาตรฐานไม่เข้าใจ JSON
API แปลทั่วไปมอง JSON ของคุณเป็นแค่ข้อความยาว ๆ พวกมันแปลชื่อคีย์พร้อมกับค่าข้อความ แปลงวัตถุที่ซ้อนกันให้แบนราบ และต่อข้อความที่ไม่ควรต่อ ผลลัพธ์ที่ได้คือ JSON ที่โครงสร้างเสียหายซึ่งต้องแก้ไขด้วยมือก่อนใช้งาน หากคุณดูแลไฟล์ locale สำหรับแอปพลิเคชันจริง คุณจะรู้ว่าการส่งไฟล์เหล่านี้เข้า API แปลมาตรฐานทำให้ต้องทำงานเพิ่มมากกว่าที่จะประหยัดเวลา
ปัญหาไม่ได้อยู่แค่ชื่อคีย์เท่านั้น API แปลมาตรฐานยังทำให้ตัวแปรแทรกข้อความเสียหาย เช่น ข้อความ "Hello {name}, you have {count} messages" จะถูกแปลเป็น "Hola {nombre}, tienes {cuenta} mensajes" ซึ่งทำให้ตัวแปรที่รันไทม์คาดหวังชื่อเดิมเสียหาย ต้องใช้เวลาหลายชั่วโมงในการดีบัก
สำหรับทีมที่ดูแลไฟล์ locale หลายภาษาในแอปพลิเคชันจริง นี่ไม่ใช่แค่ปัญหาทางทฤษฎี มันเกิดขึ้นแล้ว คำถามคือกระบวนการซ่อมแซมด้วยมือใช้เวลานานแค่ไหนในแต่ละครั้ง
PolyLingo จะเดินผ่าน JSON ของคุณก่อนแปล
PolyLingo เข้าใจโครงสร้าง JSON มันจะเดินผ่านวัตถุของคุณแบบเรียกซ้ำ ระบุค่าข้อความที่มีข้อความที่แปลได้ และส่งแค่ค่านั้นไปยังโมเดลแปล ชื่อคีย์ไม่ถูกแก้ไขเลย ตัวเลข บูลีน ค่า null และประเภทที่ไม่ใช่ข้อความจะถูกส่งผ่านโดยไม่เปลี่ยนแปลง ผลลัพธ์คือ JSON ที่ถูกต้องตามโครงสร้างเหมือนเดิม — เพียงแต่ค่าข้อความถูกแปลแล้ว
ตัวแปรแทรกข้อความ — {name}, {{count}}, %s และรูปแบบที่คล้ายกัน — จะถูกระบุและรักษาไว้ตลอดกระบวนการแปล จะถูกแทนที่ด้วยตัวแทนชั่วคราวก่อนแปล และคืนค่าเดิมในผลลัพธ์ โมเดลแปลจะไม่เห็นตัวแปรเหล่านี้เป็นข้อความที่ต้องแปล
จัดการอาร์เรย์อย่างถูกต้อง: แปลแต่ละองค์ประกอบข้อความ ขณะที่ดัชนีตัวเลขและโครงสร้างอาร์เรย์ไม่เปลี่ยนแปลง อาร์เรย์ผสมที่มีทั้งข้อความและไม่ใช่ข้อความ (ตัวเลข วัตถุ) จะถูกเดินผ่านอย่างถูกต้องโดยส่งผ่านประเภทที่ไม่ใช่ข้อความโดยไม่เปลี่ยนแปลง
{
"nav_home": "Home",
"nav_pricing": "Pricing",
"hero_title": "Grow your audience globally",
"hero_cta": "Get started for free",
"footer_rights": "All rights reserved."
}{
"nav_home": "Accueil",
"nav_pricing": "Tarifs",
"hero_title": "Développez votre audience mondiale",
"hero_cta": "Commencer gratuitement",
"footer_rights": "Tous droits réservés."
}{
"nav": {
"home": "Home",
"pricing": "Pricing",
"blog": "Blog"
},
"hero": {
"title": "Grow your audience globally",
"subtitle": "Translate in seconds.",
"cta": "Get started for free"
},
"errors": {
"notFound": "Page not found",
"serverError": "Something went wrong"
}
}{
"nav": {
"home": "Inicio",
"pricing": "Precios",
"blog": "Blog"
},
"hero": {
"title": "Expande tu audiencia globalmente",
"subtitle": "Traduce en segundos.",
"cta": "Comienza gratis"
},
"errors": {
"notFound": "Página no encontrada",
"serverError": "Algo salió mal"
}
}curl -X POST https://api.usepolylingo.com/v1/translate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "{\"nav_home\": \"Home\", \"hero_title\": \"Get started\"}",
"format": "json",
"targets": ["es", "fr", "de", "ja", "zh"],
"model": "standard"
}'
# Response:
# {
# "translations": {
# "es": "{\"nav_home\": \"Inicio\", \"hero_title\": \"Empezar\"}",
# "fr": "{\"nav_home\": \"Accueil\", \"hero_title\": \"Commencer\"}",
# ...
# }
# }สิ่งที่ PolyLingo รับประกันสำหรับการแปล JSON ทุกครั้ง
- ✓ชื่อคีย์ไม่ถูกแก้ไขเลย
- ✓จัดการวัตถุและอาร์เรย์ที่ซ้อนกันแบบเรียกซ้ำ
- ✓ตัวเลข บูลีน ค่า null ถูกส่งผ่านโดยไม่เปลี่ยนแปลง
- ✓รองรับ 43 ภาษาในคำขอเดียว
- ✓ตรวจจับอัตโนมัติว่าเป็น JSON — ไม่ต้องใช้แฟล็กฟอร์แมต
- ✓ทำงานกับไฟล์ locale แบบแบนและแบบซ้อนลึก
- ✓รักษาตัวแปรแทรกข้อความ ({name}, {{count}}, %s) อย่างแม่นยำ
- ✓ผลลัพธ์เป็น JSON ที่ถูกต้อง — แยกวิเคราะห์ได้โดยไม่ต้องแก้ไข
สามขั้นตอนสู่ไฟล์ locale ที่แปลแล้ว
วาง JSON ของคุณหรือเรียก API
ใช้เครื่องมือแปลแบบไม่ต้องเขียนโค้ดสำหรับการแปลครั้งเดียว: วาง JSON เลือกภาษา ดาวน์โหลดไฟล์แปล สำหรับอัตโนมัติ ให้เรียก POST /v1/translate พร้อมเนื้อหา JSON และรหัสภาษาปลายทาง
รับทุกภาษาในคำตอบเดียว
API จะส่งกลับวัตถุ JSON ที่มีรายการหนึ่งรายการต่อภาษาปลายทาง แต่ละรายการมีไฟล์ locale ที่แปลครบถ้วนและโครงสร้างเหมือนเดิม ไม่มีการเรียกแยกภาษา ไม่มีการวนซ้ำ คำขอเดียวสำหรับผลลัพธ์ทั้งหมด
วางผลลัพธ์ลงในไดเรกทอรี messages ของคุณ
เขียนไฟล์แปลแต่ละไฟล์ไปที่ messages/es.json, messages/fr.json, messages/de.json — หรือที่ที่ไลบรารี i18n ของคุณคาดหวัง โครงสร้างเหมือนกับไฟล์ต้นฉบับของคุณ จึงไม่ต้องประมวลผลเพิ่มเติม
สถานการณ์ที่การแปล JSON สำคัญที่สุด
i18n แอปด้วย next-intl หรือ i18next
แปลไฟล์ messages/*.json หรือ locales/*.json ของคุณโดยตรง คีย์ยังคงเหมือนเดิม การซ้อนถูกเก็บไว้ และตัวแปรแทรกข้อความไม่ถูกแก้ไข วางไฟล์ลงในไดเรกทอรี messages และดีพลอย
ส่งออกเนื้อหา CMS
แพลตฟอร์ม Headless CMS มักส่งออกเนื้อหาที่มีโครงสร้างเป็น JSON PolyLingo แปลค่าข้อความในขณะที่รักษาชื่อฟิลด์ ชนิดเนื้อหาที่ซ้อน และค่าที่ไม่ใช่ข้อความ เช่น วันที่ บูลีน และ ID
การตอบสนอง API และไฟล์ config
โครงสร้าง JSON ใด ๆ ที่มีค่าข้อความที่แปลได้ — คำอธิบายสินค้า เทมเพลตแจ้งเตือน ข้อความในแอปที่ให้บริการผ่าน API — สามารถแปลได้โดยไม่แก้ไขโครงสร้างที่แอปของคุณพึ่งพา
คำถามที่พบบ่อยเกี่ยวกับการแปล JSON
ตัวแปรแทรกข้อความเช่น {name} หรือ {{count}} ถูกเก็บไว้หรือไม่?
ใช่ PolyLingo ระบุรูปแบบตัวแปรแทรกข้อความทั่วไป เช่น {variable}, {{variable}}, %(variable)s และ %s ก่อนแปล ตัวแปรเหล่านี้จะถูกแทนที่ด้วยตัวแทนชั่วคราว ข้อความรอบ ๆ ถูกแปล และชื่อเดิมของตัวแปรจะถูกคืนค่าในผลลัพธ์ โมเดลแปลจะไม่เห็นชื่อเหล่านี้เป็นข้อความที่ต้องแปล
ค่าที่ไม่ใช่ข้อความ เช่น ตัวเลข บูลีน null จะเกิดอะไรขึ้น?
ค่าที่ไม่ใช่ข้อความจะถูกส่งผ่านโดยไม่เปลี่ยนแปลง PolyLingo แปลเฉพาะค่าข้อความที่มีข้อความธรรมชาติเท่านั้น ตัวเลข บูลีน ค่า null และอาร์เรย์ของค่าที่ไม่ใช่ข้อความจะถูกเก็บไว้เหมือนเดิมในต้นฉบับ
PolyLingo รองรับโครงสร้าง JSON ที่ซ้อนลึกได้หรือไม่?
ได้ PolyLingo เดินผ่านวัตถุที่ซ้อนกันทุกระดับความลึกแบบเรียกซ้ำ การแปลจะใช้กับค่าข้อความทั้งหมดในโครงสร้าง ไม่ว่าจะซ้อนลึกแค่ไหน
ถ้าบางคีย์มีเนื้อหาที่ไม่ควรแปล เช่น slug หรือโค้ด จะทำอย่างไร?
PolyLingo แปลค่าข้อความทั้งหมดโดยค่าเริ่มต้น หากคุณมีฟิลด์ข้อความที่ไม่ควรแปล เช่น slug รหัสภาษา ตัวระบุทางเทคนิค วิธีที่แนะนำคือไม่รวมฟิลด์เหล่านั้นใน JSON ที่ส่ง หรือใช้พารามิเตอร์ format แบบระบุและกำหนดฟิลด์ที่ข้าม (กำลังจะมา) สำหรับไฟล์ locale ส่วนใหญ่ ค่าข้อความทั้งหมดตั้งใจให้แปลได้
รองรับ JSON5 หรือ JSONC (JSON ที่มีคอมเมนต์) หรือไม่?
ปัจจุบัน PolyLingo รองรับ JSON มาตรฐานเท่านั้น JSON5 และ JSONC (ที่มีคอมเมนต์) ควรผ่านการแปลงลบคอมเมนต์และแปลงเป็น JSON มาตรฐานก่อนส่ง นี่เป็นขั้นตอนทั่วไปในกระบวนการสร้างและเพิ่มภาระน้อยมาก
สามารถแปลกี่ภาษาในคำขอเดียว?
สูงสุด 30 ภาษาที่รองรับในคำขอเดียว คำตอบจะมีวัตถุ JSON แปลหนึ่งรายการต่อรหัสภาษา ข้อจำกัดอัตราการใช้งานขึ้นกับแผน — แผนฟรีอนุญาต 10 คำขอต่อนาที ขณะที่แผน Growth และ Scale อนุญาต 200–600 คำขอต่อนาที
แปลไฟล์ locale ของคุณในไม่กี่วินาที
วาง JSON ของคุณ เลือกภาษา แล้วรับไฟล์ locale ที่ถูกต้องสำหรับทุกภาษาที่ต้องการ
เริ่มแปลฟรีวาง JSON locale ของคุณและดูผลลัพธ์ — ฟรี ไม่ต้องสมัครสมาชิก