‫بالعربية‬ ‫البرمجيات‬ ‫تطوير‬
‫والطرائق‬ ‫المسائل‬
‫زروقي‬ ‫طه‬
‫الجزائر‬ ‫للمعلوماتية‬ ‫العليا‬ ‫الوطنية‬ ‫المدرسة‬
Taha.zerrouki@gmail
‫للتدريب‬ ‫غوغل‬ ‫مخيم‬
‫الكشكالية‬
‫بالعربية‬ ‫البرمجيات‬ ‫تطوير‬ ‫أهمية‬
‫المتعلقة‬ ‫التقنية‬ ‫المسائل‬
‫بالعربية‬ ‫البرمجيات‬ ‫تطوير‬ ‫أهمية‬
‫المسائل‬ ‫أهم‬
‫الترميز‬ ‫مع‬ ‫التعامل‬
‫الترميز‬ ‫اختيار‬
‫الويب‬ ‫صفحات‬ ‫ترميز‬
‫النظام‬ ‫إعداد‬
‫البرمجي‬ ‫التعامل‬
‫اليونيكود‬
‫النص‬ ‫عرض‬
‫اليسار‬ ‫إلى‬ ‫اليمين‬ ‫من‬ ‫الكتابة‬
‫الرحرف‬ ‫تشبيك‬
‫الترميز‬
‫العربية‬ ‫ترميز‬
ISO-8859-6  UTF-8 ‫وندوز‬ 1256
(CP 1256)
‫ ترميز‬
- ‫متعدد اللغات‬ 
‫والفرنسية‬ ‫العربية‬ ‫يشمل‬
‫والنجليزية‬
‫الخرى‬ ‫اللغات‬ ‫في‬ ‫التراميز‬ ‫مسألة‬
‫فقط‬ ‫بالعربية‬ ‫متعلقة‬ ‫غير‬
‫الويب‬ ‫صفحات‬ ‫ترميز‬
Windows 1256
UTF-8
‫الملف‬ ‫ترميز‬HTML
‫ملف‬ ‫في‬ ‫الترميز‬ ‫لتحديد‬HTML‫نضع‬
 <head>
 <META http-equiv="Content-Type"
content="text/html; charset=UTF-8">
 </head>
‫الملفات‬ ‫ترميز‬
‫ملف‬ ‫ترميز‬
‫ملف‬ ‫ترميز‬
‫التشغيل‬ ‫نظام‬ ‫إعداد‬
‫النظام‬ ‫إعداد‬
‫تلقائيا‬ ‫العربية‬ ‫يدعم‬ ‫ل‬ ‫كان‬ ‫إذا‬ ‫النظام‬ ‫إعداد‬
‫غريبة‬ ‫رموز‬ ‫ظهور‬
‫الحروف‬ ‫ط ع‬ّ‫ع‬ ‫تق‬
‫وندوز‬ ‫على‬ ‫البرامج‬ ‫عرض‬ ‫مشاكل‬
‫النظام‬ ‫إعداد‬
‫إقليمية‬ ‫إعدادات‬
‫العربية‬ ‫مثل‬ ‫النصوص‬ ‫تمكين‬
‫النظام‬ ‫إعداد‬
‫التي‬ ‫البرمجيات‬ ‫م ع‬ ‫للتعامل‬
‫تحديد‬ ،‫يونيكود‬ ‫تستخدم‬ ‫ل‬
‫التلقائي‬ ‫الترميز‬
‫حد‬ّ‫ع‬ ‫المو‬ ‫العالمي‬ ‫الترميز‬
Unicode
Unicode
‫الرموز‬ ‫جمي ع‬ ‫لتعريف‬ ‫تستخدم‬ ‫عالمية‬ ‫رموز‬ ‫مجموعة‬ ‫هي‬
‫العالم‬ ‫لغات‬ ‫أغلب‬ ‫في‬ ‫المستخدمة‬ ‫والحروف‬
‫من‬ ‫يستخدم‬1‫إلى‬4‫باي‬‫ت‬.
‫للرثراء‬ ‫قابل‬
Unicode.org
Unicode
‫يونيكود‬ ‫تمثيل‬
‫لترميز‬ ‫حاليا‬ ‫تستخدم‬ ‫رئيسية‬ ‫أنواع‬ ‫رثلرثة‬ ‫هناك‬Unicode:
UTF-8
‫يستخدم‬ ‫حيث‬ ،‫الويب‬ ‫مبرمجي‬ ‫لدى‬ ‫المفضل‬ ‫وهو‬1‫كانت‬ ‫إذا‬ ‫بايت‬
‫ترميز‬ ‫في‬ ‫موجودة‬ ‫الرموز‬ASCII، ‫وتستخدم‬2‫إلى‬4‫للرموز‬ ‫بايت‬
‫المعقدة‬.
UTF-16
‫إما‬ ‫يستخدم‬ ‫الترميز‬ ‫هذا‬2‫في‬ ‫موجودة‬ ‫الرموز‬ ‫كانت‬ ‫إذا‬ ‫للترميز‬ ‫بايت‬
Basic Multilingual Plane) BMP)‫و‬4‫الغير‬ ‫للرموز‬ ‫بايت‬
‫موجودة‬.
UTF-32:‫يستخدم‬4‫الدوام‬ ‫على‬ ‫بايت‬.
‫يونيكود‬ ‫تمثيل‬
A ‫א‬ 好
Code point U+0041 U+05D0 U+597D U+233B4
UTF-8 41 D7 90 E5 A5 BD F0 A3 8E B4
UTF-16 0041 05D0 597D D8 4C DF B4
UTF-32 00000041 000005D0 0000597D 000233B4
‫اليونيكود‬ ‫في‬ ‫العربية‬ ‫الحروف‬
‫الساسية‬ ‫العربية‬
‫القرآنية‬ ‫العلمات‬
‫الموسعة‬ ‫العربية‬
‫الفارسية‬
‫الردو‬
‫البشتو‬
‫الكردية‬
‫الفريقية‬ ‫اللغات‬

