แปลไฟล์ 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 ถูกส่งผ่านโดยไม่เปลี่ยนแปลง
- ✓รองรับ 36 ภาษาในคำขอเดียว
- ✓ตรวจจับอัตโนมัติว่าเป็น 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 มาตรฐานก่อนส่ง นี่เป็นขั้นตอนทั่วไปในกระบวนการสร้างและเพิ่มภาระน้อยมาก
สามารถแปลกี่ภาษาในคำขอเดียว?
สูงสุด 36 ภาษาที่รองรับทั้งหมดในคำขอเดียว คำตอบมีวัตถุ JSON แปลหนึ่งรายการต่อรหัสภาษา ข้อจำกัดอัตราแตกต่างตามแผน — แผนฟรีอนุญาต 10 คำขอต่อนาที ขณะที่แผน Growth และ Scale อนุญาต 200–600 คำขอต่อนาที
แปลไฟล์ locale ของคุณในไม่กี่วินาที
วาง JSON ของคุณ เลือกภาษา แล้วรับไฟล์ locale ที่ถูกต้องสำหรับทุกภาษาปลายทาง
เริ่มแปลฟรีวาง JSON locale ของคุณและดูผลลัพธ์ — ฟรี ไม่ต้องสมัครสมาชิก