نظام ArWikiCats هو نظام متكامل لترجمة أسماء تصنيفات ويكيبيديا الإنجليزية إلى أسماء عربية موحدة. يتكون النظام من ثلاث مستودعات مترابطة تعمل معًا لتوفير حل شامل:
- المكتبة الأساسية: ArWikiCats
- ArWikiCatsWeb - واجهة الويب وواجهة برمجة التطبيقات REST
- cats_maker_new - بوت التطبيق على ويكيبيديا العربية
الدور: المنطق الأساسي لترجمة أسماء التصنيفات
الوظائف:
- ترجمة أسماء تصنيفات ويكيبيديا من الإنجليزية إلى العربية
- توحيد وتطبيع أسماء التصنيفات العربية
- توفير واجهة برمجية (API) للاستخدام في التطبيقات الأخرى
- لا يحتوي على واجهة مستخدم أو اتصال بالشبكة
المخرجات:
- حزمة Python قابلة للتثبيت
- يمكن استخدامها كمكتبة في مشاريع أخرى
التبعيات:
- لا يعتمد على المستودعات الأخرى
- يعمل كوحدة مستقلة
الدور: توفير واجهة ويب وواجهة برمجة REST لوظائف ArWikiCats
الوظائف:
- واجهة ويب تفاعلية للمستخدمين النهائيين
- واجهة برمجة REST API عبر HTTP
- إمكانية الوصول إلى وظائف الترجمة من المتصفح أو عبر طلبات HTTP
- معالجة الطلبات وإرجاع النتائج بتنسيق JSON
المخرجات:
- تطبيق ويب قابل للنشر
- نقاط نهاية (endpoints) لواجهة REST API
التبعيات:
- يعتمد على: ArWikiCats (يستخدمه كمكتبة)
- يستورد ويستخدم وظائف الترجمة من ArWikiCats
الدور: بوت آلي لترجمة وإنشاء التصنيفات على ويكيبيديا العربية
الوظائف:
- استخراج أسماء التصنيفات من ويكيبيديا الإنجليزية
- استخدام ArWikiCats لترجمة أسماء التصنيفات
- إنشاء التصنيفات المترجمة على ويكيبيديا العربية تلقائيًا
- معالجة التصنيفات بشكل مجمّع (batch processing)
المخرجات:
- تصنيفات جديدة على ويكيبيديا العربية
- سجلات العمليات والتقارير
التبعيات:
- يعتمد على: ArWikiCats (يستخدمه كمكتبة)
- يستورد ويستخدم وظائف الترجمة من ArWikiCats
- يتفاعل مع API ويكيبيديا
+------------------+
| ويكيبيديا |
| الإنجليزية |
+--------+---------+
|
| أسماء التصنيفات بالإنجليزية
v
+--------+---------+
| ArWikiCats | <---- المنطق الأساسي
| (مكتبة Python) |
+--------+---------+
|
| أسماء التصنيفات بالعربية (موحدة)
|
+------------------------+------------------------+
| | |
v v v
+--------+---------+ +--------+---------+ +--------+---------+
| ArWikiCatsWeb | | cats_maker_new | | تطبيقات أخرى |
| (واجهة الويب) | | (البوت) | | (مستقبلية) |
+------------------+ +--------+---------+ +------------------+
| |
v v
+--------+---------+ +--------+---------+
| المستخدمون | | ويكيبيديا العربية|
| عبر المتصفح | | (تصنيفات جديدة) |
+------------------+ +------------------+
-
المستوى الأساسي: ArWikiCats
- لا يعتمد على أي مستودع آخر
- يوفر الوظائف الأساسية لجميع التطبيقات
-
المستوى التطبيقي: ArWikiCatsWeb و cats_maker_new
- كلاهما يعتمد على ArWikiCats
- يستخدمان نفس المنطق الأساسي
- مستقلان عن بعضهما البعض
ArWikiCats (القاعدة - لا تبعيات)
↑
|
+------------+------------+
| | |
ArWikiCatsWeb cats_maker_new (تطبيقات - تعتمد على القاعدة)
- المستخدم يفتح ArWikiCatsWeb في المتصفح
- المستخدم يدخل اسم تصنيف بالإنجليزية
- ArWikiCatsWeb يستدعي ArWikiCats للترجمة
- ArWikiCats يعيد الاسم المترجم بالعربية
- ArWikiCatsWeb يعرض النتيجة للمستخدم
- يستخرج cats_maker_new قائمة تصنيفات من ويكيبيديا الإنجليزية
- لكل تصنيف، يستدعي ArWikiCats للترجمة
- ArWikiCats يعيد الأسماء المترجمة بالعربية
- cats_maker_new يتحقق من وجود التصنيف على ويكيبيديا العربية
- إذا لم يكن موجودًا، ينشئ التصنيف الجديد
- التطبيق يرسل طلب HTTP إلى ArWikiCatsWeb
- ArWikiCatsWeb يستدعي ArWikiCats للترجمة
- ArWikiCats يعيد النتيجة
- ArWikiCatsWeb يرسل الاستجابة كـ JSON
- التطبيق يستخدم البيانات المترجمة
- اللغة: Python
- النوع: مكتبة/حزمة (Package)
- الواجهة: برمجية (API)
- النشر: PyPI أو تثبيت محلي
- اللغة: Python (مع إطار عمل ويب)
- النوع: تطبيق ويب
- الواجهة: HTTP/REST API + واجهة مستخدم
- النشر: خادم ويب
- اللغة: Python
- النوع: تطبيق سطر أوامر/خدمة
- الواجهة: سطر أوامر
- النشر: تشغيل دوري أو مستمر
- الفصل بين المسؤوليات: كل مستودع له دور واضح ومحدد
- إمكانية إعادة الاستخدام: المنطق الأساسي في ArWikiCats يمكن استخدامه من تطبيقات متعددة
- سهولة الصيانة: التغييرات في المنطق الأساسي تحدث في مكان واحد
- القابلية للتوسع: يمكن إضافة تطبيقات جديدة تستخدم ArWikiCats دون تعديل المكتبة الأساسية
- الاستقلالية: ArWikiCatsWeb و cats_maker_new مستقلان عن بعضهما
عند تطوير أو صيانة هذا النظام:
- للتغييرات في منطق الترجمة: عدّل ArWikiCats
- للتغييرات في واجهة الويب أو API: عدّل ArWikiCatsWeb
- للتغييرات في سلوك البوت: عدّل cats_maker_new
للنسخة الإنجليزية من هذا المستند، راجع README-en.md