ترجمة ملفات JSON لتعدد اللغات
تترجم هذه الأداة ملف JSON يحوي نصوصًا مخصصة لتعدد اللغات في تطبيق أو موقع، فتنقل قيمة كل مفتاح إلى اللغة الهدف وتترك أسماء المفاتيح وبنية الملف كما هي تمامًا، فيخرج ملف جاهز للاستيراد المباشر في نظام الترجمة دون أي تعديل يدوي على البنية.
شغّلها أونلاين
شغّل هذه المهمة على خوادمنا باستخدام حسابك. الأدوات المجانية تعمل داخل متصفحك، أما هذه فتُخصم من رصيدك في KIT حسب السعر الموضّح أعلاه.
لماذا لا يكفي مترجم نص عادي هنا
لصق محتوى ملف JSON كاملاً في مترجم نص عادي يترجم كل شيء بما فيها أسماء المفاتيح نفسها، فتخرج نسخة لا يفهمها التطبيق لأن الكود يبحث عن اسم المفتاح الأصلي بحروفه اللاتينية بالضبط. تقرأ هذه الأداة بنية الملف أولًا، فتميّز المفتاح عن قيمته، وتترجم القيمة النصية فقط تاركة اسم المفتاح كما هو، فيبقى الملف صالحًا للاستيراد المباشر في نظام الترجمة الخاص بالتطبيق.
القيم المتداخلة والمصفوفات
ملفات الترجمة الحقيقية نادرًا ما تكون مستوى واحدًا مسطحًا؛ غالبًا كائنات متداخلة داخل كائنات، أو مصفوفات من الجمل ضمن مفتاح واحد كرسائل الأخطاء المتعددة. تتتبع الأداة كل مستوى من التداخل وتترجم كل قيمة نصية تجدها أينما كانت، محافظة على نفس مستوى التداخل والترتيب في الملف الناتج، دون تسطيح البنية أو فقدان أي مفتاح فرعي أثناء المعالجة.
العناصر النائبة داخل الجملة
بعض القيم تحوي عنصرًا نائبًا سيُستبدل ببيانات فعلية عند التشغيل، مثل {{name}} أو %s داخل جملة ترحيب. تتعرف الأداة على هذه العناصر وتُبقيها كما هي دون ترجمة أو تحريك موضعها داخل الجملة، فتظل الجملة صالحة للعمل بعد الترجمة تمامًا كما كانت قبلها، مع تكيف بقية النص المحيط بها مع ترتيب اللغة الهدف.
السعر بحساب المفاتيح
يُحتسب السعر بعدد مفاتيح الملف لا بعدد الكلمات: $0.003 للطلب و$0.0135 عن كل مفتاح مُترجَم، بصرف النظر عن طول النص داخل كل مفتاح. ملف واجهة صغير من خمسين مفتاحًا يكلف أقل من $1 إضافي فوق السعر الثابت.
حالات الاستخدام
تطبيق جوال بأكثر من لغة
يضيف عبدالله المنصوري لغة إنجليزية جديدة لتطبيق جوال كتبه أصلًا بالعربية، ويترجم ملف الترجمة JSON دفعة واحدة عبر الـAPI دون لمس أسماء المفاتيح التي يعتمد عليها الكود.
لوحة تحكم داخلية بلغتين
يحتاج فريق تقنية المعلومات في شركة الخليج الرقمية لوحة تحكم داخلية بالعربية والإنجليزية معًا، فيترجم ملف الواجهة مرة واحدة ويحتفظ بنسختين متزامنتين في البنية.
رسائل الأخطاء في نظام حجز
تترجم مؤسسة النخيل للمقاولات رسائل الأخطاء والتنبيهات في نظام حجز مواعيد داخلي إلى الإنجليزية لموظفين أجانب، دون المساس بمفاتيح الأخطاء التي يقرأها الكود مباشرة.
الأسئلة الشائعة
هل تُترجَم أسماء المفاتيح أيضًا؟
لا، أبدًا؛ اسم المفتاح جزء من بنية الكود ويبقى كما هو بحروفه اللاتينية الأصلية، والقيمة النصية المقابلة له فقط هي ما يُترجَم.
هل تدعم الأداة الملفات المتداخلة بعدة مستويات؟
نعم، تتبع الأداة أي عدد من مستويات التداخل داخل الكائنات والمصفوفات، وتترجم كل قيمة نصية أينما وجدت دون تسطيح البنية.
ماذا يحدث للعناصر النائبة مثل {{name}}؟
تبقى كما هي دون ترجمة أو تحريك، وتتكيف صياغة الجملة المحيطة بها مع ترتيب اللغة الهدف.
كيف يُحتسب السعر لملف كبير؟
بعدد المفاتيح لا الكلمات: $0.003 للطلب و$0.0135 عن كل مفتاح، بصرف النظر عن طول النص داخل كل قيمة.
هل يمكن ترجمة عدة ملفات لغات دفعة واحدة عبر الـAPI؟
نعم، يمكن إرسال كل ملف كطلب مستقل، وجدولة عدد كبير منها ضمن مسار نشر واحد.
ماذا لو كان الملف يحوي قيمًا غير نصية مثل أرقام أو true وfalse؟
تبقى القيم غير النصية كما هي دون أي تعديل؛ الترجمة تقتصر على السلاسل النصية فقط.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/translate/json \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/translate/json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/translate/json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/translate/json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/translate/json", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"input": "…"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "translate.json",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_tokens | 20000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
422 | task_failed | لم تنجح معالجة المهمة، ولن تُحتسب عليك؛ أعد المحاولة أو راسلنا مباشرة. |