الرؤى
بناء تطبيق ثنائي اللغة عربي وانجليزي: الاتجاه من اليمين باتقان
دليل هندسي عملي للتطبيقات ثنائية اللغة عربي وانجليزي: تخطيط الاتجاه من اليمين، والنص ثنائي الاتجاه، وطباعة العربية، والاخطاء التي تكسر الواجهات العربية.
كثير من التطبيقات ثنائية اللغة هي في الحقيقة تطبيقات انجليزية قلب تخطيطها ومرر نصها على مترجم. بالعربية تبدو مكسورة: محاذاة خاطئة، وترتيب خاطئ، وطباعة ركيكة. فعلها صحيحا ليس صعبا، لكنه مجموعة قرارات مقصودة من البداية. اليك الهندسة التي تهم فعلا.
1. الاتجاه: ابنه منطقيا لا يسار ويمين
الاساس سمة dir واحدة (rtl او ltr) على المستند، وخصائص CSS منطقية في كل مكان بدل الفيزيائية:
margin-inline-startو-endبدلmargin-leftو-rightpadding-inlineوinset-inline-startوborder-inline-*text-align: startوendبدلleftوright
افعل هذا فتتخطط قاعدة كود واحدة صحيحا بالاتجاهين تلقائيا. اكتب left و right بشكل ثابت فتحتاج كل شاشة قلبا يدويا، وهو مصدر كسر الاتجاه من اليمين الكلاسيكي.
2. ثنائية الاتجاه: الجزء الذي يخطئ فيه الجميع
العربية تجري من اليمين لليسار، لكن النص العربي الحقيقي مليء بجزر تجري من اليسار لليمين: الارقام، واسماء العلامات اللاتينية، والروابط، والكود، وارقام الهواتف. دون عناية تعيد خوارزمية الاتجاه ترتيبها، فيخرج namla.sa او رقم طلب مشوشا.
الحلول: اعتمد على ثنائية اتجاه يونيكود سليمة، واضبط dir="auto" على حقول المستخدم، واعزل الجزر اللاتينية المضمنة (بـ <bdi> او unicode-bidi: isolate) لتحفظ كلمة لاتينية او رقم ترتيبها داخل جملة عربية. هذا اكثر عيب شائع في الواجهات العربية.
3. الطباعة: العربية ليست لاتينية بخط مختلف
- استخدم وجها عربيا حقيقيا بتشكيل سليم (الحروف تتصل وتغير شكلها حسب موقعها)، مقترنا بتصميم لاتيني مطابق ليبدو الاثنان منتجا واحدا.
- العربية تحتاج عموما ارتفاع سطر اكبر، فصعودها ونزولها وعلاماتها تريد متنفسا.
letter-spacingلا ينطبق على الخط العربي المتصل، واستخدامه يكسر الوصلات. فلا تفعل.- ابق الواجهة خالية من التشكيل المفروض الا ان احتاجه المحتوى فعلا، فالعربية النظيفة غير المشكلة اوضح في الواجهات.
4. الارقام والتواريخ وصيغ الجمع
- الارقام: قرر بين الهندية العربية (٠١٢) واللاتينية (012) حسب جمهورك، والاعمال السعودية تفضل غالبا اللاتينية، وطبقه باتساق عبر اللغة لا يدويا.
- التواريخ والعملة: نسق عبر اللغة (
Intlفي الويب)، بالريال والتقويم الميلادي او الهجري حسب الحاجة. - صيغ الجمع: العربية لها ست صيغ جمع (صفر، واحد، اثنان، قليل، كثير، اخرى) مقابل اثنتين في الانجليزية. عبارة ثلاثة عناصر واحد عشر عنصرا ومئة عنصر قد تحتاج صياغة مختلفة. استخدم نظام توطين حقيقي، لا لصق نصوص.
5. اقلب الصحيح، وذلك فقط
حين ينقلب الاتجاه، اقلب ما يرمز للاتجاه واترك الباقي:
- اقلب: اسهم الرجوع والتقدم، والشيفرونات، والتقدم الذي يتحرك مع اتجاه القراءة، وتعداد القوائم والمسافات البادئة.
- لا تقلب: الشعارات، والوسائط، وايقونات الساعة، وعلامات الصح، ومعظم صور العلامة.
6. اختبر الاثنين من اليوم الاول
ابن وراجع بالعربية والانجليزية باستمرار، لا كمرور في اسبوع الاطلاق. نصوص العربية كثيرا بطول مختلف عن الانجليزية، فاختبر الاقتطاع والالتفاف وحقول الادخال بالاثنين. الواجهة التي تفحص بالانجليزية فقط ستكسر بالعربية بطرق لا يصلحها اي قدر من الترجمة.
الخلاصة
التطبيق ثنائي اللغة فعلا قاعدة كود واحدة مبنية غير معتمدة على الاتجاه، بثنائية اتجاه صحيحة، وطباعة عربية مقصودة، وارقام وصيغ جمع مقودة باللغة، وقلب انتقائي، ومختبرة بالاثنين من البداية. هكذا يعمل هذا الموقع والمنتجات التي نبنيها، وسبب اساسي لاختيار فريق متقن للعربية حين تختار شريك تطوير.
تبني للعربية والانجليزية؟ احجز استشارة مجانية، فثنائية اللغة والاتجاه من اليمين اولا هي كيف نبني كل منتج.
الأسئلة الشائعة
هل بناء الاتجاه من اليمين مجرد قلب للتخطيط؟
لا. الاتجاه بداية فقط. تحتاج ايضا معالجة صحيحة للنص ثنائي الاتجاه (خلط العربية بكلمات وارقام لاتينية)، وطباعة تراعي العربية، وارقاما وتواريخ وصيغ جمع موطنة، وقلبا انتقائيا للايقونات الاتجاهية. القلب البصري وحده ينتج تجربة عربية مكسورة.
هل تخدم قاعدة كود واحدة العربية والانجليزية؟
نعم، ويجب ذلك. ابن التخطيط غير معتمد على الاتجاه (خصائص CSS منطقية، وسمة اتجاه، ونظام ترجمة)، فيعرض الكود نفسه صحيحا بالاثنين. صيانة قاعدتي كود خطا.
اي خط استخدم للعربية؟
خط بتشكيل عربي سليم وتصميم لاتيني مطابق ليبدو اللسانان منتجا واحدا، مثل IBM Plex Sans Arabic او Noto Sans Arabic او ما شابه. الخطوط اللاتينية فقط تتراجع بسوء للعربية، فاختر الوجه العربي بقصد.