تخطَّ إلى المحتوى
كل المقالات
هندسة/٣ سبتمبر ٢٠٢٦/3 دقائق

بناء برمجيات عربية أولاً: ما الذي يتطلبه فعلاً

بقلم predev. Solutions

معظم الفرق تتعامل مع العربية كمهمة ترجمة. تستخرج النصوص، وتسلّمها لمترجم، وتحمّل الملف، وانتهى الأمر.

ثم تظهر أول شاشة عربية فتجد التخطيط مقلوباً، والأرقام بترتيب خاطئ، واسم منتج بالإنجليزية وقع في منتصف جملة متّجهاً في الاتجاه الخطأ، والخط الذي بدا صحيحاً في ملف التصميم يصل الحروف بشكل خاطئ في المقاسات الصغيرة.

العربية ليست إعداداً للغة. إنها مجموعة قرارات في التخطيط والخطوط وتنسيق البيانات والاختبار. إن اتُّخذت في البداية فالتكلفة الإضافية معتدلة. وإن أُضيفت إلى منتج مكتمل فهي قريبة من إعادة بناء الواجهة.

وهذا ما يتضمّنه الأمر فعلاً.

من اليمين إلى اليسار ليس انعكاساً في مرآة

الغريزة الأولى أن تقلب التخطيط أفقياً. هذا يوصلك إلى معظم الطريق، ثم ينكسر في أماكن محددة وواضحة.

ما ينقلب: ترتيب القراءة، والتنقّل، والمحاذاة، وإزاحة القوائم، واتجاه شريط التقدّم، والاتجاه الذي يشير إليه سهم الرجوع.

وما لا ينقلب: أرقام الهواتف، ومعظم الشعارات، وأزرار تشغيل الوسائط، ووجوه الساعات، وأي شيء يتعرّف عليه المستخدم من شكله لا من موضعه. زر التشغيل المتّجه يميناً هو زر تشغيل في كل اللغات. وإن عكسته قُرئ على أنه ترجيع.

CSS الحديث يتولّى من هذا أكثر مما كان يفعل. الخصائص المنطقية، مثل margin-inline-start بدلاً من margin-left وpadding-inline-end بدلاً من padding-right، تعني أن ملف تنسيق واحداً يخدم الاتجاهين بدلاً من صيانة ملفين. إن كنت تبدأ الآن، فاكتب بالخصائص المنطقية من أول مكوّن. أما تحويل كود كبير لاحقاً فعمل آلي ممل يمسّ كل ملف.

النص مختلط الاتجاه هو حيث ينكسر الأمر فعلاً

الفقرة العربية الخالصة سهلة. الحالة الصعبة هي العربية التي تحتوي إنجليزية: اسم علامة تجارية، أو رمز منتج، أو رابط، أو رقم إصدار.

خوارزمية Unicode ثنائية الاتجاه تتولّى معظم ذلك تلقائياً، والأماكن التي لا تتولّاها هي التي يلاحظها المستخدمون: علامات ترقيم تلتصق بالجانب الخطأ، ونقطة نهاية جملة تظهر على الحافة اليسرى، واسم منتج إنجليزي يسحب المسافات المحيطة به في الاتجاه الخطأ.

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

النص اللاتيني المؤقت داخل تخطيط عربي سيمرّ من كل مراجعة ويخفي كل خطأ.

الخط هو الجزء الذي يُستهان به

الحروف العربية تتغيّر أشكالها حسب موضعها في الكلمة وتتصل بجاراتها. الخط إما أن ينفّذ ذلك بشكل صحيح أو لا، والخط الذي يبدو جيداً في عنوان قد ينهار في حجم النص العادي أو في تركيبة حروف بعينها.

ولهذا نتيجتان عمليتان:

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

الخط اللاتيني والعربي يجب أن يُختارا معاً عن قصد. المنتج ثنائي اللغة يعرض الاثنين، وكثيراً في الشاشة نفسها. وخطّان اختيرا كلٌّ على حدة لن يتشاركا الوزن ولا الحجم البصري، والتنافر سيظهر فوراً.

اختبر بأصغر نص في المنتج، لا بأكبره. العناوين تغفر كثيراً.

البيانات ليست عرضاً فقط

الأرقام والتواريخ والعملات تحمل قراراتها الخاصة، وهي قرارات عمل لا قرارات تقنية.

المناطق الناطقة بالعربية تختلف في استخدام الأرقام الهندية (١٢٣) أو الأرقام الغربية (123)، والمستخدمون يختلفون داخل المنطقة الواحدة. وقد يكون التقويمان الميلادي والهجري كلاهما مهماً. وموضع رمز العملة يختلف. لا شيء من هذا له إجابة صحيحة واحدة، بل إجابة صحيحة لمستخدميك، وهذا يعني أن تسأل لا أن تفترض.

خزّن كل شيء بصيغة موحّدة واحدة، ونسّقه لحظة العرض. تخزين تاريخ منسّق لأنه بدا صحيحاً في شاشة واحدة خطأ يظهر بعد شهور في تقرير لم يختبره أحد.

ماذا يعني هذا لخطة المشروع

قرار دعم العربية مكانه الأسبوع الأول، إلى جانب نموذج البيانات، لا في مرحلة لاحقة اسمها "التعريب".

عملياً، اتخاذه مبكراً يعني: خصائص CSS منطقية من أول مكوّن، ونظام خطوط ثنائي اللغة يُختار قبل بناء نظام التصميم، ومحتوى عربياً حقيقياً في ملفات التصميم، واختبار اللغتين من أول دورة عمل.

واتخاذه متأخراً يعني مراجعة كل شاشة من جديد، واختبار كل مسار من جديد، وإعادة تصميم الأجزاء التي افترضت اتجاهاً واحداً.

المنتج نفسه. والفرق هو متى قرّرت.

كتبه predev. Solutions · predev. Solutions

اقرأ التالي

خمس جمل تعني أن مشروعك البرمجي سيتأخر

تبني شيئاً؟ لنبدأ قبل الكود.

ابدأ مشروعاً