فحصنا كل ترجمة آلية. كانت الفحوصات هي الجزء الخاطئ.
اللغات
قبل إصدار حزمة الترجمة الخاصة بنا، شغّلناها على تطبيق تجريبي صغير: 70 نصًا بستة تنسيقات (JSON، Flutter ARB، Android، Apple .strings، gettext وMarkdown) إلى الألمانية والروسية واليابانية والعربية والإسبانية، باستخدام نموذج مفتوح بمعايير 27 مليار على جهازنا الخاص. يمر كل نص مترجم بفحوصات قبل كتابته. رُفضت أربعة من أصل 350. جميع حالات الرفض الأربع كانت خاطئة.
ما تبحث عنه الفحوصات
الترجمة التي تُعطّل التطبيق أسوأ من عدم وجودها، لذا يجب أن يحتفظ كل نص بعناصره البديلة (%1$s، {name}، {{count}})، ووسومها، وفواصل الأسطر، وروابطها؛ ويجب أن تكون بلغة الهدف؛ وألا تكون فارغة أو طويلة بشكل مفرط أو متروكة بالإنجليزية؛ ويجب أن تغطي صيغ الجمع الفئات التي تمتلكها اللغة بالضبط. يُطلب النص الذي يفشل مرة أخرى مع تحديد المشكلة، والذي يفشل مرة أخرى يُستبعد، فيعرض التطبيق النص الإنجليزي لذلك النص الواحد.
حالات الرفض الأربع
- كلمة "Backups" بالألمانية كانت "Backups". اعتبرت الفحوصات أنها غير مترجمة. تستخدم الألمانية الكلمة الإنجليزية. كلمة واحدة متطابقة غالبًا ما تكون صحيحة؛ كلمتان متطابقتان أو أكثر ليستا كذلك، لذا أصبحت هذه هي القاعدة الآن.
- سطر روسي وسطر ياباني يحتويان على عنوان بريد إلكتروني فشلا في فحص النص: أقل من 60% من الأحرف كانت سيريلية أو يابانية، لأن
[email protected]مكتوب بأحرف لاتينية. تُعامل العناوين الآن مثل العناصر البديلة: يجب أن تعود دون تغيير، ولا تُحسب كأحرف. - رسالة جمع يابانية عادت بصيغة
{count, plural, =0{連続記録なし} other{{count}日連続}}. الفرع{連続記録なし}لا يحتوي على مسافات، لذا اعتبر نمط العنصر البديل أنه متغير باسم 連続記録なし. أقواس الفروع في رسائل الجمع أصبحت بنية الآن، ويجب أن تكون أسماء العناصر البديلة بترميز ASCII.
بعد إصلاح الفحوصات، طلب تشغيل ثانٍ من النموذج تلك النصوص الأربعة فقط، بما أن كل شيء آخر كان موجودًا في ذاكرة الترجمة، وكتب جميع النصوص الـ 350 في 45 ثانية.
الجزء الذي توقعنا فشله ولم يفشل
أشكال الجمع هي الموضع الذي تنهار فيه الترجمة الساذجة: تحتوي الإنجليزية على صيغتين (مفرد وغير مفرد)، والروسية على أربع (مفرد، قليل، كثير، غير مفرد)، والعربية على ست فئات، واليابانية على صيغة واحدة. طلبنا تحديدًا فئات اللغة الهدف وتحققنا من العناصر النائبة في كل صيغة. كتب النموذج «1 день، 2 дня، 5 дней» للروسية وجميع الصيغ العربية الست. نجحت جميع صيغ الجمع في Android من المحاولة الأولى في اللغات الخمس، وكذلك فعلت جميع رسائل الجمع باستثناء الرسالة اليابانية التي أساء فحصنا قراءتها.
ما لا يمكن لأي فحص التقاطه
ثم ترجمنا 22 سلسلة نصية من الويب في المثال إلى جميع اللغات الـ 42 التي يعرفها Polyglot: نجحت 924 من أصل 924 سلسلة نصية. وعند قراءتها، برزت واحدة منها. في اللغة الخميرية، كانت «You are offline» قد عادت كجملة تعني «أنت متصل». إنها خميرية صحيحة البنية بالحروف الصحيحة ولا ينقصها شيء، لذا اجتازها كل فحص. تلتقط الفحوصات ما يكسر التطبيق؛ أما المعنى الخاطئ فيحتاج إلى شخص يقرأ اللغة.
الخلاصة
تحتاج الفحوصات الآلية على مخرجات الآلة إلى مخرجات حقيقية لاختبارها. نجحت اختبارات الوحدة مع ترجمات مختلقة؛ لكن نموذجًا حقيقيًا يكتب يابانية حقيقية اكتشف الثغرات في دقائق. يأتي Polyglot مزودًا بهذه الفحوصات، بعد إصلاحها، ومع الاختبارات لكل حالة من الحالات الأربع.