فایلهای JSON locale را بدون تغییر کلیدها ترجمه کنید.
کلیدها همان کلیدها باقی میمانند. تو در تو بودن حفظ میشود. فقط مقادیر رشتهای ترجمه میشوند — و فقط مقادیر رشتهای. سایر انواع ویژگیها دقیقاً همانطور که ارسال شدهاند بازگردانده میشوند.
ابزارهای ترجمه استاندارد JSON را نمیفهمند.
رابطهای برنامهنویسی ترجمه عمومی JSON شما را به عنوان یک دیوار متن میبینند. آنها نام کلیدها را همراه با مقادیر ترجمه میکنند. اشیاء تو در تو را صاف میکنند. رشتههایی را که نباید به هم میچسبانند. چیزی که بازمیگردد JSON ساختاری شکسته است که قبل از استفاده نیاز به اصلاح دستی دارد. اگر فایلهای locale را برای یک برنامه تولیدی نگهداری میکنید، میدانید که وارد کردن آنها به یک API ترجمه استاندارد، کار بیشتری نسبت به صرفهجویی ایجاد میکند.
مشکل عمیقتر از فقط نام کلیدها است. APIهای ترجمه استاندارد متغیرهای درونگذاری را نیز خراب میکنند. رشتهای مانند "سلام {name}، شما {count} پیام دارید" با نام متغیرهای ترجمه شده بازمیگردد — "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 بدون تغییر عبور داده میشوند
- ✓تمام ۳۶ زبان در یک درخواست واحد
- ✓به طور خودکار به عنوان JSON شناسایی میشود — نیازی به پرچم فرمت نیست
- ✓با فایلهای locale تخت و عمیقاً تو در تو کار میکند
- ✓متغیرهای درونگذاری ({name}، {{count}}، %s) دقیقاً حفظ میشوند
- ✓خروجی JSON معتبر است — بدون نیاز به اصلاح قابل تجزیه است
سه مرحله برای فایلهای locale ترجمه شده
JSON خود را جایگذاری کنید یا API را فراخوانی کنید
برای ترجمههای یکباره از مترجم بدون کد استفاده کنید: JSON خود را جایگذاری کنید، زبانها را انتخاب کنید، فایلهای ترجمه شده را دانلود کنید. برای خودکارسازی، درخواست POST /v1/translate را با محتوای JSON و کدهای زبان هدف فراخوانی کنید.
تمام زبانها را در یک پاسخ دریافت کنید
API یک شیء JSON با یک ورودی برای هر زبان هدف بازمیگرداند که هر کدام شامل فایل locale کاملاً ترجمه شده با ساختار یکسان است. بدون تماسهای جداگانه برای هر زبان. بدون حلقه. یک درخواست برای همه خروجیها.
خروجیها را در دایرکتوری پیامهای خود قرار دهید
هر فایل ترجمه شده را در messages/es.json، messages/fr.json، messages/de.json — یا هر جایی که کتابخانه i18n شما انتظار دارد، بنویسید. ساختار دقیقاً مشابه فایل منبع شما است، بنابراین نیازی به پردازش بیشتر نیست.
کجا ترجمه JSON بیشترین اهمیت را دارد
i18n برنامه با next-intl یا i18next
فایلهای messages/*.json یا locales/*.json خود را مستقیماً ترجمه کنید. کلیدها دستنخورده باقی میمانند، تو در تو بودن حفظ میشود و متغیرهای درونگذاری بدون تغییر عبور میکنند. فایلها را در دایرکتوری پیامها قرار دهید و منتشر کنید.
خروجیهای محتوای CMS
پلتفرمهای CMS بدون سر اغلب محتواهای ساختاریافته را به صورت JSON صادر میکنند. PolyLingo مقادیر رشتهای را ترجمه میکند در حالی که نام فیلدها، نوع محتوای تو در تو و مقادیر غیررشتهای مانند تاریخها، بولینها و شناسهها را حفظ میکند.
پاسخهای API و فایلهای پیکربندی
هر ساختار JSON با مقادیر رشتهای قابل ترجمه — توضیحات محصول، قالبهای اعلان، متن درون برنامهای ارائه شده از طریق API — میتواند بدون تغییر ساختاری که برنامه شما به آن وابسته است، ترجمه شود.
سؤالات متداول درباره ترجمه JSON
آیا متغیرهای درونگذاری مانند {name} یا {{count}} حفظ میشوند؟
بله. PolyLingo الگوهای رایج درونگذاری از جمله {variable}، {{variable}}، %(variable)s و %s را قبل از ترجمه شناسایی میکند. اینها با نگهدارندههای پایدار جایگزین میشوند، متن اطراف ترجمه میشود و نامهای متغیر اصلی در خروجی بازگردانده میشوند. مدل ترجمه هرگز نام متغیرها را به عنوان محتوای قابل ترجمه نمیبیند.
چه اتفاقی برای مقادیر غیررشتهای — اعداد، بولینها، null — میافتد؟
مقادیر غیررشتهای کاملاً بدون تغییر عبور داده میشوند. PolyLingo فقط مقادیر رشتهای حاوی متن طبیعی را ترجمه میکند. اعداد، بولینها، مقادیر null و آرایههای غیررشتهای دقیقاً همانطور که در منبع هستند حفظ میشوند.
آیا PolyLingo میتواند ساختارهای JSON عمیقاً تو در تو را مدیریت کند؟
بله. PolyLingo اشیاء با هر عمق تو در تو را به صورت بازگشتی پیمایش میکند. ترجمه روی تمام مقادیر رشتهای در سراسر ساختار اعمال میشود، بدون توجه به عمق تو در تو بودن آنها.
اگر برخی کلیدها شامل محتوای غیرقابل ترجمه مانند slug یا کد باشند چه؟
PolyLingo به طور پیشفرض تمام مقادیر رشتهای را ترجمه میکند. اگر فیلدهای رشتهای دارید که نباید ترجمه شوند — slugها، کدهای زبان، شناسههای فنی — روش پیشنهادی این است که آنها را از JSON ارسالی حذف کنید یا از پارامتر فرمت صریح استفاده کنید و فیلدهایی که باید رد شوند را مشخص کنید (به زودی ارائه میشود). برای اکثر فایلهای locale، همه مقادیر رشتهای برای ترجمه در نظر گرفته شدهاند.
آیا با JSON5 یا JSONC (JSON با کامنت) کار میکند؟
در حال حاضر PolyLingo فقط JSON استاندارد را پردازش میکند. JSON5 و JSONC (با کامنت) باید قبل از ارسال پیشپردازش شوند تا کامنتها حذف و به JSON استاندارد تبدیل شوند. این یک مرحله رایج در خطوط ساخت است و بار اضافی کمی دارد.
چند زبان میتوانم در یک درخواست هدف قرار دهم؟
تا ۳۶ زبان پشتیبانی شده در یک درخواست واحد. پاسخ شامل یک شیء JSON ترجمه شده برای هر کد زبان است. محدودیت نرخ بسته به طرح متفاوت است — طرح رایگان اجازه ۱۰ درخواست در دقیقه را میدهد، در حالی که طرحهای Growth و Scale اجازه ۲۰۰ تا ۶۰۰ درخواست در دقیقه را میدهند.
فایلهای locale خود را در چند ثانیه ترجمه کنید.
JSON خود را جایگذاری کنید، زبانهای خود را انتخاب کنید، فایلهای locale معتبر برای هر زبان هدف دریافت کنید.
شروع ترجمه رایگانJSON locale خود را جایگذاری کنید و خروجی را ببینید — رایگان، بدون نیاز به حساب کاربری.