بناء برمجيات عربية: ستة أشياء تنكسر، وليس من بينها الترجمة
الترجمة هي النصف السهل. أما النصف الذي يُشحن معطوبًا فهو اتجاه التخطيط، والنص ثنائي الاتجاه الذي يعبث بأرقام قطعك، والأرقام التي لم يتفق عليها أحد.
كل شاشة نشحنها موجودة بالإنجليزية والعربية، ولا نتقاضى مقابلها شيئًا إضافيًا. وليس ذلك كرمًا — بل لأن إضافة العربية لاحقًا تكلّف أضعاف بنائها من البداية، فتوقّفنا عن عرض النسخة الرخيصة. وهذا ما تعلّمناه ونحن ندفع ثمنه بالطريقة الصعبة.
١. النص ثنائي الاتجاه سيقلب رموزك الفنية
وهذه هي التي تصل إلى الإنتاج دون أن يكتشفها أحد. ضع رمزًا فنيًا لاتينيًا داخل جملة عربية، فقد تعيد خوارزمية يونيكود ثنائية الاتجاه ترتيبه. فمقاس إطار ٢٠٥/٥٥R١٦ يظهر 16R55/205. ورقم قطعة 28-410 يظهر 410-28. الأحرف كلها صحيحة؛ لكن ترتيبها على الشاشة ليس كذلك.
وهي تضرب أشدّ ما تضرب في القيم التي يكون الخطأ فيها أفدح: أرقام القطع والمقاسات وأرقام الآيبان واللوحات ومراجع الفواتير. ولن تظهر في مراجعة الترجمة، لأن المترجم يرى عربية سليمة — والعطب في المقطع اللاتيني المجاور.
والعلاج عزل المقطع بحيث لا يمسّه اتجاه ما حوله — غلاف يحدّد الاتجاه صراحةً مع عزل ثنائي الاتجاه، أو محارف العزل في يونيكود. رخيص التطبيق، خفيّ حتى تعرف أين تنظر.
٢. «يمين» و«يسار» كلمتان خاطئتان
أي تباعد أو حدّ أو محاذاة يُكتب بـ«يسار» أو «يمين» يجب عكسه يدويًا للعربية، وما يُنسى منه يترك لوحًا معطوبًا بشكل ظاهر. وCSS الحديثة تحلّ ذلك جذريًا بالخصائص المنطقية — بداية السطر ونهايته بدل اليسار واليمين. اكتب التخطيط هكذا مرة واحدة فينعكس من تلقاء نفسه.
وهذا القرار وحده هو معظم الفرق بين نسخة عربية استغرقت بعد ظهيرة وأخرى استغرقت ثلاثة أسابيع.
٣. الأرقام خيار، وليس خيارًا بديهيًا
الأرقام العربية الهندية (٣٦٤) تُقرأ بطبيعية في النص. أما الأرقام اللاتينية (364) فهي ما يتوقعه معظم مستخدمي الأعمال في الإمارات في جدول مالي، وما سينسخونه إلى بوابة بنكية. نستخدم العربية الهندية في السرد ونبقي اللاتينية في الجداول وفي كل ما يُنسخ إلى مكان آخر — والمقصود أن على أحد أن يقرّر بحسب السياق، بدل أن تقرّر مكتبة تنسيق بصمت.
٤. ليس كل شيء ينعكس
أسهم التنقّل تنعكس. فسهم الرجوع يجب أن يشير يمينًا في العربية. لكن وجه الساعة لا ينعكس، وزرّ التشغيل لا ينعكس، والشعار لا ينعكس، والرسم البياني ذو المحور الزمني لا ينبغي أن ينعكس غالبًا. وقلب الواجهة كلها بالجملة ينتج صفحة من اليمين إلى اليسار تقنيًا، وعبثية بهدوء.
٥. مجموعة الخطوط ليست هي نفسها
الخطّ اللاتيني الذي يتراجع إلى خط عربي من النظام يعطيك خطّين بوزن وإيقاع مختلفين على شاشة واحدة، والعربية تحتاج عمومًا ارتفاع سطر أكبر لتبقى مقروءة. فحدّد مجموعة خطوط عربية صريحة وارتفاع سطر خاصًّا بها، وإلا بدا الجانب العربي مسوّدة بجانب الإنجليزي.
٦. الترجمة النصفية أسوأ من عدمها
والعطب الشائع شاشة عربية بنسبة ٩٠٪ بقيت فيها أربع عبارات إنجليزية — زر ورسالة خطأ وحالة فارغة وتلميح. تبدو غير مكتملة، وهي أوضح إشارة على أن النسخة العربية جاءت كفكرة لاحقة.
وقد حللناها بنيويًا لا بالانضباط: كل نصّ في عروضنا يُعلَن زوجًا عند كتابته، فلا يمكن أن يُبنى نصّ موجود بلغة دون الأخرى. الانضباط ينهار عند اقتراب موعد التسليم؛ أما البنية التي تجعل الخطأ مستحيلًا فلا تنهار.
الخلاصة
دعم العربية قرار معماري لا مهمة محتوى. إن اتُّخذ في البداية لم يكلّف شيئًا يُذكر. وإن اتُّخذ في النهاية كان إعادة كتابة، ولهذا فإن كثيرًا من البرمجيات المباعة في هذه المنطقة له وضع عربي لا يستخدمه أحد في المكتب فعلًا.
المصادر
- اتحاد يونيكود — خوارزمية النص ثنائي الاتجاهالرمز اللاتيني داخل جملة عربية قد تعيد خوارزمية النص ثنائي الاتجاه ترتيبه.
- اتحاد الويب العالمي — مواصفة أوضاع الكتابةالحل عزل المقطع حتى لا يؤثر فيه اتجاه النص المحيط به.
- اتحاد الويب العالمي — مواصفة الخصائص المنطقية والقيمالخصائص المنطقية في CSS تعكس التخطيط تلقائيًا بدل تثبيت اليمين واليسار.
يعمل داخل متصفحك بمنطق النظام الحقيقي — بلا نموذج تسجيل وبلا مكالمة مبيعات.
مقالات
- ما يجب أن يعرفه برنامج إدارة العقارات في الإمارات ولا تعرفه البرامج العامةشيكات مؤجّلة، وإيجاري، وضريبة تتغيّر بحسب نوع الوحدة، وسقف زيادة تحدّده مؤشرات. البرامج…
- التكلفة النهائية: الرقم الذي يخطئ فيه معظم المستوردين في الإمارات بهدوءإن كانت تكلفتك للوحدة هي فاتورة المورّد مقسومة على الكمية، فأنت تسعّر بناءً على رقم أقل…
- كم تكلّف البرمجيات المخصّصة فعليًا في الإماراتما الذي يحرّك الرقم فعلًا، وكيف يجري التسعير، والحالات التي يجدر بك فيها بصراحة أن تشتري…
جي دي لحلول البرمجيات — استوديو برمجيات من أربعة أشخاص في الإمارات. نبني النظام، ونسلّم الكود، ونبقى لتشغيله.