الرئيسية      أرشيف المقالات       المنتدى        المكتبة       إتصل بنا
  القائمة الرئيسية
  Language
  تسجيل الدخول
اسم المستخدم :

كلمة المرور :

تذكرني



هل نسيت كلمة المرور ؟

اشترك الآن !
  بحث
  أقسام المقالات
  آخر المشاركات
  كتب جديدة
 
  زوار هذه الصفحة
اليوم 18
أمس 55
الإجمالي 26695
  الموقع

دلفي -  دعم اللغة العربية وتنسيق يونيكود في دلفي
بواسطة عروة عيسى في 2016/12/14 (1221 قراءة)
دلفي

المزيد حول دعم اللغة العربية وتنسيق يونيكود في دلفي

قديما , وعند تشغيل برامج مصممة على دلفي كانت تظهر مشكلة صغيرة مع اللغة العربية على اجهزة ويندوز التي لم يتم تحديد خيارات اللغة فيها بشكل مكتمل , وبالتحديد خيار : change system locale في الإعدادات الإقليمية ضمن خيارات لوحة التحكم (region and Language) .

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

الإصدارات الحديثة من دلفي حلت بشكل كبير المشكلة , والآن تظهر معظم النوافذ وخياراتها بشكل صحيح باللغة العربية وذلك بسبب الانتقال من تنسيق Ansi إلى UTF القياسي في البيئات الجديدة , ولكن بقيت بعض المشاكل تظهر هنا وهناك وبالأخص النصوص التي تولد برمجيا في زمن التشغيل أو رسائل الخطأ أو غير ذلك فهي لازالت تظهر بشكل غير سليم إذا لم تكن خيارات اللغة مضبوطة .

ما هو سبب هذه المشكلة وما هو حلها ؟



سبب المشكلة هو موضوع دعم تنسيق UTF , وهو التنسيق الافتراضي عالميا , الذي يجعل البرامج تعمل بشكل قياسي على كل الأجهزة بلا مشاكل.
قديما كان تنسيق ملفات الدلفي هو ANSI وهو تنسيق غير قياسي خاص بوندوز يعتمد على ملفات اللغة المنصبة (System Locale) وهي مختصة بالتعامل مع البرامج التي لاتدعم يونيكود .

أما في الإصدارات الحديثة من دلفي فقد تم دعم يونيكود , وتم حل معظم المشكلة مع اللغة العربية وغيرها كاليابانية والصينية , ولكن بقيت تظهر اللغة بشكل غير قياسي في حالات خاصة .
السبب ان البيئة دعمت خيار اليونيكود وإمكانية اختيار نوع تنسيق الملف من المحرر , ولكنها لا تقوم بضبط الخيار بشكل افتراضي ,مما يتسبب بتغيير تنسيق الملف عند تحريرة والكتابة ضمنه بلغة أخرى كالعربية ويقوم بحفظة بالتنسيق القديم ANSI (ربما كنوع من التوافقية الارتجاعية) , وبالتالي على المطور أن يضمن أن ملفاته بترميز UTF بشكل يدوي.

عند إنشاء فورم جديد فإن الإصدارات الحالية تجعل تنسيق ملفي DFM و PAS افتراضيا إلى UTF .
ولكن نلاحظ بعد كتابة كلمات عربية ضمن ملف الوحدة البرمجية PAS فإن الملف يحفظ بتنسيق ANSI وذلك بعد أن تعرف على محارف غير قياسية على ما يبدو , وهذا ما يسبب مشاكل عدم ظهور اللغة العربية بشكل صحيح فعليا بالرغم من دعم اليونيكود , فالسلاسل النصية حفظت بترميز ANSI وبالتالي لن تظهر بشكل صحيح إلا إذا تم ضبط خيارات اللغة للبرامج التي لاتستخدم اليونيكود من لوحة التحكم وهذا هو أصل المشكلة.

طريقة الضبط :

لإجبار البيئة على استخدام تنسيق يونيكود UTF8 بشكل دائم في الملف, نضغط بالزر الأيمن ضمن محرر الكود لملف الوحدة  ونختار File Formate ونضبطه إلى UTF8 , الآن سيتم التعامل مع الملف بتنسيق يونيكود بشكل دائم لإن المحرر سيقوم بتعليم الملف كUTF بسلسلة محارف BOM وبالتالي سيتعرف عليه كل مرة على أنه UTF وهذا لوحدة كفيل بحفظ السلاسل النصية ضمن الكود والملف التنفيذي بالنهاية بصيغة يونيكود.

FileFormate
يفضل ان يتم ذلك قبل الكتابة على الملف , لإن تحويل الملفات القديمة من ANSI إلى UTF قد لايحدث دائما بشكل الي وبصورة سليمة , في حالات خاصة قد تظهر الكلمات العربية بلغة غير مفهومة ضمن الكود نتيجة تحويل تنسيق الترميز , وعلى كل في حال واجهت أي مشاكل بتحويل ملفات قديمة إلى يونيكود فلست مضطر للقيام بذلك من ضمن البيئة حصرا ويمكنك القيام بالتحويل عن طريق محرر خارجي (NotePad++ مثلا) وذلك لمرة واحدة لضمان أن النصوص العربية مكتوبة بشكل سليم ضمن الكود. 

