מתרגם JSON לשמירה על מבנה תוכן רב-לשוני
תרגם תוכן JSON תוך שמירה על שלמות המבנה. מטפל באובייקטים מקוננים, מערכים ושומר על סוגי נתונים ליישום i18n חלק.
מתרגם שמירה על מבנה JSON
כלי זה מתרגם את תוכן אובייקטי ה-JSON תוך שמירה על המבנה שלהם. הדבק את ה-JSON שלך בלוח השמאלי, בחר שפת יעד, וראה את הפלט המתורגם בצד הימני.
איך להשתמש
- הדבק את אובייקט ה-JSON שלך בשדה JSON מקור.
- בחר את שפת היעד שלך מתוך תפריט הנפתח.
- ה-JSON המתורגם יופיע אוטומטית בלוח הימני.
- לחץ על כפתור ההעתקה כדי להעתיק את ה-JSON המתורגם ללוח שלך.
תיעוד
JSON Structure-Preserving Translator
مقدمة
مترجم هيكل JSON الذي يحافظ على الهيكل هو أداة متخصصة مصممة لترجمة محتوى كائنات JSON مع الحفاظ على الهيكل الأصلي وخصائصه سليمة. تتيح هذه الأداة القوية للمطورين ومديري المحتوى والمتخصصين في التوطين ترجمة بيانات JSON بسلاسة دون تعطيل البنية الأساسية أو كسر المراجع داخل كائن JSON. من خلال الحفاظ على الهيكل أثناء الترجمة، تقضي هذه الأداة على نقاط الألم الشائعة المرتبطة بترجمة تنسيقات البيانات المهيكلة، مما يجعلها موردًا أساسيًا لمشاريع التطوير الدولية وعمليات التوطين للمحتوى.
على عكس مترجمي النصوص التقليديين، تعالج هذه الأداة كائنات JSON بذكاء من خلال تحديد قيم النصوص القابلة للترجمة مع ترك أنواع البيانات غير النصية (الأرقام، القيم المنطقية، القيم الفارغة) والعناصر الهيكلية (المفاتيح، الأقواس، النقطتين) دون تغيير. تضمن هذه الطريقة أن يظل JSON المترجم صالحًا ومعادلًا وظيفيًا للأصلي، مما يسمح بالتنفيذ المباشر في التطبيقات متعددة اللغات دون الحاجة إلى تعديلات هيكلية أو تصحيح الأخطاء.
كيفية عمل الحفاظ على هيكل JSON
فهم هيكل JSON
JSON (تنسيق كائن الجافا سكريبت) هو تنسيق تبادل بيانات خفيف الوزن يستخدم نصوصًا قابلة للقراءة البشرية لتخزين ونقل كائنات البيانات. يتكون هيكل JSON النموذجي من:
- أزواج مفتاح-قيمة (مثل:
"name": "جون دو"
) - كائنات متداخلة (مثل:
"address": { "street": "123 الشارع الرئيسي", "city": "مدينة أي" }
) - مصفوفات (مثل:
"hobbies": ["قراءة", "سباحة", "تسلق الجبال"]
) - أنواع بيانات متنوعة (سلاسل، أرقام، قيم منطقية، فارغة، كائنات، مصفوفات)
عند ترجمة JSON لأغراض التدويل، من الضروري الحفاظ على هذا الهيكل مع تعديل قيم النصوص فقط التي تتطلب الترجمة.
عملية الترجمة
يتبع مترجم هيكل JSON الذي يحافظ على الهيكل هذه الخطوات لضمان ترجمة دقيقة مع الحفاظ على سلامة الهيكل:
- تحليل: يتم تحليل JSON المدخل إلى تمثيل في الذاكرة يحافظ على جميع العناصر الهيكلية.
- التنقل: تتنقل الأداة بشكل متكرر عبر هيكل JSON، مع تحديد قيم النصوص التي تحتاج إلى ترجمة.
- الحفاظ على النوع: تظل القيم غير النصية (الأرقام، القيم المنطقية، القيم الفارغة) دون تغيير.
- الحفاظ على المفتاح: تبقى مفاتيح الكائنات دون تغيير للحفاظ على الهيكل.
- الترجمة: يتم إرسال قيم النصوص فقط للترجمة إلى اللغة المستهدفة.
- إعادة التجميع: يتم إعادة إدخال النصوص المترجمة في الهيكل الأصلي.
- التسلسل: يتم تسلسل الهيكل المعدل مرة أخرى إلى تنسيق JSON صالح.
تضمن هذه العملية أن يحتفظ JSON الناتج بالتوازي الهيكلي المثالي مع المدخل، مع تغيير محتوى قيم النصوص فقط.
استخدام مترجم هيكل JSON الذي يحافظ على الهيكل
دليل خطوة بخطوة
-
الوصول إلى الأداة: انتقل إلى مترجم هيكل JSON الذي يحافظ على الهيكل في متصفح الويب الخاص بك.
-
أدخل JSON الخاص بك: ألصق كائن JSON الخاص بك في منطقة النص "JSON المصدر" على الجانب الأيسر من الواجهة. تقبل الأداة JSON صالح من أي تعقيد، بما في ذلك الكائنات المتداخلة والمصفوفات.
-
اختر اللغة المستهدفة: اختر اللغة المستهدفة المرغوبة من قائمة السحب. تدعم الأداة عدة لغات بما في ذلك الإسبانية، الفرنسية، الألمانية، الإيطالية، البرتغالية، الصينية، اليابانية، الكورية، والروسية.
-
عرض الترجمة: ستظهر JSON المترجمة تلقائيًا في لوحة "JSON المترجم" على الجانب الأيمن من الواجهة، مع الحفاظ على الهيكل الدقيق لJSON الأصلي.
-
نسخ النتائج: انقر على زر "نسخ" لنسخ JSON المترجمة إلى الحافظة الخاصة بك لاستخدامها في تطبيقك أو مشروعك.
-
مسح وإعادة تعيين: استخدم زر "مسح الكل" لإعادة تعيين كلا الحقلين المدخلات والمخرجات إذا كنت بحاجة إلى بدء ترجمة جديدة.
التعامل مع الأخطاء
إذا واجهت أي مشاكل أثناء استخدام المترجم، توفر الأداة رسائل خطأ مفيدة:
-
تنسيق JSON غير صالح: إذا كان JSON المدخل يحتوي على أخطاء في التركيب، ستعرض الأداة رسالة خطأ تشير إلى أن تنسيق JSON غير صالح. تحقق من مدخلاتك بحثًا عن الأقواس المفقودة، أو الفواصل، أو مشاكل التركيب الأخرى.
-
أخطاء الترجمة: في حالات نادرة حيث تفشل الترجمة، ستقوم الأداة بإعلامك. قد يحدث هذا بسبب مشاكل في الاتصال أو مشاكل في خدمة الترجمة.
نصائح للحصول على نتائج مثالية
- تحقق من صحة JSON الخاص بك: قبل الترجمة، تأكد من أن JSON الخاص بك صالح باستخدام مدقق JSON.
- استخدم قيم نصوص واضحة: عادةً ما تترجم النصوص الأكثر وضوحًا وسياقًا بدقة أكبر.
- راجع الترجمات: دائمًا راجع المخرجات المترجمة، خاصةً للمحتوى الفني أو الخاص بالمجال.
- تعامل مع الملفات الكبيرة: بالنسبة لملفات JSON الكبيرة جدًا، فكر في تقسيمها إلى أجزاء أصغر للترجمة.
أمثلة على التعليمات البرمجية
ترجمة 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 Args:
8 json_obj: الكائن JSON المحلل
9 target_language: رمز اللغة المستهدفة (مثل: 'es', 'fr')
10
11 Returns:
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) لتطبيقات الويب
يعتبر مترجم هيكل JSON الذي يحافظ على الهيكل ذا قيمة خاصة لتدويل تطبيقات الويب. غالبًا ما تخزن تطبيقات الويب الحديثة سلاسل التوطين في تنسيق JSON، وتتيح هذه الأداة للمطورين:
- ترجمة ملفات اللغة الموجودة لدعم مواقع جديدة
- تحديث ملفات الترجمة عند إضافة محتوى جديد
- ضمان الاتساق عبر جميع إصدارات اللغة
- الحفاظ على التوافق مع أطر العمل i18n مثل i18next، react-intl، أو vue-i18n
على سبيل المثال، قد يبدو ملف i18n JSON النموذجي كما يلي:
1{
2 "common": {
3 "welcome": "مرحبًا بك في تطبيقنا",
4 "login": "تسجيل الدخول",
5 "signup": "إنشاء حساب",
6 "errorMessages": {
7 "required": "هذا الحقل مطلوب",
8 "invalidEmail": "يرجى إدخال عنوان بريد إلكتروني صالح"
9 }
10 }
11}
12
باستخدام مترجم هيكل JSON الذي يحافظ على الهيكل، يمكن للمطورين بسرعة إنشاء ملفات مكافئة لعدة لغات مع الحفاظ على الهيكل المتداخل الذي يتوقعه تطبيقهم.
توطين استجابات واجهة برمجة التطبيقات
تحتاج واجهات برمجة التطبيقات التي تخدم المستخدمين الدوليين غالبًا إلى تقديم استجابات محلية. يسهل مترجم هيكل JSON الذي يحافظ على الهيكل:
- الترجمة عند الطلب لاستجابات واجهة برمجة التطبيقات
- إنشاء قوالب استجابة مترجمة مسبقًا
- اختبار نقاط نهاية واجهة برمجة التطبيقات متعددة اللغات
- التحقق من صحة هياكل JSON المحلية
أنظمة إدارة المحتوى
تخزن أنظمة إدارة المحتوى غالبًا المحتوى في تنسيقات JSON المهيكلة. تساعد هذه الأداة مديري المحتوى في:
- ترجمة كتل المحتوى مع الحفاظ على البيانات الوصفية
- الحفاظ على العلاقات بين قطع المحتوى
- ضمان أن تعمل قوالب المحتوى الديناميكية عبر اللغات
- الحفاظ على تنسيق خاص أو معلمات تكوين
ترجمة الوثائق
غالبًا ما تستخدم الوثائق الفنية JSON لأمثلة التكوين أو مراجع واجهة برمجة التطبيقات. يساعد فريق الوثائق في:
- ترجمة مقتطفات التعليمات البرمجية كمثال للوثائق الدولية
- الحفاظ على الدقة في الأمثلة الفنية
- ضمان بقاء أمثلة التعليمات البرمجية صالحة عبر جميع إصدارات اللغة
مقارنة مع طرق الترجمة الأخرى
الميزة | مترجم هيكل JSON الذي يحافظ على الهيكل | مترجمي النصوص العامة | الترجمة اليدوية | أنظمة إدارة الترجمة |
---|---|---|---|---|
الحفاظ على الهيكل | ✅ الحفاظ التام | ❌ غالبًا ما يكسر هيكل JSON | ✅ يعتمد على مهارة المترجم | ⚠️ يختلف حسب النظام |
جودة الترجمة | ⚠️ آلي (جيد للمحتوى البسيط) | ⚠️ آلي (قد يفتقر إلى السياق) | ✅ جودة عالية مع المترجمين البشريين | ✅ جودة عالية مع المراجعة البشرية |
السرعة | ✅ فورية | ✅ فورية | ❌ بطيء | ⚠️ معتدل |
التعامل مع الهياكل المتداخلة | ✅ ممتاز | ❌ ضعيف | ⚠️ عرضة للأخطاء | ⚠️ يختلف حسب النظام |
المعرفة التقنية المطلوبة | ⚠️ فهم أساسي لـ JSON | ❌ لا شيء | ❌ لا شيء | ⚠️ معرفة خاصة بالنظام |
مناسب للملفات الكبيرة | ✅ نعم | ⚠️ قد تكون هناك قيود | ❌ تستغرق وقتًا طويلاً | ✅ نعم |
المعرفة التقنية المطلوبة | ⚠️ فهم أساسي لـ JSON | ❌ لا شيء | ❌ لا شيء | ⚠️ معرفة خاصة بالنظام |
التعامل مع الحالات الخاصة
المراجع الدائرية
لا يدعم JSON المراجع الدائرية بشكل أصلي، ولكن قد تحتوي بعض كائنات JavaScript عليها. عند تسلسلها إلى JSON، ستسبب هذه المراجع أخطاء. يتعامل مترجم هيكل JSON الذي يحافظ على الهيكل مع ذلك عن طريق:
- اكتشاف المراجع الدائرية أثناء التنقل
- الحفاظ على خريطة الكائنات التي تمت زيارتها لمنع التكرار اللانهائي
- الحفاظ على الهيكل دون التسبب في أخطاء المراجع الدائرية في الناتج
القيم غير النصية
تعالج الأداة المحتوى المختلط بذكاء:
- السلاسل: تترجم إلى اللغة المستهدفة
- الأرقام: تحافظ على حالتها كما هي (مثل:
42
تبقى42
) - القيم المنطقية: تحافظ على حالتها كما هي (مثل:
true
تبقىtrue
) - فارغ: تحافظ على حالتها كما هي (
null
تبقىnull
) - الكائنات: يتم الحفاظ على الهيكل، مع ترجمة قيم النصوص داخلها
- المصفوفات: يتم الحفاظ على الهيكل، مع ترجمة قيم النصوص داخلها
الأحرف الخاصة والترميز
تتعامل الأداة بشكل صحيح مع:
- أحرف Unicode في لغات متعددة
- كيانات HTML داخل النصوص
- تسلسلات الهروب في سلاسل JSON
- أحرف التنسيق الخاصة
هياكل JSON الكبيرة
بالنسبة لهياكل JSON الكبيرة جدًا، يقوم المترجم:
- بمعالجة الهيكل بكفاءة باستخدام التنقل المتكرر
- الحفاظ على كفاءة الذاكرة بعدم تكرار القيم غير النصية
- توفير ملاحظات واضحة أثناء عملية الترجمة
الأسئلة المتداولة
ما هو مترجم هيكل JSON الذي يحافظ على الهيكل؟
مترجم هيكل JSON الذي يحافظ على الهيكل هو أداة متخصصة تترجم المحتوى النصي داخل كائنات JSON مع الحفاظ على الهيكل بالضبط، والتنسيق، والقيم غير النصية من JSON الأصلي. يضمن أن يظل JSON المترجم صالحًا ومعادلًا وظيفيًا لـ JSON المصدر، مع تغيير المحتوى القابل للقراءة من الإنسان فقط إلى اللغة المستهدفة.
كيف تتعامل الأداة مع الكائنات المتداخلة في JSON؟
تستخدم الأداة التنقل المتكرر لمعالجة الكائنات المتداخلة في JSON. تتنقل عبر جميع مستويات التعشيش، مع ترجمة قيم النصوص في كل مستوى مع الحفاظ على الهيكل الهرمي، ومفاتيح الكائن، والقيم غير النصية. يضمن ذلك أن تظل الكائنات المتداخلة في JSON سليمة بعد الترجمة.
هل يمكن للمترجم التعامل مع المصفوفات في JSON؟
نعم، تدعم الأداة المصفوفات في JSON بشكل كامل. تعالج كل عنصر في المصفوفة بشكل فردي، مع ترجمة قيم النصوص بينما تحافظ على هيكل المصفوفة وأي عناصر غير نصية. يعمل هذا مع المصفوفات البسيطة من النصوص وكذلك المصفوفات المعقدة التي تحتوي على أنواع بيانات مختلطة أو كائنات متداخلة.
هل ستقوم الأداة بتعديل مفاتيحي JSON الخاصة بي؟
لا، تم تصميم الأداة للحفاظ على هيكل JSON الخاص بك، والذي يتضمن الحفاظ على جميع المفاتيح دون تغيير. يتم ترجمة قيم النصوص فقط، وليس المفاتيح نفسها. يضمن ذلك أن يتمكن الكود الخاص بك من الإشارة إلى نفس أسماء الخصائص بعد الترجمة.
هل هذه الأداة متوافقة مع i18next؟
بينما لم يتم بناء مترجم هيكل JSON الذي يحافظ على الهيكل خصيصًا لـ i18next، فإنه ينتج مخرجات متوافقة مع i18next وأطر التدويل المماثلة. يحتفظ JSON المترجم بالهيكل المتداخل المتوقع من قبل هذه الأطر، مما يجعله مناسبًا لإنشاء ملفات التوطين لتطبيقات تعتمد على i18next.
ما مدى دقة الترجمات؟
تستخدم الأداة خدمات الترجمة الآلية، والتي توفر نتائج جيدة للمحتوى العام ولكن قد لا تلتقط المعاني الدقيقة أو المصطلحات الخاصة بالسياق بشكل مثالي. للحصول على ترجمات ذات جودة احترافية، يُنصح بأن يقوم مترجم بشري بمراجعة وتحسين المخرجات، خاصةً للمحتوى الموجه للعملاء.
هل يمكنني ترجمة JSON مع قيم غير نصية؟
نعم، يتعامل المترجم بذكاء مع المحتوى المختلط. سيترجم فقط قيم النصوص بينما يحافظ على الأرقام، والقيم المنطقية، والقيم الفارغة، والعناصر الهيكلية تمامًا كما تظهر في JSON الأصلي. يضمن ذلك الحفاظ على سلامة بياناتك طوال عملية الترجمة.
كيف أتعامل مع أخطاء الترجمة؟
إذا واجهت أخطاء في الترجمة، تحقق أولاً من أن مدخلاتك هي JSON صالح. توفر الأداة رسائل خطأ لأخطاء بناء جملة JSON غير صالح. إذا كان JSON صالحًا ولكن الترجمة فشلت، حاول تقسيم الهياكل المعقدة إلى أجزاء أصغر أو تحقق من وجود أحرف أو تنسيق غير عادي قد يسبب مشاكل.
هل هناك حد لحجم ترجمة JSON؟
يمكن للأداة المستندة إلى الويب التعامل مع كائنات JSON ذات الحجم المعتدل، ولكن قد تتسبب الملفات الكبيرة جدًا (عدة ميغابايت) في مشاكل في الأداء في المتصفح. بالنسبة لهياكل JSON الكبيرة جدًا، فكر في تقسيمها إلى وحدات منطقية أصغر للترجمة أو استخدام تنفيذ من جانب الخادم لوظائف مماثلة.
هل يمكنني ترجمة ملفات JSON لعدة لغات في وقت واحد؟
لا، يتم تنفيذ الترجمة الحالية للغة مستهدفة واحدة في كل مرة. لدعم لغات متعددة، ستحتاج إلى إجراء ترجمات منفصلة لكل لغة مستهدفة. ومع ذلك، فإن العملية سريعة ويمكن تكرارها بسهولة لكل لغة تحتاج إلى دعمها.
المراجع
-
"JSON (تنسيق كائن الجافا سكريبت)." json.org. تم الوصول إليه في 10 يوليو 2025.
-
Ecma International. "المعيار ECMA-404: صيغة تبادل بيانات JSON." ecma-international.org. تم الوصول إليه في 10 يوليو 2025.
-
"i18next: إطار العمل للتدويل." i18next.com. تم الوصول إليه في 10 يوليو 2025.
-
Mozilla Developer Network. "العمل مع JSON." developer.mozilla.org. تم الوصول إليه في 10 يوليو 2025.
-
W3C. "التدويل (i18n)." w3.org. تم الوصول إليه في 10 يوليو 2025.
جربها الآن
هل أنت مستعد لترجمة JSON الخاص بك مع الحفاظ على هيكله؟ استخدم أداة مترجم هيكل JSON الذي يحافظ على الهيكل الآن لإنشاء ترجمات دقيقة بسرعة تحافظ على سلامة هيكل بياناتك. ما عليك سوى لصق JSON الخاص بك، اختيار لغتك المستهدفة، والحصول على نتائج فورية يمكنك تنفيذها مباشرة في تطبيقاتك متعددة اللغات.
משוב
לחץ על הפיצוץ משוב כדי להתחיל לתת משוב על כלי זה
כלים קשורים
גלה עוד כלים שעשויים להיות שימושיים עבור זרימת העבודה שלך