الانتقال إلى المحتوى الرئيسي

بوابة الجودة

تمر كل ترجمة عبر بوابة تحقق حتمية قبل كتابتها على القرص. تلتقط بوابة الجودة أنماط الفشل الشائعة في الترجمة الآلية — لا تراجعات صامتة، ولا كتابة بيانات تالفة في ملفات اللغة الخاصة بك.

فحوصات التحقق

الفحصما الذي يلتقطهتسمية البوابة
فارغ/خالٍأعاد النموذج سلسلة فارغة أو مسافات بيضاء[GATE] empty
تكرار المصدرأعاد النموذج المدخل الإنجليزي الأصلي[GATE] source-echo
حلقة هلوسةأنماط ثلاثيات متكررة (مثل "Qo' Qo' Qo'")[GATE] hallucination
تضخم الطولالمخرجات أطول بكثير من المصدر[GATE] length
مطابقة نظام الكتابةنظام كتابة خاطئ للغة الهدف[GATE] script
فئات الجمع في ICUصيغ جمع مطلوبة مفقودة للغة[GATE] icu-plural

فارغ/خالٍ

يرفض الترجمات التي تكون سلاسل فارغة، أو مسافات بيضاء فقط، أو null. يلتقط هذا الفحص النماذج التي لا تُعيد شيئًا للمفاتيح الصعبة.

تكرار المصدر

يكتشف عندما يُعيد النموذج النص الإنجليزي المصدر بدلًا من ترجمته. يحدث هذا كثيرًا مع السلاسل القصيرة والتعليمات غير المحددة بدقة.

حلقة هلوسة

يحلل أنماط الثلاثيات (مجموعات من 3 أحرف) في المخرجات. إذا تكررت أي ثلاثية أكثر من عدد معين من المرات نسبةً إلى طول المخرجات، تُرفض الترجمة. يلتقط هذا الفحص المخرجات المنحطة مثل "Qo' Qo' Qo' Qo' Qo'".

تضخم الطول

يرفض الترجمات التي يتجاوز طول مخرجاتها maxLengthRatio × source length (الافتراضي: 4×). يلتقط هذا الفحص هلوسات النموذج التي تُنتج جدرانًا من النصوص لمدخل قصير.

قابل للتهيئة عبر maxLengthRatio في ملف التهيئة الخاص بك.

مطابقة نظام الكتابة

بالنسبة للغات التي لديها حقل script مُهيأ (مثل "script": "cans" للمقاطع الصوتية للغة كري السهول)، يتحقق من أن المخرجات تحتوي على أحرف غير ASCII مناسبة لنظام الكتابة المستهدف. تُرفض المخرجات اللاتينية فقط للغة عربية أو لغات شرق آسيا (CJK) أو المقاطع الصوتية.

ماذا يحدث عند الفشل

  1. تُسجَّل الترجمة الفاشلة في stderr مع بادئة [GATE] واسم المفتاح والسبب ومعاينة للقيمة
  2. لا يُكتب المفتاح في ملف اللغة
  3. يبدأ تسلسل إعادة المحاولة (انظر أدناه)
[GATE] hero.title: source-echo — "Welcome to our platform"
[GATE] nav.about: hallucination — "À À À À À À À À"

تسلسل إعادة المحاولة

عند فشل دفعة (خطأ في تحليل JSON أو رفض من بوابة الجودة)، يعيد champollion المحاولة بدفعات أصغر تدريجيًا:

Full batch (80 keys) → parse error
└→ Half batch (40 keys) → 2 failures
└→ Individual keys (1 each) → isolates the 2 problem keys

تُحدَّد ميزانية إعادة المحاولة بواسطة maxRetries (الافتراضي: 3، قابلة للتهيئة لكل لغة). يمنع هذا الإنفاق الجامح للرموز على المفاتيح التي تفشل باستمرار.

بعد استنفاد إعادات المحاولة، تُسجَّل المفاتيح المشكِلة وتُتخطى. ستُعاد محاولتها في التشغيل التالي لـ sync.

التخزين المؤقت للتعليمات

يتم فصل رسالة النظام (الأسلوب، قواعد النحو، ملاحظات النمط) عن رسالة المستخدم (المفاتيح المراد ترجمتها). هذا الفصل مقصود:

  • رسالة النظام متطابقة عبر الدفعات للغة معينة
  • مزودون مثل Anthropic و Google يخزنون رسائل النظام المتكررة مؤقتًا
  • النتيجة: الدفعة الأولى تدفع التكلفة الكاملة للرموز، والدفعات اللاحقة تدفع فقط مقابل رسالة المستخدم

يمكن أن يقلل هذا بشكل كبير من تكاليف الرموز للمشاريع ذات الدفعات الكثيرة.

التحقق من ICU MessageFormat

يتحقق أمر integrity من أنماط الجمع في ICU MessageFormat مقابل قواعد الجمع في CLDR. إذا كان ملف المصدر الخاص بك يستخدم صيغة ICU مثل:

"items": "{count, plural, one {# item} other {# items}}"

يتحقق Champollion من أن النسخ المترجمة تتضمن جميع فئات الجمع المطلوبة للغة الهدف. على سبيل المثال، تتطلب اللغة العربية ست فئات (zero، one، two، few، many، other) — وليس فقط one وother.

شغّل champollion integrity للتحقق من اكتمال صيغ الجمع عبر جميع اللغات.

فرض المصطلحات

بالنسبة لأزواج اللغات الموجَّهة التي لديها قاموس، يُجري champollion فحصًا للمصطلحات بعد الترجمة. بعد اجتياز بوابة الجودة، يتحقق مما إذا كان نموذج اللغة الكبير قد استخدم فعلًا مصطلحات القاموس المطلوبة.

[TERM] en→fr: 2 term violation(s)
• hero.title: "dashboard" → expected "tableau de bord" but got "panneau de contrôle"

انتهاكات المصطلحات هي تحذيرات، وليست أخطاء حاجبة. تُكتب الترجمة على القرص رغم ذلك. هذا مقصود — قد تكون لدى نموذج اللغة الكبير أسباب وجيهة لاختيار بديل (السياق، القواعد النحوية)، والحجب عند عدم تطابق المصطلحات سيسبب ضررًا أكثر من النفع.

لإصلاح الانتهاكات، حدّث قاموس التوجيه أو عدّل ملف اللغة يدويًا.


انظر أيضًا