Terjemah fail locale JSON tanpa mengubah kekunci anda.
Kekunci kekal kekunci. Penjeratan kekal utuh. Hanya nilai rentetan diterjemah — dan hanya nilai rentetan. Setiap jenis sifat lain dikembalikan tepat seperti yang dihantar.
Alat terjemahan standard tidak memahami JSON.
API terjemahan generik melihat JSON anda sebagai dinding teks. Mereka menterjemah nama kekunci bersama nilai. Mereka meratakan objek berjerat. Mereka menggabungkan rentetan yang tidak sepatutnya. Apa yang dikembalikan adalah JSON yang rosak secara struktur yang memerlukan pembetulan manual sebelum boleh digunakan. Jika anda menyelenggara fail locale untuk aplikasi produksi, anda tahu bahawa memasukkan mereka ke dalam API terjemahan standard menghasilkan lebih banyak kerja daripada yang dijimatkan.
Masalahnya lebih mendalam daripada hanya nama kekunci. API terjemahan standard juga mengacau pemboleh ubah interpolasi. Rentetan seperti "Hello {name}, you have {count} messages" dikembalikan dengan nama pemboleh ubah diterjemah — "Hola {nombre}, tienes {cuenta} mensajes" — yang merosakkan setiap runtime yang menjangkakan nama pemboleh ubah asal. Berjam-jam debugging menyusul.
Bagi pasukan yang menyelenggara fail locale merentas pelbagai bahasa untuk aplikasi produksi, ini bukan kebimbangan teori. Ia sudah berlaku. Soalannya ialah berapa lama proses pembaikan manual mengambil masa setiap kali.
PolyLingo menelusuri JSON anda sebelum menterjemah.
PolyLingo memahami struktur JSON. Ia menelusuri objek anda secara rekursif, mengenal pasti nilai rentetan yang mengandungi teks yang boleh diterjemah, dan hanya menghantar nilai tersebut ke model terjemahan. Nama kekunci tidak pernah diubah. Nombor, boolean, nilai null, dan jenis bukan rentetan diteruskan tanpa perubahan. Output adalah JSON sah dengan struktur yang sama — cuma dengan nilai rentetan yang diterjemah.
Pemboleh ubah interpolasi — {name}, {{count}}, %s, dan corak serupa — dikenalpasti dan dipelihara sepanjang proses terjemahan. Mereka digantikan dengan tempat letak sebelum terjemahan, dan dikembalikan dalam bentuk asal dalam output. Model terjemahan tidak pernah melihat mereka sebagai teks yang boleh diterjemah.
Tatasusunan dikendalikan dengan betul: setiap elemen rentetan diterjemah, manakala indeks nombor dan struktur tatasusunan tidak berubah. Tatasusunan campuran yang mengandungi rentetan dan bukan rentetan (nombor, objek) ditelusuri dengan betul dengan jenis bukan rentetan diteruskan tanpa perubahan.
{
"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\"}",
# ...
# }
# }Apa yang dijamin PolyLingo untuk setiap terjemahan JSON
- ✓Nama kekunci tidak pernah diubah
- ✓Objek dan tatasusunan berjerat dikendalikan secara rekursif
- ✓Nombor, boolean, nilai null diteruskan tanpa perubahan
- ✓Semua 36 bahasa dalam satu permintaan
- ✓Dikesan secara automatik sebagai JSON — tiada penanda format diperlukan
- ✓Berfungsi dengan fail locale rata dan berjerat dalam
- ✓Pemboleh ubah interpolasi ({name}, {{count}}, %s) dipelihara tepat
- ✓Output adalah JSON sah — boleh diurai tanpa pengubahsuaian
Tiga langkah ke fail locale diterjemah
Tampal JSON anda atau panggil API
Gunakan penterjemah tanpa kod untuk terjemahan sekali sahaja: tampal JSON anda, pilih bahasa anda, muat turun fail diterjemah. Untuk automasi, panggil POST /v1/translate dengan kandungan JSON dan kod bahasa sasaran anda.
Terima semua bahasa dalam satu respons
API mengembalikan objek JSON dengan satu entri setiap bahasa sasaran, masing-masing mengandungi fail locale yang diterjemah sepenuhnya dengan struktur yang sama. Tiada panggilan per bahasa. Tiada pengulangan. Satu permintaan untuk semua output.
Letakkan output ke dalam direktori mesej anda
Tulis setiap fail diterjemah ke messages/es.json, messages/fr.json, messages/de.json — atau di mana sahaja perpustakaan i18n anda menjangkakannya. Struktur adalah sama dengan fail sumber anda, jadi tiada pemprosesan lanjut diperlukan.
Di mana terjemahan JSON paling penting
i18n aplikasi dengan next-intl atau i18next
Terjemah fail messages/*.json atau locales/*.json anda secara langsung. Kekunci kekal utuh, penjeratan dipelihara, dan pemboleh ubah interpolasi tidak diubah. Letakkan fail ke dalam direktori mesej anda dan lancarkan.
Eksport kandungan CMS
Platform CMS tanpa kepala sering mengeksport kandungan berstruktur sebagai JSON. PolyLingo menterjemah nilai rentetan sambil mengekalkan nama medan, jenis kandungan berjerat, dan nilai bukan rentetan seperti tarikh, boolean, dan ID.
Respons API dan fail konfigurasi
Mana-mana struktur JSON dengan nilai rentetan yang boleh diterjemah — penerangan produk, templat notifikasi, salinan dalam aplikasi yang disampaikan melalui API — boleh diterjemah tanpa mengubah struktur yang aplikasi anda bergantung.
Soalan lazim tentang terjemahan JSON
Adakah pemboleh ubah interpolasi seperti {name} atau {{count}} dipelihara?
Ya. PolyLingo mengenal pasti corak interpolasi biasa termasuk {variable}, {{variable}}, %(variable)s, dan %s sebelum terjemahan. Ini digantikan dengan tempat letak stabil, teks sekeliling diterjemah, dan nama pemboleh ubah asal dikembalikan dalam output. Model terjemahan tidak pernah melihat nama pemboleh ubah sebagai kandungan yang boleh diterjemah.
Apa yang berlaku kepada nilai bukan rentetan — nombor, boolean, null?
Nilai bukan rentetan diteruskan sepenuhnya tanpa perubahan. PolyLingo hanya menterjemah nilai rentetan yang mengandungi teks bahasa semula jadi. Nombor, boolean, nilai null, dan tatasusunan bukan rentetan dipelihara tepat seperti yang muncul dalam sumber.
Bolehkah PolyLingo mengendalikan struktur JSON berjerat dalam?
Ya. PolyLingo menelusuri objek dengan kedalaman jeratan apa pun secara rekursif. Terjemahan diterapkan pada semua nilai rentetan di seluruh struktur, tidak kira seberapa dalam ia berjerat.
Bagaimana jika sesetengah kekunci mengandungi kandungan yang tidak boleh diterjemah seperti slug atau kod?
PolyLingo menterjemah semua nilai rentetan secara lalai. Jika anda mempunyai medan rentetan yang tidak sepatutnya diterjemah — slug, kod bahasa, pengecam teknikal — pendekatan yang disyorkan adalah sama ada mengecualikannya dari JSON yang anda hantar, atau menggunakan parameter format eksplisit dan nyatakan medan untuk dilangkau (akan datang tidak lama lagi). Untuk kebanyakan fail locale, semua nilai rentetan dimaksudkan untuk diterjemah.
Adakah ia berfungsi dengan JSON5 atau JSONC (JSON dengan komen)?
Pada masa ini PolyLingo memproses JSON standard. JSON5 dan JSONC (dengan komen) harus dipra-proses untuk membuang komen dan menukar ke JSON standard sebelum dihantar. Ini adalah langkah biasa dalam saluran binaan dan menambah beban yang minimum.
Berapa banyak bahasa yang boleh saya sasarkan dalam satu permintaan?
Sehingga semua 36 bahasa yang disokong dalam satu permintaan. Respons mengandungi satu objek JSON diterjemah bagi setiap kod bahasa. Had kadar berbeza mengikut pelan — tahap percuma membenarkan 10 permintaan seminit, manakala pelan Growth dan Scale membenarkan 200–600 permintaan seminit.
Panduan berkaitan
Tambah pelbagai bahasa ke Next.js
Bagaimana PolyLingo sesuai dalam aliran kerja next-intl atau next-i18next.
Terjemah Markdown tanpa merosakkan format
Untuk kandungan yang berada dalam fail .md dan bukannya JSON.
Pelbagai bahasa untuk CMS tanpa kepala
Menterjemah kandungan Sanity, Contentful, dan Webflow di peringkat CMS.
Terjemah fail locale anda dalam beberapa saat.
Tampal JSON anda, pilih bahasa anda, dapatkan kembali fail locale sah untuk setiap bahasa sasaran.
Mula terjemah secara percumaTampal JSON locale anda dan lihat output — percuma, tiada akaun diperlukan.