بدء ترجمة خلفية جماعية للمستندات المنشورة لمخطط ما إلى اللغات المستهدفة.
إدراج ترجمة خلفية غير متزامنة لجميع المستندات المنشورة من مخطط مكوّن واحد أو أكثر إلى مجموعة من اللغات المستهدفة. تُضاف النتائج أو تُحدّث في جدول translations عند اكتمال كل ترجمة.
نقطة النهاية: POST /translation
المصادقة: Bearer JWT (WorkOS)
{
"websiteId": "<uuid>",
"schemaNames": ["post", "hero"],
"languages": ["fr", "es", "de"]
}
| الحقل | النوع | مطلوب | الملاحظات |
|---|---|---|---|
websiteId | uuid | نعم | الموقع الذي يحتوي على المستندات المصدر. |
schemaNames | string[] | نعم* | مخططات المكوّنات المراد ترجمتها. تُزال الأسماء المكررة. |
schemaName | string | نعم* | بديل قديم لإرسال مخطط واحد. |
languages | string[] | نعم | رموز اللغات المستهدفة المدعومة. تُزال الرموز المكررة. |
* يجب توفير schemaNames أو schemaName.
لا تُؤخذ في الاعتبار إلا المستندات المنشورة التي تحتوي على محتوى منشور غير فارغ.
{
"job_id": "<uuid>",
"website_id": "<uuid>",
"schema_name": null,
"schema_names": ["post", "hero"],
"languages": ["fr", "es", "de"],
"status": "queued",
"documents_processed": 12,
"translations_scheduled": 30,
"translations_skipped": 6,
"translations_completed": 0,
"translations_failed": 0,
"reused": false,
"created_at": "2026-07-15T18:00:00Z",
"updated_at": "2026-07-15T18:00:00Z"
}
تُرجع ما يلي:
202 Accepted عند وضع الترجمات في قائمة الانتظار200 OK عندما تكون كل ترجمة محدثة بالفعل| الحقل | الوصف |
|---|---|
job_id | المعرّف المستخدم لاسترداد تقدم المهمة. |
status | الحالة الحالية للمهمة. |
documents_processed | عدد المستندات المصدر المؤهلة التي تم العثور عليها. |
translations_scheduled | عدد أزواج المستند واللغة الموضوعة في قائمة الانتظار. |
translations_skipped | عدد العناصر التي تم تخطيها لأن تجزئات المصدر الخاصة بها محدثة. |
translations_completed | عدد الترجمات المكتملة بنجاح. |
translations_failed | عدد الترجمات التي فشلت. |
reused | ما إذا كانت الاستجابة تشير إلى مهمة نشطة موجودة مسبقًا. |
حالات المهمة المحتملة هي:
preparingqueuedrunningcompletedcompleted_with_errorsfailedيخزّن كل زوج من المستند واللغة تجزئة SHA-256 للمحتوى المنشور للمستند المصدر.
يتم تخطي الترجمة عندما تتطابق تجزئة المصدر المخزنة مع المحتوى المنشور الحالي. يتيح ذلك استدعاء نقطة النهاية بشكل متكرر دون إعادة ترجمة المحتوى الذي لم يتغير.
إذا تغير المحتوى المنشور أثناء وجود مهمة مكافئة نشطة، ترفض الخدمة الطلب الجديد. أرسله مرة أخرى بعد انتهاء المهمة النشطة.
تُنفّذ الترجمة بشكل غير متزامن بعد الاستجابة الأولية.
completed_with_errors.curl -X POST '{TRANSLATION_API_URL}/translation' \
-H 'Authorization: Bearer <workos-jwt>' \
-H 'Content-Type: application/json' \
-d '{
"websiteId": "<uuid>",
"schemaNames": ["post", "hero"],
"languages": ["fr", "es"]
}'
400 Bad Request — المخططات أو اللغات مفقودة، أو اللغة غير مدعومة، أو أن الدفعة تتجاوز الحد المكوّن401 Unauthorized — رمز الحامل مفقود أو غير صالح409 Conflict — يوجد عمل مطابق نشط، لكن محتوى المصدر المنشور تغيّر500 Internal Server Error — تعذّر إعداد المستندات المصدر أو فشلت عملية في قاعدة البياناتاسترداد أحدث تقدم لمهمة ترجمة.
نقطة النهاية: GET /translation-jobs/{job_id}
المصادقة: Bearer JWT (WorkOS)
تستخدم الاستجابة كائن المهمة نفسه الذي يعيده POST /translation، مع تحديث الحالة وأعداد التقدم.
{
"job_id": "<uuid>",
"website_id": "<uuid>",
"schema_name": null,
"schema_names": ["post", "hero"],
"languages": ["fr", "es"],
"status": "running",
"documents_processed": 12,
"translations_scheduled": 24,
"translations_skipped": 0,
"translations_completed": 16,
"translations_failed": 1,
"reused": false,
"created_at": "2026-07-15T18:00:00Z",
"updated_at": "2026-07-15T18:01:30Z"
}
curl '{TRANSLATION_API_URL}/translation-jobs/<job-id>' \
-H 'Authorization: Bearer <workos-jwt>'
401 Unauthorized — رمز الحامل مفقود أو غير صالح404 Not Found — المهمة غير موجودة أو لم تعد محفوظةتُحفظ مهام الترجمة حاليًا في الذاكرة. تُفقد حالة المهمة عند إعادة تشغيل خدمة الترجمة، وتتطلب عمليات النشر متعددة النسخ توجيهًا ثابتًا.