‫مثل‬ ‫التراكيب‬‫لم‬ ، ‫ل‬
‫اليونيكود‬ ‫في‬ ‫القرآنية‬ ‫العلمات‬
‫التحكم‬ ‫أحرف‬
‫التراميز‬ ‫م ع‬ ‫التعامل‬
Python
‫شفافة‬ ‫بطريقة‬ ‫اليونيكود‬ ‫م ع‬ ‫بيثون‬ ‫يتعامل‬
 #!/usr/bin/python
 # -*- coding=utf-8 -*-
 string=u"‫"العربية‬
 print len(string)
 print string[3]
 >>7
 >>‫ر‬
PHP
Php‫نحتاج‬ ‫لذا‬ ،‫اليونيكود‬ ‫م ع‬ ‫شفافة‬ ‫بطريقة‬ ‫يتعامل‬ ‫ل‬
‫سلسلة‬ ‫باعتبارها‬ ‫أو‬ ،‫معها‬ ‫للتعامل‬ ‫والمكتبات‬ ‫الدوال‬ ‫لبعض‬
‫.بايتات‬
‫مثل‬ ‫المكتبات‬ ‫ببعض‬ ‫الستعانة‬mbstring
‫مكتبة‬ar-php
Ar-PHP.org
‫مشروع‬ ‫مزايا‬PHP‫العربية‬ ‫واللغة‬
‫العربي‬ ‫للنص‬ ‫اللي‬ ‫التلخيص‬ •
‫الكلمة‬ ‫ساق‬ ‫بدللة‬ ‫البحث‬ •
‫المتصلة‬ ‫العربية‬ ‫الحروف‬ ‫إظهار‬ ‫معالجة‬ •
‫الهجرية‬ ‫أو‬ ‫بالعربية‬ ‫التواريخ‬ ‫عرض‬ •
‫للكلمات‬ ‫اللفظية‬ ‫الترجمة‬ •
‫العربية‬ ‫الرقام‬ ‫كتابة‬ :‫التفقيط‬ •
MySQL
‫إضافة‬‫استعلم‬MYSQL‫الصتصال‬ ‫بعد‬ ‫مباشرة‬ ‫ينفذ‬ ‫كي‬ ‫هذا‬
:‫البيانات‬ ‫بقواعد‬
 set character_set_server='utf8';
 set names 'utf8’;
MySQL
‫بلغة‬ ‫أو‬php
 <?php
 mysql_connect($db_hostname, $db_username,
$db_password);
 mysql_query("set character_set_server='utf8'");
 mysql_query("set names 'utf8'");
 // The rest of you php code!
 ?>
‫العرض‬
‫العرض‬
‫الصتجاه‬ ‫ثنائية‬
‫الحروف‬ ‫صتشبيك‬
‫الصتجاه‬ ‫ثنائية‬
‫الصتجاهات‬
‫المنغولية‬
‫الصتجاهات‬
‫الصينية‬
‫اليابانية‬
‫الكورية‬
‫الصتجاه‬HTML
‫الصتجاه‬ ‫محدد‬ ‫استعمال‬
 dir = LTR | RTL
