Ar PHP
Ar PHP
Ar PHP
تعد لغة PHPأكثر لغات البرمجة في العالم شعبية في مجال تطوير مواقع ال11ويب ،ل11ذا فق11د عم انتش11ارها كوس11يلة
لبناء مواقع الويب المتوسطة والصغيرة ضمن ما بات يعرف ببيئة LAMP 1حيث يشير مصطلح أوائ11ل األح11رف
هذا إلى Linuxكنظام تشغيل و Apacheكمخدم ويب و MySQLكقاعدة بيانات فيم11ا ح11رف Pيش11ير إلى أي
من Perlأو Pythonأو ،PHPوجميع مكونات ه1ذه البيئ1ة مفتوح1ة المص1در بامتي1از .إن النج1اح المتم1يز له1ذه
البيئة وجدارتها ك1ان م11دخل الكث1يرين إلى اس1تخدام ال1برامج الح1رة المفتوح1ة المص1در .من جه1ة أخ1رى ف قد نمى
استخدام اإلنترنت على المستوى العالمي بش11كل هائل خالل األع11وام القليلة الماض11ية ،وك11ان ه11ذا النمو أس11رع في
المناطق غير الناطقة باإلنجليزية وبالذات في العالم العربي .فعلى سبيل المثال ،لقد نمى عدد مس11تخدمي اإلن11ترنت
في الشرق األوسط بين عامي 2000و 2008بنسبة ،%2062.2في حين يقدر أن حجم المحتوى العربي على
شبكة الويب يتض1اعف في كل ع1ام .إن مثل هك11ذا نمو أوجد حاجة إلى مص1ادر برمجية تس1اعد في تط1وير مواقع
الويب باللغة العربية.
لق11د اس11تفاد الكث11ير من مط11وري مواق11ع ال11ويب في س11وريا وأن11ا منهم (كم11ا في الع11الم أجم11ع) من وف11رة األدوات
والمنتجات المفتوحة المصدر المتاحة ،لكن الطابع العام لهذا االستخدام كان س11لبيا اس11تهالكيا إلى ح11د بعي11د ،وله11ذا
السلوك حسب اعتقادي أسباب يمكن تعميمه11ا على ش11ريحة واس11عة من الم11برمجين في وط11ني منه11ا ع11دم اإليم11ان
بالعمل الجماعي وقدرته على اإلنجاز ،وضعف مهارات تنظيم وتنسيق األعمال الجماعية ،أضف إلى ذل11ك حقيق11ة
الحاجة إلى التواصل مع اآلخرين بلغة ليست هي لغتنا األم ،وهو ما وضع المزيد من العوائق .إن على المؤسسات
التربوية والتعليمي1ة 1أن تلعب دورا ف1اعال في ت11ذليل تل11ك العوائ11ق واألخ11ذ بأس11باب النج11اح وذل11ك من خالل توف11ير
المناهج والممارسات الكفيلة بتأهيل الكوادر القادرة على اإلندماج بسالسة في أطر العمل الجماعي.
إال أن الثقة تبقى هي العائق األهم -بحسب وجهة نظري الشخصية -أم11ام التح11ول من مج11رد مس11تخدمين س11لبيين
لنتاج البرمجيات الحرة المفتوحة المص1در إلى عناص1ر إيجابي1ة فاعل11ة ومنتج1ة ،فالش1عور ال1دفين بأنن11ا مت1أخرون
زمنيا ومهاريا عن اللحاق بركب من سبقنا إلى عالم البرمجيات الحرة المفتوحة المصدر هو هاجس مثب11ط لعزيم11ة
الكث11يرين وهممهم .ل11ذا س11نحاول من خالل ه11ذه المقال11ة إطالعكم على خ11برة العم11ل على أح11د المش11اريع الح11رة
المفتوحة المصدر من وجهتي نظر مختلفتين ،حيث سنناقش بداية وجهة نظر المبرمج الش11اب ال11ذي يتهيب دخ11ول
هذا المعترك وما ترافق معه من دروس قد تفيد اآلخرين في تجاربهم الخاصة ،ثم ننتقل إلى وجهة نظر من يتطل11ع
إلى نتائج هذا المشروع ومدى الفائدة التي يمكن أن يجنيها اآلخرون منه أو من اإلضافة إليه.
القصة من البداية
إنطلق مشروع PHPواللغة العربي11ة كمش11روع شخص11ي ص11غير بداي11ة الع11ام 2006وه11دف إلى تق11ديم مجموع11ة
متكاملة من األدوات والمكتبات التي تع11الج نص11وص اللغ11ة العربي11ة وتتعام11ل معه11ا بخصائص11ها وخصوص11ياتها،
متيحا للم11برمجين الع11رب وس11يلة تمكنهم من بن11اء تطبيق11ات ويب ذات ط11ابع ع11ربي أص11يل تحت مظل11ة ت11رخيص
البرمجيات الحرة المفتوحة المصدر ،وذل11ك عوض11ا عم11ا ت11وفره لغ11ة PHPمن مكتب11ات وتقني11ات ص11ممت أص11ال
للتعامل مع نصوص اللغة اإلنجليزية ،وما يستتبع هذا من حشرها ولي عنقها للتعامل مع غيرها من لغات.
لقد كانت الفكرة الرئيسية للمشروع هي العامل األساس في نجاحه ،وهي التي حولت مخاوف الضعف إلى أس11باب
قوة وقلبت قواعد اللعبة لمصلحتنا ،وقد كانت دعوة مفتوح11ة للمض11ي خط11وة جدي11دة إلى األم11ام متج11اوزين ح11اجز
تعريب برمجيات اآلخرين وصوال إلى المساهمة الفعلية في كتابة الش11يفرات البرمجي11ة ،فمن يفوقن11ا معرف11ة بلغتن11ا
األم ومن أعلم منا بخفاياها؟ ومن سيحرمك التميز إن أنت قدمت حلوال تناسب لغتك وثقافتك؟ إنها البداية المالئم11ة
لفتح باب اإلبداع واس1عا على مص1راعيه دونم1ا رهب1ة أو ت1ردد ح1ول أهمي1ة المش1اركة ال1تي نض1يفها إلى مجتم1ع
البرمجيات الحرة المفتوحة المصدر.
تم اختيار العمل على تطوير أصناف Classesمفردة صغيرة في البدء نظرا ألن العمل على ه11ذا المش11روع ك11ان
يتم خالل أوقات الفراغ من جهة ،ولكون الشريحة المستهدفة منه لم تكن المستخدم النهائي بقدر ما ك11انت الم11برمج
الذي يعمل على تطوير موقع ويب عربي ضمن بيئة LAMPمن جهة أخ11رى .وك11انت البداي11ة م11ع ص11نف س11مي
ArQueryوالذي يختص بتحسين آلية البحث ضمن قاعدة MySQLللبيان11ات وذل11ك من خالل توظي11ف تقني11ات
التعابير النظامية Regular Expressionsبغية الحصول على نتائج أفضل عند التعامل مع النصوص العربي11ة.
حيث أن معظم المواقع العربية المبني1ة باس1تخدام برمجي1ات ط1ورت أساس1ا للتعام1ل م1ع اللغ1ة اإلنجليزي1ة ال تق1دم
لألسف أكثر من وظيفة البحث الح1رفي لزوارها ومس11تخدميها ،لكن المش11كلة في حال11ة اللغ11ة العربي11ة تكمن في أن
ذات الكلمة يمكن لها أن تظهر بأش11كال مختلفة بحسب س11ياق النص ،وأض1رب على ذلك مث11الا :إن ك11ان المس11تخدم
يبحث عن كلمة مغ111تربين 1فإنه لن يحصل في مجموعة نتائجه على تلك الس111جالت ال111تي ك111انت تتض111من كلمة
مغتربون! ليس هذا فحسب ،فاألمور يمكن لها أن تسوء أكثر لتجعل من عملية البحث تلك منقوصة إلى حد بعيد.
يقوم صنف ArQueryبالبحث بداللة ساق الكلمة مع ما يستلزمه ذلك من إجراءات لتقييس شكل الكلمة وتوحيده،
وهو ما يتم من خالل التعامل مع التشكيل ،والهمزة بأشكالها المختلفة ،إضافة إلى موضوع السوابق ك11واو العطف
ال11تي تلصق أحيانا بالكلمة أو أل التعري11ف ،واللواحق مثل إش11ارات التثنية والجمع والت11أنيث والض11مائر المتص11لة،
وذلك دون أن ننسى ض11رورة التعامل مع األخط11اء الش11ائعة من قبيل اس11تبدال الت11اء المربوطة باله11اء أو األلف
المقصورة بالممدودة أو بالعكس ،وسواها من حاالت أخرى .وقد ط1ور ه11ذا الص1نف بطريق11ة تس1هل دمجه مع أي
تط11بيق يس11تخدم لغة PHPويحفظ معلوماته في قاع111دة MySQLللبيان11ات ،بحيث تعطى الكلمة أو مجموعة
الكلمات التي أدخلها المستخدم كدخل لهذا الصنف ،فيما نحصل منه بالنتيجة على تركيبة القسم الشرطي من عبارة
SQLال11تي يجب تمريرها إلى قاع11دة البيان11ات لتتم عملية البحث بأس11لوب س11اق الكلمة آخ11ذين بعين االعتب11ار
مجموعة النقاط التي سبق اإلشارة إليها إضافة إلى المزيد غيرها من النقاط.
بعد إتمام بناء هذا الصنف وتجريبه تمت إضافته بداي11ة األم11ر إلى موق11ع http://www.phpclasses.orgوه11و
ذات الموقع الذي كنت أتوجه إليه فيما مضى بحثا عن أصناف تؤدي وظائف أحتاج إليها في تط11وير ه11ذا التط11بيق
أو ذاك ،لكنها كانت الم11رة األولى بالنس11بة لي ال11تي ألعب فيه11ا دور المؤل11ف ال11ذي يض11يف عمال مفت11وح المص11در
ليصبح متاحا لآلخرين .إحدى النقاط اإليجابية في هذا الموقع هي أن1ه ليس مج1رد مك1نز لألص1ناف ال1تي يطوره1ا
المبرمجون من جميع أصقاع العالم فقط ،بل لهذا الموقع إدارة ومشرفين يعاينون البرامج التي ترسل إلي11ه فإم11ا أن
يوافقوا عليها لتضاف ،أو يعت1ذرون عن قبوله1ا إن ك1انت دون المع11ايير ال1تي يل1تزمون به1ا (على ال1رغم من أنه1ا
معايير أقل صرامة من مكانز أخرى مثل PEARالمكنز الرسمي ألصناف PHPالمعيارية) ،ليس ه11ذا فحس11ب،
بل كانت هنالك لجنة تنتقي أفضل عشرة أعمال تمت إضافتها إلى الموق11ع في ك11ل ش11هر ليج11ري التص11ويت عليه11ا
طيلة أيام الشهر الذي يليه من قبل المبرمجين المنتس1بين للموق1ع الختي1ار أفض1لها ،وق1د ك1ان الختي1ار ArQuery
ومن ثم حلوله في المركز الثامن في شهر شباط /فبراير من عام 2006بمثابة مفاجئة س11عيدة عملت على تحوي11ل
فك1رة غض1ة طفولي1ة إلى مش1روع حقيقي أخ1ذ يس1تهلك ش1يئا فش1يئا معظم أوق1ات ف1راغي .وهك1ذا ت1والت األفك1ار
واألعمال والجوائز ،فأصبح هنالك ما يزيد عن 17صنفا نالت 7جوائز 4منها كانت للصدارة.
إن تلك األعمال كانت سببا في التعرف واللقاء مع الكثير من المبرمجين العرب المتحمسين والذين اصبحوا فيما
بعد أصدقاء عزيزين ساهموا بشكل أو بآخر في تحسين العمل على هذا المشروع سواء من خالل تنقيح األخطاء
والهفوات بين الحين واآلخر ،أو من خالل النصائح واألفكار التي ساعدتني أيما مساعدة على تطوير جودة العمل
ومقدراته .ووصل المشروع بعد عام درجة من النضج سمحت بالحصول على فرصة تأليف كتاب يتحدث عن
مفهوم البرمجيات الحرة المفتوحة المصدر بشكل عام ،وعن أفكار وخوارزميات مجموعة منتقاة من هذه
األصناف بتفصيل تقني واف ،ونشر هذا الكتاب من قبل دار شعاع للنشر مشكورة تحت عنوان " PHPواللغة
العربية " .كما تم إطالق الموقع الرسمي الخاص بهذا المشروع على شبكة اإلنترنت بعد أن كان ال يتعدى كونه
طائفة من األصناف المنشورة في هذا الموقع أو ذاك .وأخذ المبرمجون العرب رويدا رويدا يستخدمون هذه
األصناف في أعمالهم .إن كسب تلك الثقة لم يكن باألمر السهل أو السريع على اإلطالق ،إنما جاء نتاجا
لمجهودات كبيرة خاصة فيما يتعلق بدعم المبرمجين في حل المشاكل التي يمكن أن تواجههم عند تطبيق هذه
التقنيات لالستفادة منها على الوجه األمثل.
لم تقتصر نشاطات 4االنطالقة الجديدة للمشروع على ذلك فحسب ،بل تعدتها إلى طيف من الخدمات الداعمة المحيطة به والتي
تكمل بدورها صورته وتعزز مكانته ليقف على قدم المساواة بين غيره من البرمجيات الحرة المفتوحة المصدر كإضافة4
جديدة صغيرة لكنها تتبع ذات اإلجراءات والمعايير القياسية التي يتبعها الكبار من محترفي هذا القطاع من تقنية المعلومات،
فمن إدارة أفضل للشيفرة المصدرية باستخدام CVSحيث باتت تنشر اآلن على موقع ،sourceforge.netإلى وضع آلية
لضبط الجودة من خالل تطبيق عملية فحص مؤتمتة تختبر كافة 4مرافق المكتبة عقب إجراء أي تعديل عليها وذلك قبل نشر
النسخة المعدلة من جديد وذلك باستخدام إطار عمل PHPUnitلبناء االختبارات المؤتمتة ،هذا عدى عن إضافة توثيق
متكامل للشيفرة المصدرية بصيغة معيارية باالستفادة من برنامج phpDocumentorلتوثيق الشيفرة البرمجية بشكل شبه
آلي ،كل ذلك والمزيد تم نشره في موقع المشروع على شبكة الويب.
إن األدوات المساعدة في كل من عمليات إدارة الشيفرة المصدرية وأتمتة االختبارات وتوثيق الشيفرة المصدرية هي مسألة ال
تقل أهمية عن إتقان لغة البرمجة المستخدمة ذاتها ،فاالحتراف ومتطلبات العمل الجماعي ضمن الفرق تتطلب مهارات ال
تنحصر بمجرد صقل موهبة التحليل والبرمجة .وقد كان الدافع من وراء ذلك هو السعي الدؤوب إلى إضافة هذا العمل إلى
مكتبة PEARالقياسية الخاصة بلغة ،PHPوكان هذا الهدف يبدو بعيد المنال أول األمر ،لكننا اآلن قاب قوسين أو أدنى من
إتمام إجراءات التسجيل واإلضافة بعد الوفاء بجميع المتطلبات التي تشترطها ،وقد اتسمت 4الرحلة ما بين هذين النقيضين
بالكثير من الجهد وترافقت بتعلم العديد من التقنيات الجديدة واكتساب المزيد من الخبرات التي ساهمت في تحقيق هذا الحلم
وجعله واقعا.
مع بداية عام 2009اتخذ هذا المشروع بعدا جديدا حيث بدأ العمل على التطبيقات العملية التي تستفيد من
مجموعة الوظائف التي باتت تتيحها هذه المكتبة في بناء اإلضافات وتعديل ما هو موجود من برمجيات حرة
مفتوحة المصدر لتقدم دعما أفضل للغة العربية .حيث أصبحت هذه المكتبة متوفرة بصيغة مالئمة إلطار عمل
CakePHPومكتبة PEARمما ساهم في زيادة سهولة استخدامها وتطبيقها في مثل هذه البيئات .كذلك تم
تطوير بعض اإلضافات التي تطبق مجموعة من وظائف وخدمات المشروع في كل من مدونة Wordpress
ونظام Drupalإلدارة المحتوى ،وجار العمل إلضافة المزيد ،هذا عدى عن إضافة خاصة بالمتصفح Firefox
و أداة TinyMCEلتنقيح النصوص والتي تعمل بمبدأ ما تراه هو ما ستحصل عليه وتستخدم في العديد من
تطبيقات الويب التفاعلية .المثير لالهتمام في مثل هذا التوجه أن معظم هذه النشاطات باتت تدار وتطور من قبل
طائفة من المبرمجين ممن هم أصدقاء للمشروع ومتابعين له.
وجاءت المشاركة في ماراثون البرمجة للتقنيين العرب والذي نظم في القاهرة ما بين 20و 23مايو /أيار
2009فرصة للقاء العديد 1من المطورين والمبرمجين العرب أصحاب الخبرة من المهتمين بدعم اللغة العربية
على شبكة الويب ،حيث تم العمل على دمج هذه المكتبة بتطبيقات جديدة مثل نظام Drupalإلدارة المحتوى ،أو
تطوير بعض اإلضافات الموجودة أصال كتلك الخاصة بمدونة Wordpress 1أو متصفح ،Firefoxليس هذا
فحسب ،بل تم العمل على تطوير نواة المكتبة ذاتها وتحسينها بناء على خبرات ونصائح بعض المشاركين مما
انعكس إيجابا على جودتها وفعاليتها ،كذلك انضم بعض المتحمسين إلى قائمة مطوري المكتبة ذاتها حيث قاموا
بإضافة وظائف جديدة أو عدلوا على وظائف سابقة وحسنوها ،وانتهى بنا المطاف بفريق عمل مكون من تسعة
مطورين يعملون بجد إلطالق اإلصدار الثاني من هذه المكتبة قريبا ،هذا عدى عن تقديم طيف واسع من
التطبيقات واإلضافات المبنية على وظائف ومزايا هذه المكتبة .لمزيد من المعلومات حول هذا الحدث:
دعونا نعود للتكلم عن وجهة النظر األخرى ،والتي تتحدث من منظور الراغب في معرفة نتاج هذا المشروع
حتى اآلن ،وكيفية االستفادة منه .للوصول إلى هذه الغاية سنقوم باستعراض األصناف التي تم تطويرها في هذا
المشروع وعمل كل منها.
يقوم صنف ArAutoSummaryبعملية التلخيص اآللي للنص العربي ،فكل ما عليك القيام به هو تمرير النص
الكامل إلى هذا الصنف إضافة إلى اإلشارة إلى عدد الجمل األقصى الذي تريده في الخرج ،أو نسبة حجم
التلخيص إلى حجم النص الكامل ،لتحصل بالنتيجة على التلخيص المنشود .ليست هذه بالفكرة الجديدة 1،فهي
موجودة منذ زمن في معالجات النصوص مثل ،MS-Wordكما أنها متاحة كمنتج تجاري لتطبيقات الويب من
قبل شركة صخر ضمن حزمة السراج لتحليل النص العربي (تصنيف ،تلخيص ،كلمات مفتاحية ،أعالم) ،لكنها
المرة األولى التي يقدم فيها صنف مفتوح المصدر لمبرمجي PHPلتلخيص النص العربي.
تقوم الفكرة على أساس فرز كامل كلمات النص بحسب جذورها بعد حذف الكلمات الشائعة منها مثل أسماء
اإلشارة وأحرف الجر الخ( ...في حقيقة األمر لم أستخدم خوارزمية الستخالص الجذر اللغوي للكلمة ،بل عوضا
عن ذلك قمت بحذف األحرف األقل أهمية من الكلمات جميعا ،وهي األحرف األكثر تكرارا في السوابق واللواحق
التي ترتبط عادة بالكلمات العربية ،وقد كانت النتائج عند تطبيقها مع خوارزمية التلخيص اآللي التالي شرحها
أكثر من مقبولة) ،بعد ذلك يتم تقييم كل من تلك الجذور باستخدام عدد من النقاط تزيد بزيادة مرات تكرارها
ضمن النص (وذلك لمحاولة التعرف على الكلمات المفتاحية في النص المدروس) ،وبعدها تتم عملية إسناد النقاط
لجمل النص األصلي من خالل إيجاد متوسط نقاط الكلمات المؤلفة منها تلك الجمل باإلضافة إلى مجموعة أخرى
من المعايير من قبيل مكان الجملة في الفقرة (فالجمل في بداية الفقرات ونهايتها عادة ما تكون ذات أهمية أعلى
من تلك التي في قلب الفقرة) ،وكذلك فإن طول الجملة يؤثر بدوره ،فيتم استثناء الجمل فائقة القصر أو تلك
الطويلة جدا ،في نهاية المطاف يتم ترتيب الجمل التي حازت على أعلى نقاط ليستقر الخيار على استخدامها في
الملخص ،ومن ثم يعاد ترتيبها في الملخص بحسب ترتيبها في النص األصلي بغض النظر عن مجموع النقاط
الذي حازت عليه .إن تطبيق هذه الخوارزمية أتى بنتائج باهرة ومقبولة جدا بالنسبة للقارئ البشري.
أحد األصناف األخرى التي طورت في إطار مشروع PHPواللغة العربية هو الصنف ArSoundexالمختص
بكشف التشابه اللفظي بين األسماء التي ال تشترك في ذات طريقة الكتابة ،ففي البدء كانت اللغة ،ومن ثم جاءت
الكتابة لترمز األصوات التي تقال باألشكال التي ترسم (أو تكتب) ،وقامت كل أمة بصياغة أحرف كتابة لغتها بما
يتناسب واألصوات التي يطلقونها حين التحدث والكالم ،لكن المشكلة تظهر حينما يراد كتابة اسم ما أو مصطلح
بلغة أجنبية تختلف عن لغته األم ،فحينها قد ال تسعف أحرف اللغة المنقول إليها في التعبير عن اللفظ الحقيقي لتلك
الكلمة .إن الكلمات التي تكتب خطأ بأكثر من تهجئة عادة ما تشكل كابوسا حقيقيا لمصممي قواعد البيانات ،ومنها
األسماء على سبيل المثال ،خصوصا تلك األعجمية منها والتي تعود بأصولها إلى التركية أو األرمنية أو الكردية
أو سواها من مصادر ثقافات أخرى.
لحل هذه المشكلة برزت الحاجة إلى خوارزمية تستطيع العثور على األسماء أو المصطلحات ذات األصوات
المتشابهة ،إن مثل هكذا فئة من الخوارزميات تدعى ،SoundExesحيث تقوم بتحويل كلمة ممررة إليها (كإسم
شخص على سبيل المثال) إلى سلسلة نصية تحدد مجموعة الكلمات التي تقاربها لفظا .تقوم الفكرة األساسية لهذه
الفئة من الخوارزميات على تصنيف األحرف في مجموعات بحسب طريقة لفظها ،وتمتلك لغة PHPتابعا خاصا
بها إلجراء تلك المعالجة ويدعى ،Soundexلكن كما هو واضح فإنه مخصص للكلمات المكتوبة باللغة
اإلنجليزية وعديم الفائدة تماما في حالة اللغة العربية ،ما قمنا به في هذا المشروع هو تطوير صنف مخصص
للغة العربية ،فإن أنت أدخلت أي من األسماء التالية (كلينتون ،كلينتن 1،كلينطون ،كلنتن ،كلنتون ،كالينتون)1
لحصلت على الدوام على الرمز K453كقيمة Soundexلهذه الكلمات ،في حين أن اسم مثل "كلينزمان" له
قيمة Soundexمختلفة وهي .K452
ليس لهذا النوع من المسائل وجود فعلي حينما تتشارك اللغتان المراد التحويل فيما بينهما ذات األبجدية (كما في
معظم اللغات األوروبية) ،لكن الحال ليست كذلك بين اللغة العربية واإلنجليزية ،لذا طورنا صنف
EnTransliterationلتحويل األسماء العربية إلى مكافئاتها اللفظية لكن باستخدام أحرف إنجليزية (فمثال "نِزار
قَبَّانِي" تصبح ،Nizar Qab'baniو " ُغوطَة ِد َمشق" تصبح ،)Ghutah Dimashqوكذلك الصنف
ArTransliterationوالذي يقوم بالدور المعاكس من خالل تحويل األسماء والكلمات اإلنجليزية إلى ما يكافئها
لفظا بالعربية (فمثال Internetتصبح "إنترنت" ،و Arizonaتصبح "أريزونه").
دعونا اآلن نستعرض معا في عجالة بعض من األصناف التي تم تطويرها ضمن إطار ذات المشروع ،فهنالك
الصنفين ArDateو ArMktimeللتحويل فيما بين صيغة التأريخ الهجري والميالدي إضافة إلى وظائف
إظهار التأريخ باألسماء العربية لألشهر واأليام.
أما الصنف ArNumbersفيقوم بتحويل رقم صحيح معطى إلى ذات الرقم لكن كتابة باللغة العربية ،أو ما
اصطلح على تسميته عادة بالتفقيط ،وهي وظيفة كثيرة االستخدام في التطبيقات المصرفية أو التي تجري بها
تعامالت مالية مثل الفواتير ،حيث تراعي هذه المكتبة عالمة إعراب المعدود 1سواء كانت بالرفع أم النصب أم
الجر ،إضافة إلى حالة المعدود سواء كان مذكرا أم مؤنثا.
بالحديث عن التذكير والتأنيث تجدر اإلشارة إلى الصنف ArGenderوالذي يقوم بتمييز الكلمات العربية المؤنثة
تأنيثا لفظيا ،مثل الكلمات التي تنتهي بالتاء المربوطة أو المفتوحة ،أو تلك التي تنتهي باأللف المقصورة أو األلف
والهمزة .يمكن االستفادة من هذا الصنف على سبيل المثال في مساعدة الصنف الخاص بالتفقيط للحصول على
خرج أصح لغويا.
هنالك أيضا مجموعة من األصناف المفيدة ألنظمة البحث عن المعلومات واسترجاعها ،منها الصنف
ArWordTagالذي يحدد التعابير اإلسمية أو تلك التي تتضمن أرقاما أو تواريخ ضمن النص المعطى ،وهي
عادة المقاطع األكثر أهمية من ذلك النص والتي تتضمن أكبر قدر من المعلومات فيه .يتم تحديد التعابير اإلسمية
باستخدام بعض القواعد اللغوية ،فاألسماء على سبيل المثال هي التي تعرف بأل التعريف أو التي تتلو أحرف
الجر .هنالك صنف آخر مفيد ألنظمة استرجاع البيانات هو الصنف ArIdentifierالذي يستخرج النصوص
العربية الموجودة ضمن وثيقة متعددة اللغات تستخدم مجموعة المحارف العالمية الموحدة UTF-8في ترميزها.
كذلك فقد طورنا الصنف ArCharsetDليقوم بمهمة التعرف على مجموعة المحارف المستخدمة في ترميز
وثيقة عربية ما من خالل نموذج إحصائي يقارن ما بين أكثر الرموز تكرارا وما يجب أن يكافئها من حروف
عربية بحيث يتم إنتقاء الترميز الذي يحقق أكبر مطابقة ما بين هذين العاملين .أما إن أردت التحويل فيما بين
مجموعات المحارف العربية المختلفة التي تستخدم عادة في مواقع الويب العربية وهي Windows-1256و
UTF-8مع وجود القليل من المواقع التي تعتمد مجموعة المحارف ،ISO 8859-6في تلك الحالة يمكنك
استخدام الصنف ArCharsetCإلنجاز عملية التحويل هذه.
من جهة أخرى تمتلك لغة PHPمكتبة مخصصة لتوليد ملفات PDFالديناميكية 1،لكنها لألسف ال تدعم اللغة
العربية حتى اآلن ،لذا توجهنا ناحية استخدام مكتبة مطورة من قبل طرف ثالث تدعى UFPDFتستطيع التعامل
مع مجموعة المحارف العالمية الموحدة ،UTF-8وهو ما سيمكننا ضمنا من التعامل مع النصوص العربية .لكن
المشكلة ظهرت مع أول تجربة لنا حين ظهر النص العربي بأحرف مفصولة عن بعضها البعض.
ذات المشكلة كانت تظهر أيضا مع مكتبات PHPاألخرى التي تنشئ ملفات SWF Flashديناميكية أو تتعامل
مع النصوص ضمن بيئة VRMLللواقع االفتراضي أو تكتب على ملفات الصور باستخدام مكتبة ،GDفجميع
تلك المكتبات تتعامل مع األحرف العربية بشكل مصمت دون أي معالجة للسياق ،حيث أن تلك المعالجة غير
معروفة أو مستخدمة في حالة اللغة اإلنجليزية ،فأشكال األحرف تبقى على حالها بغض النظر عما يسبقها أو
يتلوها ،وهذه ليست حال اللغة العربية ،لذا قمنا بتطوير الصنف ArGlyphsوالذي يجري معالجة أولية على
النص العربي المدخل إليه بحيث يعطي كخرج له سلسلة من رموز مجموعة المحارف العالمية الموحدة الموافقة
تماما لألشكال التي يجب أن تظهر عليها تلك الحروف بحسب مكانها من سياق الكلمة ،وبذا أصبح ممكنا
الحصول على نص عربي سليم المظهر مع أي من تلك المكتبات السابقة الذكر.
أخيرا ،من منا لم يقع في خطأ نسيان تحويل لغة لوحة المفاتيح حين التعامل مع نص ثنائي اللغة مما ينتج عنه
نص غير مفهوم باللغة األخرى؟ لقد تم تطوير الصنف ArKeySwapلمعالجة مثل تلك الحاالت بشكل آلي،
حيث يتلقى هذا الصنف تلك السلسلة النصية ذات األحرف العربية غير المفهومة ويعيد ما كان يجب أن تكون
عليه تلك السلسلة النصية بأحرف إنجليزية ،أو العكس بالعكس.
كل صباح أستيقظ ألخاطب نفسي قائال :حسنا ،ماذا بعد؟ لكنني دوما ما أجد األفكار الجديدة 1في هذه األرض
الخصبة العذراء ،في ذات الوقت فإن مهمة تسجيل وإضافة هذا المشروع إلى مكتبة PEARالمعيارية الموحدة
لتلبية احتياجات اللغة العربية هي إحدى المهام التي تقبع على رأس األولويات ،وذلك رغبة في استكشاف آفاق
جديدة من االندماج في عالم تطوير البرمجيات الحرة المفتوحة المصدر ولعب دور إيجابي فاعل فيه ،من يدري
ربما نتحدث بعد عام عن تطوير مكتبة PECLأيضا!
لكن الخطوة االستراتيجية التالية ستكون في التطبيقات التي تدمج ما بين اللغة من جهة والنماذج الرياضية
اإلحصائية من جهة أخرى ،ومن أمثلة تطبيقات هذا التوجه أداة الترجمة اآللية بين اللغة العربية واإلنجليزية التي
طورتها شركة ،Googleأو المشكل اآللي المطور في معهد بحوث الحاسب واإللكترونيات في مدينة الملك عبد
العزيز للعلوم والتقنية في المملكة العربية السعودية .إن العقبة األساسية أمام مثل هكذا طموح هي حاجة جميع هذه
األنظمة المطورة على أساس النماذج الرياضية اإلحصائية إلى مكنز مفتوح المصدر ومنقح وغزير للنصوص
العربية الخام المترجمة أو المشكلة أو المصنفة ليتم تحليلها واستخدامها في بناء النموذج اإلحصائي الرياضي
المرغوب ،وهو أمر يعز الحصول عليه حاليا ويحتاج إلى توفير الكثير من الموارد والوقت مما يجعل منه حكرا
على المشاريع والشركات الكبيرة ،لذا أطمح إلى التعاون في إطالق مشروع مثل هكذا مكنز مفتوح المصدر
ليكون متاحا للجميع ليسهل على األفراد والشباب االستفادة منه والتركيز على تطوير النموذج اإلحصائي ذاته
عوضا عن ضياع الكثير من الموارد في تأمين االحتياجات اللوجستية التي بالغا ما بلغت تبقى منقوصة ومحدودة
إن كان طابع العمل فرديا.
في الختام أدعوكم لزيارة موقع المشروع على شبكة الويب على العنوان http://www.ar-php.orgلإلطالع
على ما يوفره من خدمات وأمثلة برمجية وما يرتبط بها من توثيق ،أما من يجدون في أنفسهم الهمة والخبرة على
المساهمة في هذا المشروع فعليهم بصفحة المشاركة (كيف تساهم) حيث سيجدون العديد 1من األفكار واألساليب
التي يستطيعون من خاللها أن يكونوا أكثر إيجابية تجاه هذا المشروع وتجاه مجتمع الويب العربي:
http://www.ar-php.org/participate_php_arabic.html