السلام عليكم ورحمة الله وبركاته،
من مدة قمت بدراسة لمكتبات النظام للتعرف على كيفية إظهار اللغة العربية في البرامج ومعرفة سبب ظهورها مشوهة في أنظمة غير داعمة للغة العربية ... الدراسة أنهيتها وإليكم أحد ثمراتها:
الشرح صالح للأنظمة 2000 فما فوق...
المعلومات المقدمة هي حصرية وغير مشروحة في الإنترنت أو مراجع ميكروسفت وأكشفها لكم اليوم بتاريخ 26-01-2013 وهذا الموقع كأول مكان لها ...
أي إستعمال لها يستلزم بشكل إجباري وضع هذا الشرح مع البرنامج (ليس ضروريا الموقع أو صاحب الأفكار والشرح ليس ضروريا حرفيا ويمكن أن يختصر) ولن أسامح أحدا إستعمل أفكاري بدون التقيد بالشرط ولا يتعجب أحد من هذا لأنه أولى أن نتعجب من من يرفض الشرط.
كل ما هو ضروري لإظهار اللغة العربية في البرامج موجود مسبقا وإفتراضيا على الأنظمة 2000 فما فوق.
النظام داعم للغة العربية إذا كان يوجد مفتاح وأي مفتاح كان داخل هذا المسار من السجل:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LanguagePack
إذا كان موجودا فبرامج unicode ستعمل بدون مشاكل في إظهار اللغة العربية ، أما برامج ascii فلن تظهر العربية إلا إذا تغيرت لغة النظام الإفتراضية إلى العربية.
أما إذا كان غير موجودا فكل من برامج unicode و ascii لن يظهرا بشكل جيد العربية.
يكفي إضافة مفتاح عشوائي وإعادة تشغيل الجهاز لكي تعمل برامج unicode إذن. هذا الأمر سيسبب تحميل مكتبة usp10 المتخصصة في رسم النصوص المعقدة كالعربية وهي تستعملها مكتبة gdi، هذه الأخيرة تأخذ الأمر من إستخذام دوال usp10 عن طريق نواة kernel وهذا بدوره يقرر ذالك عند قراءته للمسار السجل السابق ...
لكن هل يمكن أن نظهر اللغة العربية في برامج unicode بدون إعادة تشغيل للجهاز وبدون إظافة المفتاح؟
نعم يجب إجبار مكتبة gdi على إستخذام دوال usp10 في معالجة النصوص التي لاتفهمها، ويكفي إستدعاء هذه الدالة الموجودة في gdi
invoke GdiInitializeLanguagePack,0
بهذا الإستدعاء فقط في بداية برامجنا يكفي أن يشغل النظام برامجنا باللغة العربية في أنظمة داعمة أو غير داعمة للغة العربية.
ملاحظة: لاتستدعي الدالة إلا إذا كان النظام غير داعم للغة العربية (تحقق من المفتاح) ، لو كان النظام داعما فلاداعي للإستدعاء أو ناديها لكن بالبرامتر يساوي واحد.
invoke GdiInitializeLanguagePack,1
ماذا عن برامج ascii؟ هل يمكن إظهار اللغة العربية بدون تغيير اللغة الإفتراضية للبرامج؟ وبدون إعادة تشغيل للجهاز؟
نعم ... هل أنتم مهتمون فعلا لمعرفة ذالك؟

