التعرّف التلقائي على اللغة

ميزات الويب: أداة رصد اللغة

Language Detector API هي واجهة برمجة تطبيقات ويب من جهة العميل مصمّمة لتحديد لغة سلسلة نصية معيّنة. من خلال إجراء عملية الرصد محليًا في المتصفّح، يتم تعزيز خصوصية المستخدم وتقليل الحاجة إلى مكتبات خارجية ثقيلة أو طلبات مكلفة من جهة الخادم.

أبرز حالات الاستخدام

  • التحضير للترجمة: تحديد لغة المصدر قبل إرسال النص إلى المترجم
  • الأمان والفلترة: تحميل نماذج معيّنة لمهام مثل رصد المحتوى المسيء
  • أدوات تسهيل الاستخدام: تصنيف المحتوى باستخدام سمة lang الصحيحة لبرامج قراءة الشاشة
  • أقلمة واجهة المستخدم: تعديل واجهات التطبيق استنادًا إلى لغة الإدخال التي يختارها المستخدم

متطلبات الأجهزة والنظام

  • نظام التشغيل: Windows 10/11 أو macOS 13 أو إصدار أحدث أو Linux أو Chromebook Plus
  • مساحة التخزين: مساحة خالية تبلغ 22 غيغابايت (تتم إزالة النموذج إذا انخفضت المساحة عن 10 غيغابايت).
  • ذاكرة الوصول العشوائي (RAM)/وحدة المعالجة المركزية (CPU): ذاكرة وصول عشوائي بسعة 16 غيغابايت وأكثر من 4 نوى لوحدة المعالجة المركزية
  • ذاكرة الوصول العشوائي للفيديو (VRAM): 4 غيغابايت أو أكثر في حال استخدام وحدة معالجة رسومات

دليل الاستخدام

1. إدارة النماذج وتفعيل المستخدمين

تحقَّق من توفّر النموذج قبل محاولة إنشاء مثيل لأداة الرصد أو بدء عملية التنزيل.

إجراء إلزامي: يجب أن يبدأ المستخدم إجراءً تفاعليًا (مثل النقر على زر) لإنشاء مثيل لأداة رصد اللغة أو بدء تنزيل النموذج باستخدام LanguageDetector.create()، وذلك لمنع حدوث NotAllowedError عندما يكون النموذج في حالة downloadable أو downloading.

// Check if the model is available or downloadable
const availability = await LanguageDetector.availability();

if (availability !== 'unavailable') {
  button.addEventListener('click', async () => {
    const detector = await LanguageDetector.create({
      monitor(m) {
        m.addEventListener('downloadprogress', (e) => {
          console.log(`Downloaded ${e.loaded * 100}%`);
        });
      },
    });
  });
}

2. رصد الجري

تعرض واجهة برمجة التطبيقات قائمة مرتّبة باللغات المحتملة مع درجة ثقة تتراوح بين 0.0 و1.0.

const someUserText = 'Hallo und herzlich willkommen!';
const results = await detector.detect(someUserText);

for (const result of results) {
  // result.detectedLanguage (e.g., 'de')
  // result.confidence (e.g., 0.999)
  console.log(result.detectedLanguage, result.confidence);
}

تجنَّب استخدام أداة الكشف على العبارات القصيرة جدًا أو الكلمات المفردة، لأنّ الدقة تنخفض بشكل كبير.

الأمان والبيئة

  • إطارات iframe: تتطلّب إطارات iframe المتعدّدة المصادر "سياسة أذونات" صريحة للوصول إلى واجهة برمجة التطبيقات.

    <iframe
      src="https://cross-origin.example.com/"
      allow="language-detector"
    ></iframe>
    
  • Web Workers: واجهة برمجة التطبيقات غير متاحة حاليًا في Web Workers بسبب تعقيدات "سياسة الأذونات".

  • الخصوصية: لا يتم إرسال أي بيانات إلى Google أو جهات خارجية أثناء عملية الرصد.

استراتيجية الإجراءات الاحتياطية

قبل الاستخدام، تحقَّق مما إذا كان العنصر LanguageDetector متاحًا في النطاق العام:

if ('LanguageDetector' in self) {
  // The Language Detector API is supported.
} else {
  // Execute fallback strategy
}

إذا كانت واجهة برمجة التطبيقات LanguageDetector غير متاحة أو إذا عرضت عمليات التحقّق من مدى التوفّر القيمة 'unavailable'، عليك استخدام بديل مناسب:

  1. الاستعانة بواجهة برمجة تطبيقات عن بُعد: يمكنك إعادة توجيه طلب الرصد إلى نقطة نهاية خادم أو Cloud APIs (مثل Vertex AI Gemini API) لتحديد اللغة.
  2. التكيّف مع الإصدارات الأقدم: أوقِف عناصر/أزرار رصد اللغة وأبلِغ المستخدم بأنّ الرصد من جهة العميل غير متاح حاليًا في هذا المتصفّح، ما يمنع حدوث أي استثناءات أو أعطال غير معالَجة.