في المشاريع العادية اذا تأكدنا أن كل ملفات الوحدات (*.pas) بترميز UTF8 وأعدنا ترجمة المشروع , يصبح برنامجنا داعم لتنسيق يونيكود القياسي ولايفترض أن يواجه مشاكل مع اللغة حتى على الأجهزة التي لم تضبط الخيارات الأقليمية و system locale بشكل مناسب .

ويمكن تجربة ذلك على نظام تشغيل لم يتم ضبط خيارات اللغة عليه أو بإالغاء تنصيب System Locale الخاص باللغة العربية من الخيارات الإقليمية في لوحة التحكم وسنلاحظ أن البرنامج سيعمل باللغة العربية بلا اي مشاكل , سواء النوافذ والمكونات أو رسائل زمن التشغيل أو غير ذلك. 


مشكلة وحل :
مشكلة بسيطة أن البيئة لم تدعم في اعداداتها حتى الآن خيار جعل UTF8 هو التنسيق الافتراضي لكل الملفات , ويجب تكرار عملية تحويل File Formate لكل ملفات الوحدات في المشروع .
قام بعض المطورين بإيجاد حلول جيدة , مثلا قام مطور ياباني بإعداد إضافة للبيئة IDE PlugIn سهلة التنصيب , تقوم بتحويل جميع الملفات الجديدة إلى UTF وبالتالي تحل المشكلة بشكل جيد .
رابط تحميل الإضافة :
utf8ize-0.0.3

في بعض الحالات لايكفي تحويل تنسيق الملفات لإن الكود البرمجي يقوم بمعالجة الملفات أو النصوص بتنسيق خاص من ضمن الكود , يجب الانتباه لأي كود يستخدم تنسيقات Locale مخصصة ويجب إجراء تعديلات عليه بشكل صحيح .
بعض الأمور واضحة وسهلة مثلا :

Memo1.Lines.LoadFromFile(filename,TEncoding.UTF8);

والبعض الآخر يحتاج تعديلات في طريقة التعامل مع النصوص , بحسب نوع البرنامج وماذا يستخدم . يمكن الإطلاع على المزيد في الروابط بالأسفل .

المزيد حول دعم اللغة العربية
قمت في وقت سابق بإنشاء حلول مفيدة لزيادة دعم اللغة العربية في دلفي عن طريق التعديل على ملفات VCL القياسية في الدلفي , وتعريب العديد من الملفات والرسائل التي تظهر في زمن التشغيل وأيضا تحسين الكثير من المكونات لتظهر بشكل يناسب اللغة العربية "من اليمين لليسار" عن طريق خاصية BidiMode مثل TreeView و PageControl وغيرها .
وميزة هذه الطريقة عن الطرق السابقة التي جربناها (منها مكون ArMan الذي قمت به سابقا) أنها لاتحتاج إلى تنصيب أي مكون أو إلى إضافة أي كود إلى المشروع ويكفي وضع الوحدات إلى جانب وحدات المشروع وسيتم الربط معها اليا بدلا من الوحدات الأصلية . أو يمكن إضافتها إلى مسارات البيئة وبالتالي ستصبح افتراضية لكل المشاريع . الملفات الحالية مخصصة لإصدارة Delphi 10.1 Berline لإني لا املك غيرها حاليا على جهازي .

لمعرفة المزيد يمكن الإطلاع على التفاصيل هنا : Arabic-Delphi-VCL-Units

للحصول على آخر نسخة من الملفات حمل من هنا 
(الملفات تتعدل بشكل دوري , احرص على تنصيب اخر نسخه منها لأفضل دعم للغة العربية)

للإطلاع على المزيد حول UTF:
هذه بعض الروابط المفيدة بالأنكليزية

Unicode in RAD Studio

Enabling Applications for Unicode

Delphi Unicode Migration

أطيب التحيات 
عروة عيسى
رابط المقالة الأصلي

التقييم: 0.00 (0 أصوات)
**** تحضير للطباعة أرسل هذه المقالة
أضف هذه المقالة إلى المواقع التالية
إضافة إلى Blinklist إضافة إلى del.icio.us إضافة إلى Digg إضافة إلى Fark إضافة إلى Furl إضافة إلى Newsvine إضافة إلى Reddit إضافة إلى Simpy إضافة إلى Spurl إضافة إلى Yahoo مرجع إلى Balatarin مرجع إلى Faceboom مرجع إلى Twitter مرجع إلى Scripstyle مرجع إلى Stumble مرجع إلى Technorati مرجع إلى Mixx مرجع إلى Myspace مرجع إلى Designfloat _NW_BOOKMARK_TO_GOOGLEPLUS _NW_BOOKMARK_TO_GOOGLEREADER _NW_BOOKMARK_TO_GOOGLEBOOKMARKS
التعليقات تخص صاحبها ولا تخص ادارة الموقع
الكاتب الموضوع




عروة نت 2003-2016 . بالاعتماد على زوبس