مترجم JSON الذي يحافظ على الهيكل | أداة i18n مجانية
مترجم JSON مجاني يحافظ على هيكلك كما هو. ترجمة ملفات i18n واستجابات API والـ JSON المتداخل مع الحفاظ على المفاتيح وأنواع البيانات والتنسيق. مثالي لتطبيقات i18next والتعدد اللغوي.
أداة ترجمة الهياكل الجاهزة
هذه الأداة تترجم محتوى كائنات 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:
1. التحليل والتحقق يتحقق الأداة أولاً من بناء JSON. إذا كنت تفتقد فاصلة أو لديك قوس إضافي، ستحصل على رسالة خطأ واضحة قبل بدء أي ترجمة - مما يوفر عليك الإخراج التالف.
2. المرور المتكرر بدءًا من الجذر، يمشي الخوارزمية عبر كل عقدة في شجرة JSON. لكل عنصر، يتحقق من نوع البيانات:
- سلسلة؟ إضافتها إلى قائمة الترجمة
- رقم، قيمة منطقية، فارغ؟ تخطيه تمامًا
- كائن أو مصفوفة؟ التكرار داخله
3. الترجمة الآمنة للأنواع
يتم إرسال قيم السلاسل فقط إلى واجهة برمجة التطبيقات للترجمة. "quantity": 42 تبقى 42، وليس "اثنان وأربعون". "isActive": true تبقى true، وليس "صحيح".
4. الحفاظ على المفاتيح
تبقى جميع مفاتيح الكائن بلغتها الأصلية. هذا أمر حاسم لأن translations.header.welcomeMessage يجب أن يكون نفس المسار في كل ملف لغة.
5. إعادة تجميع البنية يتم إدراج السلاسل المترجمة في نفس المواقع بالضبط، مع الحفاظ على جميع مستويات التداخل، وفهارس المصفوفة، والتسلسلات الهرمية للكائنات.
فخ شائع: يحاول بعض المطورين استخدام JSON.stringify() للكائن، وترجمة السلسلة بالكامل، ثم تحليلها مرة أخرى. هذا يكسر لأن المترجم يعدل المفاتيح والأقواس والبناء. يتجنب النهج المتكرر ذلك تمامًا.
استخدام المترجم الحافظ لهيكل JSON
دليل خطوة بخطوة
1. الصق JSON الخاص بك انسخ كائن JSON الخاص بك والصقه في اللوحة اليسرى. يتعامل الأداة مع أي JSON صالح - سواء كان كائنًا بسيطًا يحتوي على 5 مفاتيح أو هيكل متداخل عميق يحتوي على مصفوفات ومستويات متعددة.
2. اختر اللغة المستهدفة اختر من القائمة المنسدلة للغات: الإسبانية، الفرنسية، الألمانية، الإيطالية، البرتغالية، الصينية، اليابانية، الكورية، الروسية، وغيرها. إذا كنت تقوم بالترجمة لمشروع i18next، تأكد من تطابق رمز اللغة الذي يتوقعه الإطار.
3. احصل على الترجمة الفورية تظهر المخرجات المترجمة تلقائيًا في اللوحة اليمنى. لا توجد حاجة لزر "ترجمة" - يتم المعالجة بمجرد وجود JSON صالح ولغة محددة.
4. انسخ والاستخدام انقر على زر "نسخ" للحصول على JSON المترجم. إنه جاهز للصق مباشرة في مشروعك - دون الحاجة إلى تنظيف.
5. المسح للترجمة التالية اضغط على "مسح الكل" عندما تكون جاهزًا لترجمة ملف آخر. يعيد الأداة ضبط كلتا اللوحتين على الفور.
المشكلات الشائعة والحلول
خطأ "تنسيق JSON غير صالح" ستظهر هذه الرسالة عند وجود مشكلة في بناء الجملة. المسببات الشائعة:
- فاصلة مفقودة بين أزواج المفتاح والقيمة
- فاصلة زائدة بعد العنصر الأخير (صالحة في JavaScript، غير صالحة في 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 كامل يحتوي على 500+ مفتاح، قم بالاختبار مع عينة صغيرة تتضمن جميع أنواع البيانات الخاصة بك - السلاسل، الأرقام، الكائنات المتداخلة، المصفوفات.
أمثلة التعليمات البرمجية
ترجمة JSON باستخدام JavaScript
1// مثال على كيفية تنفيذ وظيفة مماثلة في JavaScript
2function translateJsonStructure(jsonObj, targetLanguage) {
3 // دالة مساعدة لترجمة سلسلة نصية
4 function translateString(str, lang) {
5 // في التنفيذ الفعلي، سيتم استدعاء واجهة برمجة التطبيقات الخاصة بالترجمة
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 باستخدام Python
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 # في التنفيذ الفعلي، سيتم استدعاء واجهة برمجة التطبيقات الخاصة بالترجمة
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": ["JavaScript", "Python", "React"],
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 // في التنفيذ الفعلي، سيتم استدعاء واجهة برمجة التطبيقات الخاصة بالترجمة
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 مفتاح ترجمة عبر فئات متداخلة—التنقل، النماذج، رسائل الخطأ، التلميحات. تحتاج إلى إصدارات بالفرنسية والألمانية بالsprint القادم.
الإدخال (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)
تبني واجهة برمجة تطبيقات تخدم دولًا متعددة؟ ستحتاج إلى هياكل استجابة متسقة عبر اللغات. قد تعيد واجهة برمجة التطبيقات للإشعارات:
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" في سياق التجارة الإلكترونية عن سياق الخدمات اللوجستية أو البحرية. بالنسبة لواجهات برمجة التطبيقات الموجهة للعملاء، راجع المخرجات قبل النشر.
توطين محتوى نظام إدارة المحتوى بدون واجهة (Headless CMS)
منصات نظام إدارة المحتوى بدون واجهة مثل Contentful أو Strapi غالبًا ما تصدر المحتوى كـ JSON. عندما يكون لديك 50 مقالًا مدونة مع بيانات وصفية منظمة (الكاتب، الوسوم، عناوين الصور المميزة، تواريخ النشر)، تريد ترجمة المتن والعنوان دون المساس بالبيانات الوصفية.
يتضمن التصدير النموذجي سلاسل المحتوى والتكوين:
- المحتوى: متن المقال، العنوان، المقتطف
- الهيكل: معرفات المؤلفين، مسارات الصور، الوسوم الفرعية للفئات، الطوابع الزمنية
الترجمة اليدوية تخاطر بتغيير الوسم الفرعي من 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}
8ترجم welcomeMessage إلى الألمانية مع ترك endpoint و retryAttempts و features كما هي.
مقارنة نهج الترجمة
| الطريقة | الأفضل لـ | السرعة | الدقة | سلامة الهيكل | التكلفة |
|---|---|---|---|---|---|
| هذه الأداة | إنشاء ملفات i18n بسرعة، النماذج الأولية، الأدوات الداخلية | فورية | جيدة للمحتوى القياسي | مُحفوظة 100٪ | مجانًا |
| ترجمة جوجل (نسخ/لصق) | العبارات الفردية، النصوص غير التقنية | فورية | متفاوتة | يكسر JSON | مجانًا |
| الترجمة المهنية | المحتوى الموجه للعملاء، الوثائق القانونية، التسويق | أيام | ممتازة | يتطلب عمل يدوي | 0.08-0.15 دولار/كلمة |
| أنظمة إدارة الترجمة (Lokalise، Phrase) | تطبيقات المؤسسات، سير عمل التعاون | ساعات-أيام | ممتازة مع المراجعة | دعم JSON مدمج | $$$ وما فوق |
متى تستخدم هذه الأداة: المشاريع في مراحلها الأولى، إنشاء مسودات للمراجعة، التطبيقات الداخلية حيث الترجمة المثالية ليست حاسمة.
متى يجب الاستثمار في الترجمة المهنية: المحتوى الموجه للعملاء، النصوص القانونية/الامتثال، رسائل العلامة التجارية، أو عندما تكون النuانس الثقافية أكثر أهمية من السرعة.
الاعتبارات التقنية والحالات الحدية
ما يتم ترجمته (وما لا يتم ترجمته)
يستخدم الأداة التحقق من النوع لتحديد ما يجب ترجمته:
✅ يتم ترجمته:
- القيم النصية:
"Welcome"→"مرحبًا" - السلاسل في المصفوفات:
["Hello", "World"]→["مرحبًا", "عالم"] - السلاسل على أي مستوى من التداخل
❌ لا يتم ترجمته:
- الأرقام:
42،3.14،-10تبقى دون تغيير - القيم المنطقية:
trueوfalseتبقى كما هي - القيمة الفارغة:
nullتبقىnull - مفاتيح الكائنات:
"userName"كمفتاح تبقى"userName" - السلاسل الفارغة:
""تبقى""
التعامل مع الأحرف الخاصة
Unicode والرموز التعبيرية يتعامل الأداة مع 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 Web Docs: العمل مع JSON - دليل موزيلا الشامل لتحليل 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 متسق عبر اللغات.
ابدأ الترجمة الآن: