يمكن ترجمة موقع إلكتروني إلى عشر لغات أو عشرين أو أربعين بسرعة باستخدام نظام ذكاء اصطناعي واحد. لكن السؤال الأصعب هو: هل يمكن الوثوق بالنتيجة؟ فقد يختلق نموذج لغوي منفرد كلمات أحيانًا، أو يترجم أسماء المنتجات، أو يغيّر رقمًا دون أن يلاحظ ذلك. لذلك طوّرنا وحدة لـ Odoo 19 تعمل فيها أنظمة ذكاء اصطناعي وخدمات ترجمة متعددة على النص نفسه، وتقيّم نتائج بعضها دون معرفة مصدرها، ثم تتفق على صياغة تجمع بين الدقة وسلاسة الأسلوب. أما الحالات غير المحسومة فيُحال القرار فيها إلى شخص.
تُسمّى الوحدة ai_translation_consensus، وهي متاحة على GitHub كبرمجية حرة بموجب ترخيص AGPL-3:
github.com/Alex0176/odoo-ai-translation-consensus
الفكرة: المراجعة المتبادلة بدلًا من الاكتفاء بالثقة
تؤدي الوحدة وظيفتين:
- الترجمة: استكمال الترجمات الناقصة (أو تحديث القديمة) لأي حقل قابل للترجمة في Odoo، بما في ذلك مقالات المدونة وصفحات الموقع والقوائم والمنتجات وكل ما يخزّنه Odoo بلغات متعددة. ولا ترى أنظمة الذكاء الاصطناعي الجملة المنفردة فقط، بل ترى أيضًا الكتل المجاورة ومقتطفًا من الصفحة الكاملة. وبذلك تُفهم الكلمات ضمن سياقها الصحيح.
- التدقيق اللغوي: مراجعة النص بلغته الأصلية واقتراح صياغات أفضل أو تصحيحات. ويظل النص الأصلي دائمًا أحد الخيارات المرشحة. إذا فاز النص الأصلي، فلا يتغير شيء.
جوهر الفكرة هو المراجعة المتبادلة. فكل نظام ذكاء اصطناعي يجيد تقييم نصوص الآخرين، حتى إن أخطأ هو أحيانًا. تستفيد الوحدة من ذلك: يُعدّ كل مزوّد صياغة، ثم يقيّم المزوّدون أنفسهم جميع الصياغات دون معرفة مصدرها. ولا يقيّم أي مزوّد صياغته الخاصة.
كيف يتكوّن الاقتراح
- الترجمة. يُعدّ كل مترجم صياغة بالتوازي مع الآخرين.
- فحوص ثابتة. يُتحقّق دون ذكاء اصطناعي من بقاء وسوم HTML والكيانات والعناصر النائبة مثل
%sأو{}والأرقام والروابط دون تغيير. ولا يمكن أن تفوز أي صياغة تخالف ذلك، مهما بلغت سلاستها. - التقييم. تُخلط الصياغات الأخرى وتُخفى هوية مصادرها. يمنح كل مراجع كل صياغة درجة في الدقة وأخرى في طبيعية الأسلوب (من 1 إلى 10)، ويحدّد صياغته المفضلة، ويمكنه اقتراح تحسين.
- التوافق. تُحسب درجة ترتيب الصياغة وفق المعادلة: 0,5 × متوسط الدرجات + 5 × نسبة أصوات التفضيل. ويُعدّ التوافق متحققًا إذا حصلت أفضل صياغة على 60 % على الأقل من أصوات التفضيل ومتوسط درجات لا يقل عن 7,0.
- جولة ثانية. إذا لم يتحقق التوافق، تُعاد أفضل الصياغات إلى التقييم مع اقتراحات التحسين التي قدّمها المراجعون.
- التدخل البشري. إذا بقيت النتيجة غير حاسمة، ينتظر الاقتراح قرارًا بشريًا.
إذا لم تتوفر سوى خدمات ترجمة بحتة دون وظيفة مراجعة (مثل DeepL)، فلا تُعدّ النتيجة محل توافق إلا إذا قدّمت خدمتان على الأقل النص نفسه تمامًا. وفي التدقيق اللغوي، يجب أن تظل النتائج قريبة بوضوح من النص الأصلي (بدرجة تشابه لا تقل عن 0,6، مع الأرقام نفسها). أحيانًا تُرجع النماذج الصغيرة المجانية نصوصًا بترتيب خاطئ أو لا صلة لها بالمطلوب عند معالجة دفعة. تُستبعد هذه الإجابات بدلًا من طرحها للتصويت. ويُحدّد مسرد أسماء العلامات التجارية والمصطلحات الثابتة.
المزوّدون: بمفتاح ودون مفتاح
يمكن للخدمات المجانية والمدفوعة المشاركة في التصويت نفسه. تتضمن الوحدة إعدادات مسبقة لمزوّدين كثيرين؛ وجميعها معطّلة بعد التثبيت.
| النوع | يترجم | يراجع / يصحّح | أمثلة |
|---|---|---|---|
| واجهة متوافقة مع OpenAI | نعم | نعم | OpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp |
| متوافق مع OpenAI دون مفتاح | نعم | نعم | Ollama على خادمك الخاص، Pollinations |
| Anthropic | نعم | نعم | Claude |
| Google Gemini, Cohere | نعم | نعم | |
| أمر محلي | نعم | نعم | claude -p أو أي برنامج يقرأ من stdin ويُخرج الإجابة |
| خدمات الترجمة | نعم | لا | DeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva |
أدخل المفتاح (أو اسم متغير البيئة الذي يحتوي عليه)، واضغط على اختبار الاتصال، ثم فعّل المزوّد. أسماء النماذج في الإعدادات المسبقة هي نقطة انطلاق؛ وعلى من يستخدمها مطابقتها مع قائمة المزوّد الحالية. عند استخدام مزوّدين أو أكثر، تجري مراجعة متبادلة فعلية، أما عند استخدام مزوّد واحد فلا أحد يراجع عمله. وينبّه المعالج إلى ذلك.
موقع إلكتروني كامل دفعة واحدة
يشرح معالج البدء (من القائمة الترجمة بالذكاء الاصطناعي → ابدأ هنا) الخطوات وينشئ القاعدة الأولى. إذا كانت وحدة website مثبّتة، تُثبّت معها تلقائيًا وحدة الربط ai_translation_consensus_website. وهي تضيف النطاق «موقع إلكتروني كامل بكل محتوياته»: تختار الموقع وتطلب اقتراح المحتويات. تفحص الوحدة جميع النماذج التابعة للموقع التي تحتوي على حقول قابلة للترجمة (الصفحات والقوائم والمدونات والمنتجات والفعاليات والمنتديات والدورات وغيرها)، وتقترح قاعدة لكل نوع محتوى، مع اعتماد لغات الموقع لغاتٍ مستهدفة.
- لا تظهر المكوّنات غير المثبّتة (كالمنتديات والدورات والمعارض)، وتُضاف لاحقًا بمجرد تثبيتها.
- لا تُقترح نماذج المتجر إلا إذا كان الموقع يتضمن متجرًا. ولا تُدرج إلا السجلات المنشورة.
- تستثني الوحدة عمدًا جهات الاتصال والشركات ومزوّدي الدفع وقوائم الأسعار وطرق التوصيل وبرامج الولاء ومرشحات مقتطفات المحتوى.
- لا تُترجم أسماء الصفحات المستخدمة في عناوين URL (
seo_name). - يمكن إزالة الأنواع غير المرغوبة قبل إنشاء القواعد.
لا تترتب أي تكلفة على الإنشاء والبحث: فالقاعدة تكتفي بسرد النصوص التي تحتاج إلى معالجة. ولا يُستدعى المزوّدون ولا تنشأ تكاليف إلا عند المعالجة.
لوحة المتابعة والتكاليف والبدء التلقائي
تعرض لوحة المتابعة لكل قاعدة عدد النصوص المكتملة، والتي تنتظر تأكيدًا أو قرارًا بشريًا، والمدرجة في قائمة الانتظار، والتي فشلت معالجتها. وتعرض أيضًا تفاصيل حسب اللغة والمزوّد، والتكاليف المتكبدة والمتوقعة، والوقت المتبقي المقدّر، ومفتاح تفعيل المعالجة المجدولة.
الأرقام في هذه الصورة بيانات توضيحية ولا تدل على تكاليف فعلية.
- تُحسب التكاليف استنادًا إلى ما يبلّغ عنه المزوّدون فعليًا: الرموز (OpenAI وAnthropic وGemini وCohere) أو المحارف (DeepL وGoogle وAzure). يظهر عدد الرموز دائمًا، أما المبالغ المالية فلا تظهر إلا إذا أدخلت لدى المزوّد سعر كل مليون رمز (أو محرف). لا تتضمن الإعدادات المسبقة أسعارًا لأنها تتغير. وبالنسبة إلى الخدمات التي لا تبلّغ عن عدد الرموز، يُقدّر العدد من طول النص ويُشار إليه بوصفه تقديرًا.
- التوقعات: متوسط التكلفة ووقت المعالجة لكل نص مضروبًا في عدد النصوص المدرجة في قائمة الانتظار. وهي تقديرات تتحسن مع معالجة الدفعات الأولى.
- البدء التلقائي: تبحث القواعد التي فُعّل فيها خيار البدء تلقائيًا عند تغيّر سجل، في كل تشغيل للإجراء المجدول، عن السجلات التي تغيّرت منذ آخر عملية بحث فقط. وهكذا، عند تفعيل الإجراء المجدول، تُترجم صفحة الموقع المعدّلة مجددًا دون تدخل يدوي.
- إشعار الاكتمال: عند الانتهاء من آخر نص معلّق في قاعدة، تظهر مرة واحدة رسالة «تُرجمت جميع اللغات» (أو «رُوجعت جميع النصوص» في حالة التدقيق اللغوي) في قناة AI Translation.
الاعتماد البشري
افتراضيًا، لا تكتب الوحدة شيئًا في سجلاتك دون موافقتك. يعرض كل اقتراح الصياغات ومن أعدّها والدرجات وملاحظات المراجعين. يمكنك اعتماد الاقتراح، أو اختيار صياغة أخرى، أو إدخال صياغتك الخاصة، أو رفضه.
النص وأسماء المزوّدين في هذه الصورة خيالية، والغرض منها توضيح شكل العرض.
إذا كنت تثق بقاعدة، يمكنك تفعيل اعتماد النتيجة المتفق عليها تلقائيًا. وتظل الاقتراحات التي لم يتحقق توافق بشأنها في انتظار قرار بشري. عند الاعتماد، تتحقق الوحدة مجددًا مما إذا كان النص المصدر قد تغيّر في هذه الأثناء، وتعيد فحص ترميز النص، ثم تحفظ النتيجة دون تتبّع التغييرات أو إشعار المتابعين.
الأمان وحماية البيانات
- كل شيء معطّل بعد التثبيت. المزوّدون والإجراء المجدول غير مفعّلين. ولا يُرسل أي شيء دون تدخل منك.
- تغادر النصوص خادمك بمجرد إشراك خدمة مستضافة. يمكن وسم قاعدة بأنها سرّية؛ وعندئذ لا يرى النص إلا المزوّدون المصنّفون بأنهم يعملون على بنيتك التحتية الخاصة.
- تُحفظ المفاتيح في حقل لا يراه إلا المسؤولون، أو في متغير بيئة يُشار إليه باسمه فقط. وتُحجب في رسائل الخطأ وتُرسل في ترويسات الطلبات. والاستثناء هو مفتاح MyMemory الاختياري، الذي لا يمكن تمريره إلى الخدمة إلا كمعامل استعلام.
- يُشغّل الأمر المحلي برنامجًا، ولذلك يظل محظورًا إلى أن يُضبط معامل النظام
ai_translation_consensus.allow_commandعلىTrue. يُستدعى الأمر دون صدفة أوامر ويعمل داخل مجلد مؤقت فارغ. - حقن التعليمات: توضّح الطلبات أن النص بيانات. ولا تُتّبع التعليمات الواردة داخل النص المراد ترجمته، وتُستبعد أي نتيجة تُخلّ بالوسوم أو العناصر النائبة.
- للخدمات المجانية حدود. تتيح Pollinations، دون تعريف بالهوية، إجابة واحدة كل 45 ثانية. يضمن خيار المزوّد
min_intervalالالتزام بهذه المهلة، وتُراعى الردود التي تطلب «إعادة المحاولة لاحقًا».
التثبيت
git clone https://github.com/Alex0176/odoo-ai-translation-consensus.git
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus /pfad/addons/
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus_website /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i ai_translation_consensus --stop-after-init
يلزم توفر Odoo 19 وحزمة Python المسماة requests. وتُرفق ترجمة ألمانية. تُثبّت وحدة الربط ai_translation_consensus_website تلقائيًا إذا كانت website موجودة. يجب إعادة تشغيل خدمة Odoo بعد التثبيت لأن الوحدة تحتوي على شيفرة Python. إذا كنت تدير نظامًا قيد التشغيل الفعلي، فثبّت الوحدة أولًا على نسخة من قاعدة البيانات.
الخطوات الأولى: افتح قائمة الترجمة بالذكاء الاصطناعي → المزوّدون، واختبر الخدمات وفعّلها، ثم اختر ابدأ هنا وأنشئ القاعدة الأولى. ينشئ خيار البحث عن نصوص الاقتراحات، ويستدعي خيار معالجة دفعة المزوّدين. ابدأ بقاعدة صغيرة، مثل مقال مدونة واحد ولغتين، وراجع النتيجة والتكلفة قبل إدراج موقع كامل في قائمة الانتظار.
الحدود
- تعتمد الجودة على النماذج التي تفعّلونها. تقلّل المراجعة المتبادلة أخطاء النماذج الفردية، لكنها لا تضمن خلو النص من الأخطاء. وفي النصوص ذات الأهمية القانونية أو المرتبطة بالسلامة، لا تُغني الوحدة عن مراجعة متحدث أصلي للغة.
- ترتفع التكاليف بسرعة. يتطلب كل نص استدعاءً لكل مترجم، واستدعاء مراجعة لكل مراجع، وجولة ثانية عند انقسام التصويت. ويزيد سياق الصفحة حجم المدخلات في كل استدعاء. كما أن قاعدةً تضم 45 لغة مستهدفة تضاعف عدد النصوص أضعافًا كثيرة. ضعوا حدودًا لعمليات التشغيل باستخدام السجلات لكل عملية بحث والمقترحات الجديدة لكل عملية بحث والمقترحات لكل تشغيل Cron، وأضيفوا نماذج منخفضة التكلفة أو محلية للمراجعة.
- تُدعَم فقط الحقول التي تحمل
translate=True. يُعالَج النص المنسّق كتلةً كتلةً باستخدام آلية المقاطع النصية في Odoo. - تتغير الأسعار وأسماء النماذج. الإعدادات الافتراضية ليست قائمة أسعار يجري تحديثها باستمرار.
- صُمِّمت الوحدة لنظام Odoo 19.0 Community. الإصدارات الأخرى غير مدعومة.
الأسئلة الشائعة
هل تُترجَم نصوص أو تُستبدَل ترجمات دون موافقتي؟
لا، ما لم تفعّلوا خيار اعتماد الترجمة المتفق عليها تلقائيًا. وحتى عند تفعيله، لا تُحفَظ إلا المقترحات التي تحقق بشأنها اتفاق. وتكون الجهات المزوّدة والإجراء المجدول معطّلة بعد التثبيت.
هل أحتاج إلى مفاتيح وصول للجهات المزوّدة المدفوعة؟
فقط للجهات المزوّدة التي تشترط ذلك. ويمكن العمل دون مفاتيح باستخدام Pollinations أو MyMemory أو نموذج يعمل محليًا، مثل Ollama. وغالبًا ما تكون الخدمات المجانية محدودة وبطيئة، لذا لا تصلح عادةً لترجمة موقع كامل إلا بوصفها خيارًا مكمّلًا.
ما تكلفة الترجمة؟
يعتمد ذلك على الجهة المزوّدة والنموذج وطول النص وعدد اللغات، ولذلك لا تحدد الوحدة أرقامًا ثابتة مسبقًا. تعرض لوحة المعلومات الاستهلاك والتكاليف بمجرد إدخال الأسعار، وتقدّر التكلفة المتبقية للنصوص الموجودة في قائمة الانتظار.
هل يمكنني الحفاظ على سرية النصوص؟
نعم، باستخدام خيار سري في القاعدة. عندها لا تُستخدَم إلا الجهات المزوّدة المحدَّدة على أنها تعمل على بنيتكم التحتية الخاصة، مثل Ollama يعمل محليًا.
هل يحلّ هذا محل آلية الترجمة المدمجة في Odoo؟
لا. تستفيد الوحدة من دعم تعدد اللغات في Odoo، وتحفظ الترجمات في المواضع نفسها التي تديرونها يدويًا في المعتاد.
ما الترخيص الذي تُتاح بموجبه؟
بموجب AGPL-3. نرحّب بالإبلاغ عن الأخطاء واقتراح التحسينات عبر فتح تذكرة في مستودع GitHub .
الدعم من Biricon IT Services
نحن نرعى تثبيتات Odoo للشركات الصغيرة والمتوسطة: من التطبيق الأولي مرورًا بالتخصيصات وعمليات الترحيل وصولًا إلى التشغيل اليومي. وإذا كنتم تريدون تشغيل موقعكم على Odoo بعدة لغات، أو تأمين الترجمات بالذكاء الاصطناعي، أو إدخال وحدة إلى نسخة الإنتاج لديكم بأمان، فيسعدنا مساعدتكم. تطويرات خاصة أخرى: أرشفة الشركة مع مستخدمي بوابتها, أرقام المستندات المكوّنة من بادئة وسنة وعدّاد و السجل التجاري والتحقق من العناوين للعملاء في النمسا.
آخر تحديث: 3 نوفمبر 2026. إصدار الوحدة 19.0.1.0.0. تعرض الصور بيانات تجريبية وهمية.