مترجم JSON که ساختار را حفظ میکند | ابزار رایگان بینالمللیسازی
مترجم رایگان JSON که ساختار شما را دست نخورده نگه میدارد. ترجمه فایلهای بینالمللی، پاسخهای API و JSON تودرتو با حفظ کلیدها، انواع داده و قالببندی. مناسب برای برنامههای چندزبانه و i18next.
مترجم حافظ ساختار JSON
این ابزار محتوای اشیاء JSON را در حالی که ساختار آنها را حفظ میکند، ترجمه میکند. JSON خود را در پنل سمت چپ جایگذاری کنید، یک زبان مقصد را انتخاب کنید و خروجی ترجمه شده را در سمت راست مشاهده کنید.
خروجی ترجمه در اینجا ظاهر خواهد شد...
نحوه استفاده
- شیء JSON خود را در قسمت JSON منبع جایگذاری کنید.
- زبان مقصد خود را از منوی کشویی انتخاب کنید.
- JSON ترجمه شده به طور خودکار در پنل سمت راست ظاهر خواهد شد.
- برای کپی کردن JSON ترجمه شده در کلیپبورد، دکمه کپی را کلیک کنید.
مستندات
مترجم حافظ ساختار JSON چیست؟
آیا تاکنون سعی کردهاید JSON را در Google Translate کپی کنید و با کلیدهای شکسته، براکتهای حذف شده یا نحو خراب مواجه شدهاید؟ دقیقاً این مشکلی است که این ابزار حل میکند.
یک مترجم حافظ ساختار JSON مقادیر رشتهای درون اشیاء JSON را به زبان دیگری تبدیل میکند در حالی که همه چیز دیگر را دست نخورده نگه میدارد - کلیدها همان میمانند، اعداد عدد باقی میمانند، مقادیر بولی همچنان بولی هستند و ساختار تودرتوی شما فرو نمیریزد.
این چیزی است که آن را از ابزارهای ترجمه معمولی متمایز میکند: هنگامی که یک فایل i18n معمولی با 50+ کلید تودرتو را ترجمه میکنید، نیاز دارید ساختار دقیقاً مشابه باقی بماند تا کد شما همچنان بتواند به user.profile.displayName در اسپانیایی، فرانسوی یا ژاپنی اشاره کند. با شکستن آن ساختار، ساعتها در حال اشکالزدایی خواهید بود.
این ابزار عبور بازگشتی را به طور خودکار مدیریت میکند، با شناسایی اینکه کدام رشتهها نیاز به ترجمه دارند و کدام عناصر (مانند کلیدهای API، مقادیر پیکربندی یا شناسههای عددی) باید دقیقاً همانطور که هستند باقی بمانند.
چگونه حفظ ساختار JSON کار میکند
چرا حفظ ساختار مهم است
هنگام کار با ترجمه JSON، معمولاً با یکی از این سناریوها سر و کار دارید:
- فایلهای i18n که اپلیکیشن شما انتظار دارد
en.jsonوfr.jsonکلیدهای یکسانی داشته باشند - پاسخهای API که نیاز به ساختار ثابت در زبانهای مختلف برای پردازش کلاینت دارند
- فایلهای پیکربندی که تغییر نام یک کلید کل اپلیکیشن را خراب میکند
- خروجیهای پایگاه داده که روابط به نامهای خاص فیلدها وابسته هستند
چالش: JSON فقط متن نیست. این یک داده ساختاریافته با اسکیمایی است که کد شما به آن تکیه میکند. تغییر "userName" به "nombreUsuario" در هنگام ترجمه باعث خطای undefined در اپلیکیشن میشود.
چگونگی فرآیند ترجمه
در زیر اتفاقاتی که زیر پوسته رخ میدهد را میبینید:
۱. تجزیه و اعتبارسنجی ابزار ابتدا نحو JSON شما را اعتبارسنجی میکند. اگر کاما از دست رفته یا براکت اضافی دارید، قبل از شروع ترجمه پیام خطای واضحی دریافت میکنید - که از خروجی خراب جلوگیری میکند.
۲. عبور بازگشتی از ریشه شروع کرده، الگوریتم از هر گره در درخت JSON عبور میکند. برای هر عنصر، نوع داده را بررسی میکند:
- رشته؟ آن را برای ترجمه صف میکند
- عدد، بولین، null؟ کاملاً آن را رد میکند
- شیء یا آرایه؟ به داخل آن بازگشت میکند
۳. ترجمه ایمن از نظر نوع
فقط مقادیر رشتهای به API ترجمه فرستاده میشوند. "quantity": 42 همچنان 42 میماند، نه "چهل و دو". "isActive": true همچنان true میماند، نه "صحیح".
۴. حفظ کلیدها
تمام کلیدهای شیء در زبان اصلی باقی میمانند. این موضوع بسیار حیاتی است زیرا translations.header.welcomeMessage باید در هر فایل زبانی همان مسیر باشد.
۵. بازسازی ساختار رشتههای ترجمه شده دقیقاً در همان موقعیتها درج میشوند، با حفظ تمام سطوح تودرتو، اندیسهای آرایه و階層های شیء.
یک تله رایج: برخی توسعهدهندگان سعی میکنند شیء را با JSON.stringify() تبدیل کنند، کل رشته را ترجمه کنند، سپس آن را دوباره تجزیه کنند. این کار خراب میشود زیرا مترجم کلیدها، براکتها و نحو را تغییر میدهد. رویکرد بازگشتی کاملاً از این مشکل جلوگیری میکند.
استفاده از مترجم حفظ ساختار JSON
راهنمای گام به گام
۱. JSON خود را جایگذاری کنید شیء JSON خود را کپی کرده و در پنل سمت چپ جایگذاری کنید. این ابزار با هر JSON معتبری کار میکند - چه یک شیء ساده با ۵ کلید باشد یا یک ساختار تودرتوی عمیق با آرایهها و چندین سطح.
۲. زبان مقصد را انتخاب کنید از منوی کشویی زبان انتخاب کنید: اسپانیایی، فرانسوی، آلمانی، ایتالیایی، پرتغالی، چینی، ژاپنی، کرهای، روسی و غیره. اگر برای یک پروژه i18next ترجمه میکنید، کد زبان مورد انتظار فریمورک خود را مطابقت دهید.
۳. ترجمه فوری خروجی ترجمه شده به طور خودکار در پنل سمت راست ظاهر میشود. نیازی به دکمه "ترجمه" نیست - به محض داشتن JSON معتبر و زبان انتخابی، پردازش میشود.
۴. کپی و استفاده برای گرفتن JSON ترجمه شده، دکمه "کپی" را کلیک کنید. آماده است تا مستقیماً در پروژه خود جایگذاری شود - نیازی به پاکسازی نیست.
۵. پاک کردن برای ترجمه بعدی وقتی آماده ترجمه فایل دیگری هستید، "پاک کردن همه" را بزنید. ابزار هر دو پنل را بلافاصله بازنشانی میکند.
مشکلات رایج و راهحلها
خطای "فرمت JSON نامعتبر" این پیام را زمانی میبینید که مشکل نحوی وجود دارد. متهمان معمول:
- کاما بین جفتهای کلید-مقدار از دست رفته
- کاما اضافی بعد از آخرین مورد (در جاوااسکریپت معتبر، در JSON نه)
- استفاده از تک نقل به جای دو نقل
- کاراکترهای خاص بدون محافظت در رشتهها
راهحل سریع: قبل از جایگذاری، JSON خود را در سایتی مانند JSONLint اعتبارسنجی کنید.
ترجمه بیصدا شکست میخورد اگر پنل خروجی خالی ماند:
- اتصال اینترنت خود را بررسی کنید - ترجمه نیاز به دسترسی API دارد
- مطمئن شوید زبان مقصد را انتخاب کردهاید
- با یک قطعه JSON کوچکتر امتحان کنید تا مشکل را جداسازی کنید
نتایج غیرمنتظره در ترجمه ترجمه ماشینی برای عبارات استاندارد خوب کار میکند اما در موارد زیر دچار مشکل میشود:
- اصطلاحات تخصصی یا عبارات خاص دامنه
- نامهای تجاری (که معمولاً باید بدون ترجمه بمانند)
- نحو جایگزینی مانند
{{username}}یا%s
برای کاربردهای تولیدی، از این ابزار به عنوان اولین مرحله استفاده کنید، سپس یک متخصص بومی محتوای تخصصی یا مشتری-محور را بررسی کند.
نکات حرفهای برای نتایج بهتر
رشتههای فنی را جداگانه نگه دارید اگر JSON شما متن مواجهه با کاربر را با شناسههای فنی ترکیب میکند، مدنظر داشته باشید آنها را جدا کنید. برای مثال:
1{
2 "display": {"welcome": "خوش آمدید"},
3 "config": {"apiKey": "abc123", "endpoint": "https://api.example.com"}
4}
5شیء display را جداگانه ترجمه کنید تا از پردازش تصادفی مقادیر config جلوگیری شود.
متن خود را با زمینه همراه کنید "ارسال" میتواند بسته به زمینه متفاوت ترجمه شود. "ارسال فرم" یا "ارسال پرداخت" به مترجمان (انسانی یا ماشینی) زمینه بهتری برای ترجمه دقیق میدهد.
با دادههای واقعی تست کنید قبل از ترجمه کل فایل i18n با ۵۰۰+ کلید، با یک نمونه کوچک که شامل همه انواع دادههای شما - رشتهها، اعداد، اشیاء تودرتو، آرایهها - تست کنید.
مثالهای کد
ترجمه JSON با جاوا اسکریپت
1// مثالی از چگونگی پیادهسازی عملکرد مشابه در جاوا اسکریپت
2function translateJsonStructure(jsonObj, targetLanguage) {
3 // تابع کمکی برای ترجمه یک رشته
4 function translateString(str, lang) {
5 // در یک پیادهسازی واقعی، این تابع یک API ترجمه را فراخوانی میکند
6 return `[${lang}] ${str}`;
7 }
8
9 // تابع بازگشتی برای عبور و ترجمه JSON
10 function processNode(node) {
11 if (node === null) return null;
12
13 if (typeof node === 'string') {
14 return translateString(node, targetLanguage);
15 }
16
17 if (Array.isArray(node)) {
18 return node.map(item => processNode(item));
19 }
20
21 if (typeof node === 'object') {
22 const result = {};
23 for (const key in node) {
24 result[key] = processNode(node[key]);
25 }
26 return result;
27 }
28
29 // اعداد، بولینها و غیره را بدون تغییر برگردانید
30 return node;
31 }
32
33 return processNode(jsonObj);
34}
35
36// مثال استفاده
37const sourceJson = {
38 "product": {
39 "name": "هدفون بیسیم",
40 "description": "هدفونهای بیسیم با کیفیت بالا با حذف نویز",
41 "features": ["بلوتوث 5.0", "عمر باتری 40 ساعته", "طراحی تاشو"],
42 "price": 99.99,
43 "inStock": true
44 }
45};
46
47const translatedJson = translateJsonStructure(sourceJson, "es");
48console.log(JSON.stringify(translatedJson, null, 2));
49ترجمه JSON با پایتون
1import json
2
3def translate_json_structure(json_obj, target_language):
4 """
5 ترجمه مقادیر رشتهای در یک شیء JSON با حفظ ساختار.
6
7 آرگومانها:
8 json_obj: شیء JSON تجزیه شده
9 target_language: کد زبان مقصد (مثل 'es', 'fr')
10
11 بازگشت:
12 شیء JSON ترجمه شده با ساختار حفظ شده
13 """
14 def translate_string(text, lang):
15 # در یک پیادهسازی واقعی، این تابع یک API ترجمه را فراخوانی میکند
16 return f"[{lang}] {text}"
17
18 def process_node(node):
19 if node is None:
20 return None
21
22 if isinstance(node, str):
23 return translate_string(node, target_language)
24
25 if isinstance(node, list):
26 return [process_node(item) for item in node]
27
28 if isinstance(node, dict):
29 result = {}
30 for key, value in node.items():
31 result[key] = process_node(value)
32 return result
33
34 # اعداد، بولینها و غیره را بدون تغییر برگردانید
35 return node
36
37 return process_node(json_obj)
38
39# مثال استفاده
40source_json = {
41 "user": {
42 "name": "جین اسمیت",
43 "bio": "توسعهدهنده نرمافزار و مشارکتکننده متنباز",
44 "skills": ["جاوا اسکریپت", "پایتون", "ریاکت"],
45 "active": True,
46 "followers": 245
47 }
48}
49
50translated_json = translate_json_structure(source_json, "fr")
51print(json.dumps(translated_json, indent=2))
52ترجمه JSON با PHP
1<?php
2/**
3 * ترجمه ساختار JSON با حفظ ساختار اصلی
4 *
5 * @param mixed $jsonObj شیء JSON تجزیه شده
6 * @param string $targetLanguage کد زبان مقصد
7 * @return mixed شیء JSON ترجمه شده
8 */
9function translateJsonStructure($jsonObj, $targetLanguage) {
10 // تابع کمکی برای ترجمه یک رشته
11 function translateString($text, $lang) {
12 // در یک پیادهسازی واقعی، این تابع یک API ترجمه را فراخوانی میکند
13 return "[$lang] $text";
14 }
15
16 // تابع بازگشتی برای پردازش هر گره
17 function processNode($node, $lang) {
18 if ($node === null) {
19 return null;
20 }
21
22 if (is_string($node)) {
23 return translateString($node, $lang);
24 }
25
26 if (is_array($node)) {
27 // بررسی اینکه آیا آرایه انجمنی (شیء) است یا اندیسبندی شده
28 if (array_keys($node) !== range(0, count($node) - 1)) {
29 // آرایه انجمنی (شیء)
30 $result = [];
31 foreach ($node as $key => $value) {
32 $result[$key] = processNode($value, $lang);
33 }
34 return $result;
35 } else {
36 // آرایه اندیسبندی شده
37 return array_map(function($item) use ($lang) {
38 return processNode($item, $lang);
39 }, $node);
40 }
41 }
42
43 // اعداد، بولینها و غیره را بدون تغییر برگردانید
44 return $node;
45 }
46
47 return processNode($jsonObj, $targetLanguage);
48}
49
50// مثال استفاده
51$sourceJson = [
52 "company" => [
53 "name" => "راهحلهای فناوری جهانی",
54 "description" => "شرکت نوآور توسعه نرمافزار",
55 "founded" => 2010,
56 "services" => ["توسعه وب", "اپلیکیشنهای موبایل", "راهحلهای ابری"],
57 "active" => true
58 ]
59];
60
61$translatedJson = translateJsonStructure($sourceJson, "de");
62echo json_encode($translatedJson, JSON_PRETTY_PRINT);
63?>
64کاربردهای دنیای واقعی
فایلهای i18n برای وباپلیکیشن
اکثر فریمورکهای مدرن مانند Next.js، React یا Vue ترجمهها را در فرمت JSON ذخیره میکنند. زمانی که نیاز به اضافه کردن یک زبان جدید به اپلیکیشن خود دارید، با انتخابی مواجه هستید: کپی و پیست دستی و ترجمه هر کلید (مستعد خطا)، یا استفاده از این ابزار برای تولید پیشنویس اولیه در عرض چند دقیقه.
یک سناریوی واقعی: اپلیکیشن شما en.json با بیش از 200 کلید ترجمه در دستهبندیهای تودرتو دارد - ناوبری، فرمها، پیامهای خطا، tooltips. شما به نسخههای فرانسوی و آلمانی تا اسپرینت بعدی نیاز دارید.
ورودی (en.json):
1{
2 "common": {
3 "welcome": "Welcome to our application",
4 "login": "Log in",
5 "signup": "Sign up",
6 "errorMessages": {
7 "required": "This field is required",
8 "invalidEmail": "Please enter a valid email address"
9 }
10 }
11}
12ترجمه به فرانسوی، دریافت fr.json با ساختار مشابه. کد شما همچنان به t('common.errorMessages.required') بدون تغییر مراجعه میکند.
آنچه که کارآمد یافتهام: تولید ترجمهها با این ابزار، سپس بررسی اجمالی توسط یک عضو تیم دوزبانه برای اصطلاحات تخصصی و برچسبهای دکمه. این موارد را شناسایی میکند که "ارسال" ممکن است نیاز به ترجمههای متفاوتی برای "ارسال فرم" در مقابل "ارسال پرداخت" داشته باشد.
محلیسازی پاسخ API
ساخت یک API که برای چندین کشور سرویس میدهد؟ شما به ساختارهای پاسخ یکنواخت در تمام زبانها نیاز دارید. یک API اطلاعرسانی ممکن است برگرداند:
1{
2 "status": "success",
3 "notification": {
4 "title": "Order Shipped",
5 "message": "Your order #12345 has been shipped",
6 "priority": 1,
7 "timestamp": 1678901234
8 }
9}
10اپلیکیشن موبایل شما notification.title و notification.message را تجزیه میکند. اگر ترجمه فرانسوی ساختار کلید را تغییر دهد، اپلیکیشن برای کاربران فرانسوی از کار میافتد.
این ابزار اطمینان میدهد که notification.title در هر زبانی همچنان notification.title باقی میماند، با تغییر فقط مقادیر رشتهای. کد مشتری شما در تمام محلهای زبانی یکسان کار میکند.
یک محدودیت برای توجه: ترجمه خودکار دامنه شما را درک نمیکند. "Shipped" در زمینه تجارت الکترونیک ممکن است متفاوت از زمینه لجستیک یا دریایی ترجمه شود. برای APIهای مواجهه با مشتری، خروجی را قبل از استقرار بررسی کنید.
ترجمه محتوای CMS بدون سر
پلتفرمهای CMS بدون سر مانند Contentful یا Strapi اغلب محتوا را به صورت JSON صادر میکنند. زمانی که 50 پست وبلاگ با متادیتای ساختارمند (نویسنده، برچسبها، URL تصاویر شاخص، تاریخ انتشار) دارید، میخواهید متن و عنوان را بدون دست زدن به متادیتا ترجمه کنید.
یک صادرات معمول شامل رشتههای محتوا و پیکربندی است:
- محتوا: متن مقاله، تیتر، چکیده
- ساختار: شناسههای نویسنده، مسیرهای تصویر، اسلاگ دستهبندی، timestamps
ترجمه دستی خطر تغییر اسلاگ از technology به tecnología را دارد که مسیریابی شما را خراب میکند. ترجمه با حفظ ساختار فقط فیلدهای محتوا را مدیریت میکند.
فایلهای پیکربندی برای استقرارهای چند منطقهای
استقرار در مناطق مختلف؟ فایلهای پیکربندی شما ممکن است نیاز به رشتههای محلیسازی شده داشته باشند در حالی که نقاط پایانی، اعتبارنامهها و پرچمهای ویژگی یکسان باقی میمانند:
1{
2 "region": "eu-west",
3 "welcomeMessage": "Welcome to our service",
4 "endpoint": "https://api.eu.example.com",
5 "retryAttempts": 3,
6 "features": {"darkMode": true}
7}
8welcomeMessage را به آلمانی ترجمه کنید در حالی که endpoint، retryAttempts و features را دست نخورده رها کنید.
مقایسه رویکردهای ترجمه
| روش | مناسب برای | سرعت | دقت | امنیت ساختار | هزینه |
|---|---|---|---|---|---|
| این ابزار | تولید سریع فایل i18n، پروتوتایپها، ابزارهای داخلی | فوری | خوب برای محتوای استاندارد | ۱۰۰٪ حفظ شده | رایگان |
| ترجمه گوگل (کپی/پیست) | عبارات تک، متون غیر فنی | فوری | متغیر | میشکند JSON | رایگان |
| ترجمه حرفهای | محتوای مشتریمحور، اسناد حقوقی، بازاریابی | روزها | عالی | نیاز به کار دستی | ۰.۰۸-۰.۱۵ دلار/کلمه |
| سیستمهای مدیریت ترجمه (Lokalise، Phrase) | اپلیکیشنهای سازمانی، گردش کار همکاری | ساعتها-روزها | عالی با بررسی | پشتیبانی داخلی JSON | $$$ به بالا |
زمان استفاده از این ابزار: پروژههای مرحله اولیه، تولید پیشنویس برای بررسی، کاربردهای داخلی که ترجمه دقیق بحرانی نیست.
زمان سرمایهگذاری در ترجمه حرفهای: محتوای مشتریمحور، متون حقوقی/انطباق، پیامهای برند، یا زمانی که ظرافت فرهنگی مهمتر از سرعت است.
ملاحظات فنی و موارد حاشیهای
آنچه ترجمه میشود (و آنچه نمیشود)
ابزار از بررسی نوع برای تعیین آنچه باید ترجمه شود استفاده میکند:
✅ ترجمه میشود:
- مقادیر رشتهای:
"Welcome"→"خوش آمدید" - رشتهها در آرایهها:
["Hello", "World"]→["سلام", "دنیا"] - رشتهها در هر سطح تودرتو
❌ ترجمه نمیشود:
- اعداد:
42،3.14،-10بدون تغییر میمانند - مقادیر بولی:
trueوfalseهمانطور باقی میمانند - Null:
nullهمچنانnullاست - کلیدهای شیء:
"userName"به عنوان کلید همچنان"userName"میماند - رشتههای خالی:
""همچنان""میماند
مدیریت کاراکترهای خاص
یونیکد و ایموجی ابزار UTF-8 را به درستی مدیریت میکند، بنابراین ایموجی و کاراکترهای غیر لاتین به خوبی کار میکنند:
1{"greeting": "👋 Hello"}
2به فارسی ترجمه میشود:
1{"greeting": "👋 سلام"}
2توالیهای فرار
توالیهای فرار JSON (\n، \t، \") حفظ میشوند:
1{"message": "Line 1\nLine 2"}
2\n در ترجمه دست نخورده باقی میماند.
جایگزینکنندهها
مشکل احتمالی اینجاست: اگر رشتههای شما شامل جایگزینکنندههایی مانند {username} یا %s هستند، ممکن است ترجمه شوند یا مجدداً مرتب شوند. در زبانهایی مانند فارسی با متن از راست به چپ، موقعیت جایگزینکنندهها ممکن است تغییر کند. این موارد را با دقت بررسی کنید.
عملکرد JSON بزرگ
ابزار وبمحور فایلهای i18n معمولی (زیر 500 کیلوبایت) را بدون مشکل مدیریت میکند. برای مجموعههای داده بزرگتر:
- 500 کیلوبایت - 2 مگابایت: کار میکند اما ممکن است در مرورگر کند باشد
- بیش از 2 مگابایت: تقسیم به بخشهای منطقی را در نظر بگیرید (مثلاً فایلهای جداگانه برای هر ویژگی یا بخش)
حافظه مرورگر عامل محدودکننده است، نه خود الگوریتم.
سؤالات متداول
چگونه این ابزار با چسباندن JSON در Google Translate متفاوت است؟
Google Translate با JSON مانند متن ساده برخورد میکند، یعنی تلاش میکند همه چیز را ترجمه کند - از جمله کلیدها، نویسههای نحوی و مقادیر عددی. خروجی شما مانند این خواهد بود:
1{ "nom d'utilisateur": "Jean Dupont", "âge": "vingt-cinq" }
2توجه کنید که "username" به "nom d'utilisateur" و عدد 25 به رشته "vingt-cinq" تبدیل شده است؟ کد شما فوراً خراب میشود.
این ابزار ساختار JSON را درک میکند و فقط مقادیر رشتهای را ترجمه میکند، کلیدها و سایر انواع داده را دست نمیزند.
آیا با JSON با تودرتویی عمیق و آرایهها کار میکند؟
بله. الگوریتم بازگشتی هر سطح از تودرتویی را پردازش میکند:
1{
2 "users": [
3 {"name": "John", "roles": ["admin", "editor"]},
4 {"name": "Jane", "roles": ["viewer"]}
5 ]
6}
7تمام مقادیر رشتهای ("John", "Jane", "admin", "editor", "viewer") را ترجمه میکند و در عین حال ساختار دقیق را حفظ میکند.
اگر JSON من محتوای انگلیسی و ترجمه شده داشته باشد چه میشود؟
ابزار هر رشتهای را که پیدا میکند ترجمه میکند، حتی اگر برخی از آنها از قبل به زبان مقصد باشند. اگر کلیدهای جدیدی به یک فایل ترجمه موجود اضافه میکنید، فقط بخش جدید را جداگانه ترجمه کنید، سپس نتایج را ادغام کنید.
آیا میتوانم از این برای فایلهای i18next یا react-intl استفاده کنم؟
کاملاً. ساختار خروجی با آنچه این چارچوبها انتظار دارند مطابقت دارد. یک فایل JSON i18next مانند:
1{"translation": {"welcome": "Hello", "goodbye": "Goodbye"}}
2به این صورت تبدیل میشود:
1{"translation": {"welcome": "Hola", "goodbye": "Adiós"}}
2فراخوانیهای t('translation.welcome') شما بدون تغییر کار میکنند.
دقت ترجمه خودکار برای محتوای فنی چقدر است؟
به متن بستگی دارد:
- متن عمومی رابط کاربری: "Save", "Cancel", "Submit" → معمولاً دقیق
- اصطلاحات فنی: "webhook", "OAuth2", "idempotent" → ممکن است اشتباه ترجمه شود یا همانطور باقی بماند
- اصطلاحات خاص حوزه: "patient record" (پزشکی) در مقابل "patient" (صبر) → متن اغلب از دست میرود
برای اپلیکیشنهای تولیدی، از این به عنوان اولین مرحله استفاده کنید، سپس توسط یک نفر اصطلاحات فنی و تخصصی بررسی شود.
در مورد زبانهایی با مجموعه نویسههای متفاوت (چینی، عربی، روسی) چه میشود؟
ابزار Unicode را به درستی پردازش میکند، بنابراین همه مجموعه نویسهها کار میکنند. چیزی که باید به آن توجه کرد: عربی و عبری از راست به چپ (RTL) هستند، که میتواند بر نحوه نمایش جایگزینها در رشتههای ترجمه شده تأثیر بگذارد. ساختار JSON همچنان صحیح است، اما متن ترجمه شده را از نظر خوانایی بررسی کنید.
آیا قالببندی من (تورفتگی، خط جدید) حفظ میشود؟
خروجی یک JSON معتبر است، اما قالببندی (فاصله سفید، تورفتگی) ممکن است با ورودی شما متفاوت باشد. اگر به قالببندی خاصی نیاز دارید، خروجی را با تنظیمات دلخواه خود از طریق یک JSON فرمتکننده عبور دهید.
آیا میتوانم مقادیر پیکربندی مانند URL یا کلیدهای API را ترجمه کنم؟
ابزار همه رشتهها را ترجمه میکند، از جمله URL و مقادیر پیکربندی. برای جلوگیری از این کار:
- JSON خود را به محتوای مواجهه با کاربر و پیکربندی تقسیم کنید
- فقط بخش محتوا را ترجمه کنید
- پیکربندی را بدون ترجمه نگه دارید
بهتر از همه، از ابتدا فایلهای خود را طوری ساختاربندی کنید که محتوای قابل ترجمه را از مقادیر فنی جدا کند.
آیا این رایگان است؟ محدودیت نرخ وجود دارد؟
ابزار وبمحور برای استفاده معمولی رایگان است. ترجمه با حجم بسیار بالا (صدها فایل در دقیقه) ممکن است به محدودیت نرخ در سرویس ترجمه زیرین برخورد کند. برای اکثر گردشهای کاری توسعه، به محدودیتها برنمیخورید.
مراجع و مطالعات بیشتر
برای درک عمیقتر از ساختار JSON، استانداردهای بینالمللیسازی و بهترین شیوهها:
-
ECMA-404: نحو تبادل دادههای JSON - مشخصات رسمی JSON توسط Ecma International که فرمت استاندارد را تعریف میکند: ecma-international.org/publications-and-standards/standards/ecma-404/
-
مستندات وب MDN: کار با JSON - راهنمای جامع Mozilla برای تجزیه، رشتهسازی و ساختار JSON: developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON
-
فعالیت بینالمللیسازی W3C (i18n) - استانداردها و بهترین شیوهها برای بینالمللیسازی وب: w3.org/International/
-
RFC 8259: فرمت تبادل دادههای JSON - مشخصات IETF برای نحو و معناشناسی JSON: datatracker.ietf.org/doc/html/rfc8259
شروع ترجمه فایلهای JSON
آیا نیاز دارید به سرعت فایلهای ترجمه برای اپلیکیشن چندزبانه خود تولید کنید؟ JSON خود را جایگذاری کنید، زبان مقصد را انتخاب کنید و بلافاصله ترجمههایی با حفظ ساختار دریافت کنید. با i18next، react-intl، vue-i18n و هر چارچوبی که ساختار JSON یکسان در زبانهای مختلف را انتظار دارد، کار میکند.
ترجمه را همین الان شروع کنید: