الخطوة 6 في المتطلبات الأساسية: لوحة مفاتيح عربية للبرمجة
هذا البرنامج التعليمي مكتوب بالعربية، لكن الكود والأوامر وأسماء الملفات تبقى بالإنجليزية. هذا يعني أنك ستنتقل باستمرار بين لغتي إدخال أثناء العمل. وتضبط هذه الخطوة ذلك على نحو سليم في نظام التشغيل لديك، حتى لا تؤدي كتابة العربية في التعليقات والنصوص التي يراها المستخدم إلى إفساد كودك.
لا تحتاج إلى لوحة مفاتيح عربية. «لوحة المفاتيح العربية» ليست إلا تخطيطًا داخل نظام التشغيل: المفاتيح المادية نفسها تُنتج حروفًا عربية. وإذا كانت لوحة مفاتيحك تحمل حروفًا عربية مطبوعة فهذا مريح، لكنه ليس شرطًا.
ما ستتعلمه
- إضافة تخطيط إدخال عربي على Windows وmacOS وLinux وAndroid وiOS
- اختيار تخطيط مريح للبرمجة
- التبديل بين العربية والإنجليزية بسرعة، دون تعطيل انسيابية عملك
- كتابة العربية في التعليقات والسلاسل النصية دون إثارة أخطاء في الصياغة
- إصلاح أكثر مشكلات الإدخال العربي شيوعًا
الجزء 1: اختيار التخطيط المناسب
هناك عدة تخطيطات عربية. كلها تكتب العربية، لكنها تضع الحروف وعلامات الترقيم والأرقام في مواضع مختلفة.
| التخطيط | أين يتوفر | ما يصلح له | ما ينبغي الحذر منه |
|---|---|---|---|
| Arabic (101) / Arabic | Windows، Linux | التخطيط الكلاسيكي؛ توضع الحروف العربية على مفاتيح الحروف في QWERTY | قد تكون علامات الترقيم والأرقام محارف عربية |
| Arabic (102) | Windows | تخطيط أحدث بحروف عربية إضافية؛ شائع في الخليج | التحذير نفسه بشأن علامات الترقيم |
| Arabic – QWERTY | macOS، iOS | مواضع حروف مألوفة لمن يكتب باللمس على الأحرف اللاتينية | تختلف أسماء التخطيطات بحسب الإصدار |
| Arabic – PC | macOS | يحاكي تخطيط Windows العربي | خيارات ترقيم أقل |
| Arabic AZERTY | Windows، Linux | لوحات مفاتيح فرنسية/AZERTY | مفيد فقط إذا كانت لوحة مفاتيحك AZERTY |
| Buckwalter / phonetic | Linux (أشكال إضافية) | كتابة العربية بالحروف اللاتينية (marhaba → مرحبا) |
عليك تعلّم جدول التحويل |
التوصية: استخدم التخطيط الذي تقع حروفه على المفاتيح نفسها التي في QWERTY. وأبقِ تخطيط English (US) مثبتًا أيضًا، وانتقل إليه عند كتابة رموز الكود أو علامات الترقيم أو الأرقام. أما للكتابة الكثيفة المختلطة بين العربية والإنجليزية، فجرّب Arabic – QWERTY على macOS أو Arabic (102) على Windows.
الجزء 2: Windows 10 و11
إضافة التخطيط العربي
- افتح الإعدادات → الوقت واللغة → اللغة والمنطقة.
- انقر إضافة لغة، وابحث عن العربية، واختر منطقتك، مثل العربية (المملكة العربية السعودية)، ثم ثبّتها.
- بجانب العربية، افتح قائمة ⋮ → خيارات اللغة.
- ضمن لوحات المفاتيح، انقر إضافة لوحة مفاتيح واختر Arabic (101) أو Arabic (102) أو تخطيطًا آخر.
- تأكد من تثبيت لوحة مفاتيح إنجليزية أيضًا. فستنتقل إليها باستمرار.
التبديل أثناء الكتابة
- ينتقل Win + Space بين لغات الإدخال المثبتة. هذا هو الاختصار الافتراضي.
- يعمل Alt + Shift أيضًا إذا كان الاختصار القديم مفعّلًا.
يُظهر شريط المهام (قرب الساعة) ENG أو ARA. ألقِ نظرة عليه قبل كتابة علامات الترقيم.
تغيير الاختصار
- الإعدادات → الوقت واللغة → الكتابة.
- افتح إعدادات لوحة المفاتيح المتقدمة.
- انقر مفتاح اختصار لغة الإدخال → تغيير تسلسل المفاتيح، واختر الاختصار الذي تفضله.
كتابة العربية على الشاشة (دون مفاتيح عربية مطبوعة)
اضغط Win + Ctrl + O لفتح لوحة المفاتيح على الشاشة، ثم بدّل لغة الإدخال كالمعتاد.
ملاحظة بشأن الأرقام
تكتب بعض أشكال التخطيط العربي أرقامًا عربية-هندية: ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩. هذه محارف Unicode صحيحة، لكنها غير صالحة في الكود ولا في JSON. وإذا رأيتها أثناء كتابة الكود، فبدّل إلى التخطيط الإنجليزي.
الجزء 3: macOS
إضافة التخطيط العربي
- افتح إعدادات النظام → لوحة المفاتيح.
- ضمن مصادر الإدخال، انقر تحرير….
- انقر +، واختر العربية، ثم اختر تخطيطًا (
Arabic،Arabic – QWERTY،Arabic – PC؛ وتختلف الأسماء بحسب إصدار macOS). - أضف English (US) أيضًا إن لم يكن موجودًا.
- انقر تم.
فعّل إظهار قائمة الإدخال في شريط القوائم حتى ترى اللغة الحالية دائمًا.
التبديل أثناء الكتابة
| الاختصار | الإجراء |
|---|---|
| Control + Space | التبديل إلى مصدر الإدخال السابق |
| Control + Option + Space | اختيار المصدر التالي في قائمة الإدخال |
| Caps Lock | تبديل اللغات، إذا كان مفعّلًا في إعدادات مصادر الإدخال |
| Globe key | قابل للتخصيص: الرموز التعبيرية أو الإملاء أو مصدر الإدخال (لوحة المفاتيح → «اضغط على مفتاح Globe لـ…») |
لكثير من المتعلمين، يُعدّ Arabic – QWERTY التخطيط الأكثر راحة للعمل المختلط بين العربية والإنجليزية. جرّبه قبل أن تستقر على التخطيط الافتراضي Arabic.
رؤية المفاتيح
في قائمة الإدخال، اختر إظهار عارض لوحة المفاتيح لترى بالضبط أي مفتاح يُنتج أي محرف في التخطيط الحالي.
الجزء 4: Linux
تختلف التعليمات بحسب بيئة سطح المكتب لديك. وكل هذه الطرق تضيف تخطيط XKB نفسه، المسمى ara.
GNOME
- الإعدادات → لوحة المفاتيح → مصادر الإدخال.
- انقر + → العربية → اختر شكلًا → إضافة.
- بدّل باستخدام Super + Space (المصدر السابق: Shift + Super + Space).
يمكنك أيضًا ضبط ذلك من الطرفية:
# اعرض الإعداد الحالي
gsettings get org.gnome.desktop.input-sources sources
# أضف العربية (أبقِ المدخلات الموجودة في القائمة!)
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'ara')]"
# غيّر اختصار التبديل
gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Super>space']"
gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Shift><Super>space']"
KDE Plasma
- إعدادات النظام → لوحة المفاتيح → التخطيطات.
- فعّل تهيئة التخطيطات، ثم إضافة → العربية.
- اضبط الاختصار في لوحة المفاتيح → الاختصارات، وابحث عن «تخطيط لوحة المفاتيح».
مديرو نوافذ X11 (i3، XFCE، Openbox، …)
اضبط التخطيطات للجلسة الحالية:
setxkbmap -layout us,ara -option grp:alt_shift_toggle,grp_led:scroll
setxkbmap -query
اعرض أشكال التخطيط العربي المتاحة:
localectl list-x11-keymap-variants ara
سترى أشكالًا مثل azerty وdigits وbuckwalter وolpc وmac. استخدم ara للتخطيط الافتراضي، ولا تستخدم ara مع الشكل digits إلا إذا كنت تريد الأرقام العربية-الهندية فعلًا.
ولجعل الإعداد دائمًا، ضع أمر setxkbmap في ملف ~/.xinitrc أو في ملف بدء تشغيل مدير النوافذ. أما على Wayland، فلا يُطبَّق setxkbmap على النظام كله؛ استخدم إعدادات GNOME أو KDE بدلًا من ذلك.
IBus (اختياري، للتخطيطات النطقية phonetic)
# Debian/Ubuntu
sudo apt install ibus-m17n
# اعرض محركات العربية المتاحة
ibus list-engine | grep -i arabic
# فعّل أحدها للجلسة الحالية
ibus engine m17n:ar:kbd
الجزء 5: Android وiOS
Android (Gboard)
- ثبّت Gboard إن لم يكن مثبتًا بالفعل.
- الإعدادات → النظام → اللغات والإدخال → لوحة المفاتيح على الشاشة → Gboard → اللغات.
- انقر إضافة لوحة مفاتيح → العربية → اختر تخطيطًا.
- بدّل اللغات بمفتاح globe على لوحة المفاتيح، أو بتمرير شريط المسافة يمينًا/يسارًا. وفعّل «إظهار مفتاح تبديل اللغة» إذا كان مفتاح globe مخفيًا.
- مع لوحة مفاتيح مادية، يبدّل Ctrl + Space التخطيطات عادةً.
iPhone وiPad
- الإعدادات → عام → لوحة المفاتيح → لوحات المفاتيح → إضافة لوحة مفاتيح جديدة.
- اختر العربية، ثم اختر تخطيطًا (Arabic أو Arabic – QWERTY أو Arabic – Najdi بحسب إصدار iOS).
- بدّل أثناء الكتابة بمفتاح globe (انقر عليه، أو اضغط مطولًا لاختيار لغة).
- مع لوحة مفاتيح خارجية، اضغط مفتاح Globe لتغيير مصدر الإدخال.
البرمجة على الهاتف ممكنة (مثلًا باستخدام Termux على Android)، لكن يُنصح بشدة باستخدام حاسوب محمول أو مكتبي لهذا المشروع. فالهواتف ممتازة لقراءة البرنامج التعليمي واختبار تطبيق الجوال.
الجزء 6: التبديل أثناء الكتابة — مرجع سريع
| الإجراء | Windows | macOS | Linux (GNOME) | Android | iOS |
|---|---|---|---|---|---|
| لغة الإدخال التالية | Win + Space | Ctrl + Space (أو Globe) | Super + Space | Globe / تمرير شريط المسافة | Globe |
| لغة الإدخال السابقة | Win + Space (يتنقل دوريًا) | Ctrl + Option + Space | Shift + Super + Space | ضغط مطول على globe | ضغط مطول على globe |
| البديل القديم | Alt + Shift | Caps Lock (اختياري) | Alt + Shift (خيار X11) | Ctrl + Space (لوحة مادية) | — |
| مكان التغيير | الكتابة → إعدادات لوحة المفاتيح المتقدمة | لوحة المفاتيح → مصادر الإدخال | الإعدادات → لوحة المفاتيح → مصادر الإدخال | Gboard → اللغات | الإعدادات → لوحة المفاتيح |
التبديل عام على مستوى جلسة المستخدم، لكن بعض التطبيقات (الألعاب، وعملاء سطح المكتب البعيد، والآلات الافتراضية) تستحوذ على الاختصار. وإذا توقف اختصار عن العمل، فبدّل من شريط القوائم أو شريط المهام بدلًا من ذلك.
الجزء 7: العربية داخل الكود
هنا تظهر معظم المشكلات. والقاعدة بسيطة: العربية مكانها التعليقات والنصوص التي يراها المستخدم، أما صياغة الكود فتبقى بالإنجليزية.
التعليقات والسلاسل النصية
# احسب مجموع الأسعار بعد الضريبة
def total(prices):
return sum(prices)
greeting = "مرحبًا بك في تطبيق الدردشة"
print(greeting)
هذا الملف بترميز UTF-8، وهو الترميز الذي تستخدمه Python 3 افتراضيًا. ويعمل تمامًا كملف مكتوب بالإنجليزية فقط.
هل يمكنني كتابة المعرّفات بالعربية؟
تقنيًا، نعم. تسمح Python 3 وJavaScript الحديثة بالحروف العربية في المعرّفات:
def احسب_المجموع(الأسعار):
return sum(الأسعار)
print(احسب_المجموع([10, 20, 30]))
لكن في هذا المشروع، أبقِ المعرّفات وأسماء الدوال وأسماء الملفات بالإنجليزية. والأسباب:
- معظم المكتبات ورسائل الأخطاء وإجابات Stack Overflow بالإنجليزية.
- يصعب مراجعة المعرّفات المختلطة الاتجاه في فرق التغييرات.
- قد لا يدعم الزملاء والأدوات المعرّفات العربية بالقدر نفسه.
استخدم العربية في الأجزاء التي يقرأها الإنسان: التعليقات والتوثيق والنص الذي يراه المستخدمون في التطبيق.
الخطأ الأول: علامات الترقيم العربية
تكتب التخطيطات العربية محارف ترقيم عربية:
| المحرف | Unicode | يبدو مثل | الاستخدام في الكود |
|---|---|---|---|
| فاصلة عربية | U+060C | ، | ❌ ممنوع دائمًا |
| فاصلة منقوطة عربية | U+061B | ؛ | ❌ ممنوع دائمًا |
| علامة استفهام عربية | U+061F | ؟ | ❌ ممنوع دائمًا |
كتابة هذا:
print("مرحبا" ، "بالعالم")
تُنتج:
SyntaxError: invalid character '،' (U+060C)
والحل هو التبديل إلى التخطيط الإنجليزي وكتابة الفاصلة اللاتينية:
print("مرحبا", "بالعالم")
الأرقام العربية-الهندية
وهي فخ شائع أيضًا:
total = ١٢ # ❌ SyntaxError: invalid character '١' (U+0661)
تستطيع int() في Python تحويل سلسلة نصية من الأرقام العربية-الهندية، لكن Number() في JavaScript وJSON يرفضانها:
int("١٢") # 12 (تعمل في Python)
Number("١٢"); // NaN
{"count": ١٢} // ❌ JSON غير صالح
استخدم الأرقام الغربية 0-9 في كل الكود والبيانات.
خلط النص العربي واللاتيني (bidi)
تُكتب العربية من اليمين إلى اليسار، بينما يُكتب الكود من اليسار إلى اليمين. وعندما يخلط سطر واحد بين الاتجاهين، قد تعيد خوارزمية الاتجاه الثنائي في Unicode ترتيب علامات الترقيم بصريًا. فالمحارف صحيحة، لكن الشاشة قد تكون مربكة.
label = "المجموع (total) = 30"
إذا ظهرت علامات الترقيم في موضع خاطئ في محررك أو في واجهة التطبيق، فأحط المقطع المختلط بعوازل Unicode. واكتبها على هيئة رموز هروب (escape) حتى تبقى غير مرئية ومقصودة:
# U+2068 = عازل قوي أول، U+2069 = إنهاء العازل الاتجاهي
label = "\u2068المجموع (total)\u2069 = 30"
وفي الحالات القصيرة داخل السطر، تساعد أيضًا علامة اليمين إلى اليسار (U+200F) وعلامة اليسار إلى اليمين (U+200E):
amount = "\u200f30 دولار\u200f"
لا تلصق محارف غير مرئية بشكل عشوائي. بل أضفها عن قصد، وأضف تعليقًا يوضح السبب.
المحررات والطرفيات
- يبرز VS Code المحارف غير المرئية والغامضة في Unicode. انقر المحرف المبرز لترى ما هو؛ ويتحكم في ذلك
editor.unicodeHighlight.invisibleCharactersوالإعدادات ذات الصلة. - استخدم خطًا يحتوي على محارف عربية للواجهة (مثل Noto Sans Arabic)، وخطًا أحادي المسافة للكود. ولهذا السبب تُعرض كتل الكود في التطبيق وعلى هذا الموقع دائمًا من اليسار إلى اليمين.
- في الطرفية، تُطبع النصوص العربية بشكل صحيح مع إعداد محلي (locale) بترميز UTF-8:
locale | grep -i utf
python3 -c "print('مرحبا')"
إذا رأيت ???? بدلًا من العربية، فإن إعدادك المحلي أو خط الطرفية لا يدعم UTF-8.
التعامل مع الملفات
- احفظ جميع الملفات بترميز UTF-8 (وهو الافتراضي في VS Code ومعظم المحررات).
- يتعامل Git مع النصوص العربية بشكل صحيح؛ راجع
git diffللتأكد من أنك لم تلصق علامات ترقيم عربية في الكود. - يجوز أن تحتوي قيم JSON على العربية بحرية؛ أبقِ مفاتيح JSON بالإنجليزية.
- أعمدة قاعدة البيانات وأسماء حقول API: أبقِها بالإنجليزية. وخزّن العربية في القيم.
الجزء 8: سير عمل يومي فعّال
- أبقِ English (US) هو التخطيط الافتراضي.
- انتقل إلى العربية للتعليقات والتوثيق ونصوص الواجهة.
- عُد إلى الإنجليزية قبل كتابة الرموز:
,;:(){}[]=+-/?!. - تحقق من مؤشر اللغة (شريط المهام أو شريط القوائم أو globe) قبل كتابة علامات الترقيم.
- شغّل اختباراتك وأداة الفحص (linter) بعد كتابة نص عربي؛ فهي تلتقط علامات الترقيم العربية الشاردة فورًا.
- اقرأ فرق التغييرات قبل إنشاء commit. فمن السهل أن تفوتك فاصلة
،مخبأة في قائمة وسائط.
الجزء 9: استكشاف الأخطاء وإصلاحها
| العَرَض | السبب المحتمل | الإصلاح |
|---|---|---|
| ظهور حروف لاتينية وأنت تريد العربية | التخطيط غير مفعّل، أو نافذة أخرى هي النشطة | تحقق من مؤشر الإدخال؛ واضغط اختصار التبديل |
| ظهور حروف عربية داخل الكود | التخطيط ما زال عربيًا وأنت تكتب رموز الكود | بدّل إلى الإنجليزية قبل علامات الترقيم |
SyntaxError: invalid character '،' (U+060C) |
فاصلة عربية | استبدلها بـ , |
SyntaxError: invalid character '١' (U+0661) |
رقم عربي-هندي | استبدله بـ 0-9 |
| تبدو الأقواس أو علامات الاقتباس في غير موضعها | إعادة ترتيب ثنائية الاتجاه للنص المختلط | استخدم عوازل Unicode، أو أبقِ الجزء المختلط في سطر مستقل |
| لا يبدّل الاختصار اللغات | تطبيق آخر استحوذ عليه، أو الاختصار معطّل | غيّر الاختصار في إعدادات نظام التشغيل |
| العربية غير متاحة في تطبيق طرفية | طريقة إدخال أو إعداد محلي مفقود | ثبّت IBus/m17n، واضبط إعدادًا محليًا بترميز UTF-8 |
| اختفت لوحة المفاتيح بعد تحديث | أُزيل التخطيط | أعد إضافة التخطيط؛ فلن يستغرق ذلك دقيقة |
| الحروف لا تتصل (تبدو مرحبا منفصلة) | خلل في الخط أو في ربط الحروف | ثبّت خطًا عربيًا، وأعد تشغيل التطبيق |
الجزء 10: التدريب
- أضف التخطيط العربي على نظام التشغيل لديك، ثم بدّل ذهابًا وإيابًا 10 مرات باستخدام اختصار لوحة المفاتيح فقط.
- اكتب هذا التعليق وهذه السلسلة النصية في ملف Python، ثم شغّله:
python # مرحبًا — هذا تعليق عربي print("أهلًا بك في الدردشة") - اكتب فاصلة عربية عمدًا في استدعاء
print()، وشغّل الملف، واقرأ الخطأ، ثم أصلحه بفاصلة لاتينية. - اكتب
١٢كرقم في الكود، وشغّله، واشرح الخطأ في جملة واحدة. - اكتب سلسلة نصية تخلط العربية والإنجليزية، ثم أضف
\u2068و\u2069حول الجزء المختلط، وقارن العرض في VS Code. - أضف سلسلة نصية عربية إلى تطبيق React Native لاحقًا في الدورة، وتأكد من أنها تظهر بشكل صحيح على الهاتف.
عندما تنجح التمارين الستة كلها، تكون بيئتك جاهزة. تابع مع prerequisites/exercises.md، أو انتقل مباشرة إلى backend/step-01-setup.md.
التحقق
# 1. تُطبع النصوص العربية بشكل صحيح من Python
python3 -c "print('مرحبًا')"
# 2. ملفاتك بترميز UTF-8
file -i backend/app/routes.py
# 3. لا علامات ترقيم عربية تسللت إلى الكود
python3 -m compileall backend/app
إذا طبع الأمر الأول مرحبًا، وأبلغ الثاني عن charset=utf-8، وانتهى الثالث دون أخطاء، فأنت جاهز.
قراءات إضافية
- إدارة إعدادات لغة الإدخال والعرض في Windows — دعم Microsoft
- الكتابة بلغة أخرى على Mac — دعم Apple
- إضافة لوحات مفاتيح على iPhone أو تغييرها — دعم Apple
- الكتابة بلغة مختلفة باستخدام Gboard — دعم Google
- تخطيطات لوحة المفاتيح — مساعدة GNOME
- خوارزمية الاتجاه الثنائي في Unicode (UAX #9)
- معرّفات Python وUnicode — توثيق Python