← الرجوع إلى المقالات
Web 2026-04-17 · rev. 2026-05-10 ProtoMedia

موقع يتحدث بالعشرات من اللغات، بدون مترجمين

ترجمة آلية من الإيطالية · اقرأ الأصل

كيف قمنا ببناء نظام الترجمة الذي يعمل تحت هذه الصفحات: الذكاء الاصطناعي عند الحاجة، ذاكرة تخزين مؤقت دائمًا، صفر انتظار ملحوظ.

مشكلة الـ i18n التقليدية

لسنوات، كان تدويل موقع الويب بمثابة رحلة قصيرة من سير العمل: ملفات .po، ومترجمون بشريون، ومفاتيح منسية، ونشر متأخر لأن "الألمانية لا تزال مفقودة". كان إضافة لغة واحدة تكلف الوقت والمال؛ إضافة عشر لغات كانت خارجة عن السؤال لأي شركة صغيرة.

مع نماذج اللغة الكبيرة (LLM) من الجيل التالي، وصلت جودة الترجمة الآلية إلى نقطة تكون فيها — لموقع شركة، وليس للأدب — كافية. لم يعد السؤال هو "هل يمكننا ترجمته تلقائيًا؟"، بل "كيف ندمجه دون تعطيل تجربة المستخدم".

البنية، باختصار

يتم تقديم الموقع بشكل ثابت باللغة الإيطالية. عندما يختار المستخدم لغة أخرى، يبدأ تشغيل محرك صغير على ثلاث مجموعات MongoDB:

  • i18n_base: النصوص المصدر باللغة المختارة (اليوم الإيطالية)، كل منها مع إعلان لغته، ووصف لمكان وزمن ظهوره في الموقع (ضروري لجودة الترجمة)، ونبرة وحد أقصى للأحرف. يصبح هذا الوصف جزءًا من المطالبة المرسلة إلى نموذج اللغة الكبير (LLM)، بحيث يعرف ما إذا كان يترجم زرًا أم فقرة.
  • i18n_human: الترجمات التي تتم معالجتها يدويًا، عندما نريد جودة تحريرية لبعض الصفحات بدلاً من ناتج نموذج اللغة الكبير (LLM). لها الأولوية على الذاكرة التخزين المؤقت التلقائية وتُ"تُعلم" تلقائيًا عندما يتغير النص المصدر.
  • i18n_cache: الترجمات التي تم إنشاؤها بالفعل، مفهرسة حسب (الحقل، اللغة). يحتفظ كل إدخال بالطابع الزمني للنص الأساسي في وقت الإنشاء.
  • articoli_i18n: نفس المنطق المطبق على المحتوى الأطول، مثل هذا المقال.

عند الوصول الأول بلغة جديدة، يطلب النظام من نموذج اللغة الكبير (LLM) فقط الحقول المفقودة حقًا، ويحفظ الإجابة في الذاكرة التخزين المؤقت ويعيدها إلى المتصفح. في الزيارات اللاحقة، تصل نفس اللغة على الفور، دون المزيد من الاستدعاءات للذكاء الاصطناعي.

الإبطال الذي يعمل

الذاكرة المخبأة هي كذبة مرتبة: تقول "حققتي هي هذه" حتى يثبت شخص ما أنها غير صحيحة. آلية إبطال الصلاحية هنا بسيطة: كل ترجمة مخبأة تخزن الطابع الزمني للنص الأساسي الذي أنشأها. عندما تقوم بتعديل النص الإيطالي وزيادة قيمة updated_at، تصبح جميع ترجمات هذا الحقل في جميع اللغات قديمة تلقائيًا ويتم إعادة إنشائها حسب الحاجة. لا توجد عمليات تنقيح يدوية، ولا توجد ذاكرة تخبئة لإفراغها.

المستخدم الذي لا ينتظر

الجزئ الأكثر إثارة للاهتمام ليس الترجمة — بل كيفية عرضها. عند تغيير اللغة، يرى المتصفح صفحة إيطالية مع دوارات صغيرة بجوار كل كتلة نصية ليتم تحديثها. الإغراء هو إجراء مكالمة واحدة تترجم كل شيء معًا: بسيط ونظيف، ويحكم على المستخدم بالانتظار حتى ينتهي نموذج اللغة الكبير (LLM) من كل شيء قبل رؤية أي تغيير.

اتخذنا الاتجاه المعاكس. يتم تجميع النصوص حسب القسم (شريط التنقل، والجسم، والتذييل) وتقسيمها إلى دفعات صغيرة من ثلاثة حقول لكل منها. تبدأ المكالمات بالتسلسل: أولاً، عدد قليل من حقول شريط التنقل، والتي تظهر في ثوانٍ قليلة — يرى المستخدم أن شيئًا ما يحدث ويبدأ في القراءة. أثناء القراءة، يصل الجزء الأول من الجسم، ثم الثاني، وأخيرًا التذييل.

الدرس باختصار: السرعة المُدركة ليست السرعة الإجمالية. ترجمة جزء تلو الآخر، بالترتيب المرئي، أكثر أهمية من الانتهاء أولاً.

العمل الليلي

الذاكرة المخبئية لديها عدو واحد حقيقي: الزيارة الأولى. المستخدم الألماني الأول يدفع ثمن جميع الترجمات المستقبلية، وتجربته هي التي تبقى في ذهنه. للتخلص من المشكلة (أو تقليلها)، تستيقظ مهمة في الخلفية كل دقيقة، وتختار اللغة الأكثر توقعًا من بين اللغات غير المكتملة، وتأخذ نصًا غير مترجم وتمرره عبر نموذج اللغة الكبير (LLM). في الدقيقة التالية، النص التالي. في غضون أيام قليلة، تكون اللغات الأكثر شيوعًا جاهزة بالفعل.

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

إذا كنت أول ألماني في اليوم وتصل بينما النظام لا يزال يكمل الذاكرة المخبئية، فلا يزال لديك التحميل التدريجي لإبقائك مشغولاً. إذا كنت الثاني، فلن تلاحظ ذلك حتى.

ما الذي تحصل عليه

موقع ويب متعدد اللغات بدون مترجمين، بدون ملفات لإدارتها، بدون نشر لإضافة لغة. يدخل المستخدم رمزًا — ja، ca، eu، أي رمز يريده — ويتم ترجمة الصفحة. المرة الثانية تكون فورية. في المرة الثالثة، من المحتمل أننا وصلنا بالفعل إلى هذا، مترجمة في الوقت المناسب بواسطة مهمة لا تنام أبدًا.

هذه الصفحة نفسها، إذا كنت تقرأها باللغة الألمانية أو الإسبانية أو الكورية، لم يكتبها مترجم أبدًا. لقد تمت ترجمتها مرة واحدة فقط بواسطة LLM، ومنذ ذلك الحين تم تقديمها من الذاكرة المخبأة. الشيء الوحيد المكتوب يدويًا هو ما تقرأه الآن إذا كان باللغة الإيطالية.

هل أنت مهتم بجلب هذه البنية إلى موقعك؟ دعنا نتحدث عن ذلك.

اتصل بنا

هل لديك ملاحظة؟ راسلنا

الرسالة تصل إلينا فقط. إذا كان تعليقك مثيرًا للاهتمام، فقد ننشره في نهاية المقال بعد تقييمه.

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