LTR: Left-to-right text or table.
RTL: Right-to-left text or table.
 <p dir=‘rtl’>
 <html dir=‘rtl’>
CSS
 div
{
direction:rtl;
}
 Direction : rtl, ltr , inherit
‫التحكم‬ ‫أحرف‬
‫مثال‬
 <title>&#x202B;‫#&)المشروع)صتجريبي‬x202C;</tit
le>
PDFRLE
‫العرض‬
‫الصتجاه‬ ‫ثنائية‬
‫الحروف‬ ‫صتشبيك‬
‫الحروف‬ ‫صتشبيك‬
‫السياق‬ ‫حسب‬ ‫المناسب‬ ‫الحرف‬ ‫شكل‬ ‫اختيار‬
‫الخط‬ ‫مستوى‬ ‫على‬ ‫عادة‬ ‫يجرى‬
‫الهندية‬ ‫في‬ ‫الحروف‬ ‫صتشابك‬
‫العربية‬ ‫تدعم‬ ‫ل‬ ‫التي‬ ‫البرامج‬
‫مع‬ ‫التعامل‬ ‫في‬ ‫النظام‬ ‫إعدادات‬ ‫تستخدم‬ ‫ل‬ ‫البرامج‬ ‫بعض‬
‫الحروف‬
‫العربية‬ ‫تدعم‬ ‫ل‬ ‫التي‬ ‫البرامج‬
‫وسيطة‬ ‫برامج‬ ‫استعمال‬
 http://tadween.sourceforge.net/
‫برمجيا‬
‫نظام‬ ‫يوفر‬ ‫ما‬ ‫تستخدم‬ ‫ل‬ ‫التي‬ ‫التطبيقات‬ ‫بعض‬ ‫لتطوير‬
:‫مثل‬ ‫الخاص‬ ‫الرسومية‬ ‫المعالجة‬ ‫محرك‬ ‫لها‬ ‫أي‬ ،‫التشغيل‬
‫والرسم‬ ‫التصميم‬ ‫برامج‬
‫اللعاب‬
‫بمكتبات‬ ‫نستعين‬Bidi
 GNU Fribidi : fribidi.org
 Python friBidi : pyfribidi.sf.net
‫خوارزمية‬BiDi
0 1 2 3 4 5 6
‫ا‬ ‫ل‬ ‫ع‬ ‫ر‬ ‫ب‬ ‫ي‬ ‫ة‬
‫الذاكرة‬ ‫في‬
‫العرض‬ ‫في‬
‫العربية‬ ‫معالجة‬
‫لستعمال‬ ‫مثال‬pyfribidi
‫اجمع‬ ،‫عربية‬ ‫كلمات‬ ‫لعبة‬
‫لتكو‬ ‫الحروف‬‫ي‬‫الكلمات‬ ‫ن‬
‫الشاشة‬ ‫على‬ ‫المطلوبة‬
http://arabicwordslide.sf.nethttp://arabicwordslide.sf.net
pyfribidi
 pyfribidi import log2vis
 self.image =
self.font.render(log2vis(_SCORE+" %d" %
self.score), 1, (255,255,255))
 Bidi(s)
 Shape(s)
‫التحكم‬ ‫أحرف‬‫التشبيك‬ ‫في‬
: ‫الهجري‬ ‫التاريخ‬ ‫كتاب‬1433‫هـ‬
= ‫ـ‬ + ‫ه‬‫ه‬‫ـ‬
+ ‫ه‬=ZWJ‫ه‬
Zero width joiner
U+200D
‫التحكم‬ ‫أحرف‬‫التشبيك‬ ‫في‬
‫تبرا‬ ‫الكيس‬ ‫ملت‬ ‫ـت‬ ‫كنـ‬ ‫ما‬ ‫الصبر‬ ‫لول‬ ‫ويك‬
‫التحكم‬ ‫أحرف‬‫التشبيك‬ ‫في‬
‫اللي‬ ‫للعلم‬ ‫العليا‬ ‫الوطنية‬ ‫المدرسة‬
‫م.و.ع.إ.آ‬
•‫موعإآ‬
 Zero width non joiner
‫مشاريع‬
‫مشاريعنا‬
‫للتصال‬
‫مدونتي‬http://blog.tahadz.com
‫للتصال‬
Taha.zerrouki@gmail.com
‫مدونتي‬ ‫على‬ ‫المشاريع‬ ‫وروابط‬ ‫معلومات‬

Developping apps in arabic language تطوير البرمجيات بالعربية، المسائل والطرائق