دعم العربي (RTL) في المواقع والتطبيقات: تظبط إيه؟
يوسف محمدآخر تحديث 15 دقيقة قراءة
دعم RTL أكتر من إنك تقلب النص
العربي بيتقري من اليمين للشمال، والواجهة العربي لازم تمشي ورا عين القارئ. الـ layout كله بيبدأ من اليمين: اللوجو، والقايمة، وترتيب الخطوات، والناحية اللي شريط التقدّم بيتملي منها، وطريقة التنقّل بين الكروت بالسحب. أما محاذاة الفقرات يمين فدي مجرد أول حاجة بتاخد بالك منها.
أنا بصمم مواقع وببرمج تطبيقات بـ Flutter لعملاء في مصر والخليج وأوروبا، وأغلبها محتاج العربي والإنجليزي مع بعض. بعضها معمول للعربي الأول، زي موقع Athenas لشركة مصرية بتصدّر منتجات مجمّدة، وموقع Midex الهندسي اللي شغال كمان بالإنجليزي والألماني، ومنصة «خير سند» للعلوم الإسلامية. وفي التطبيقات، Online Ezzay تطبيق توصيل معمول للعربي الأول، و 90Plus تطبيق كورة بالعربي والإنجليزي.
الدليل ده بيشرح صاحب المشروع المفروض يتوقع إيه ويراجع إيه، وتفاصيل HTML و CSS و Flutter اللي المطوّر محتاجها عشان يخدم اللغتين من كود واحد.
إيه اللي بيتقلب في الواجهة العربي؟
لما تحوّل للعربي، كل حاجة ماشية مع ترتيب القراية بتغيّر ناحيتها:
- الهيدر: اللوجو على اليمين، وعناصر القايمة من اليمين للشمال
- القوايم الجانبية، وبتفتح من الناحية اليمين
- الأعمدة والكروت وأعمدة الجداول، وأولها على اليمين
- خطوات الشراء والتسجيل، وأول خطوة على اليمين
- شرايط التقدّم والتحميل، وبتتملي من اليمين للشمال
- شرايط الاختيار اللي بتتسحب زي نطاق السعر، والحد الأدنى على اليمين
- التابات، وأولها على اليمين
- السلايدر والسحب: الكارت اللي بعده على الشمال، فاتجاه السحب عشان توصله بيتعكس
- زراير السابق والتالي، ومسار التنقّل، وأرقام الصفحات
- محاذاة النص، ونقط القوايم، وعناوين خانات الفورم
الأيقونات والصور اللي ليها اتجاه
الأيقونة بتتقلب لو بتشاور على اتجاه القراية أو على تقدّم الوقت. سهم الرجوع بيشاور يمين في العربي، وسهم التالي شمال، وأيقونة الإرسال في الشات غالبًا شمال برضه. والأيقونات اللي فيها سطور نص، زي المستند أو القايمة، بتتقلب عشان السطور تبدأ من اليمين.
أيقونات الحاجات الحقيقية بتفضل زي ما هي: الكاميرا والتليفون والقفل والجرس. والصور الفوتوغرافية متتقلبش أبدًا، لأن أي كتابة فيها هتطلع معكوسة. ولو فيه رسمة فيها شخص ماشي أو بيشاور على الخطوة اللي بعدها، اطلب من المصمم نسخة معكوسة بدل ما تقلبها بالكود.
أيقونات Material في Flutter بتقلب الأسهم المشهورة لوحدها. أما مجموعة الأيقونات الخاصة بيك، فأنا بكتب جنب كل أيقونة في ملف التصميم: بتتقلب ولا بتفضل، عشان محدش يضطر يخمّن بعدين.
إيه اللي بيفضل زي ما هو؟
- اللوجوهات، وأسامي البراندات والمنتجات المكتوبة بحروف لاتيني
- الأرقام: 2026 مش بتبقى 6202 حتى جوه نص عربي
- أرقام التليفونات والإيميلات واللينكات وأرقام الطلبات والأكواد
- زراير الميديا زي التشغيل والتقديم والترجيع، وعادةً الشريط الزمني بتاع الفيديو
- الساعات والخرايط والصور الفوتوغرافية
- أجزاء الكود واختصارات الكيبورد
الرسوم البيانية محتاجة قرار. محور الزمن من اليمين للشمال ماشي مع الصفحة العربي، ومن الشمال لليمين ماشي مع رسومات البورصة والعملات اللي ناس كتير متعودين عليها. ولا واحد فيهم غلط؛ اختار واحد للمنتج كله والتزم بيه في كل الرسوم.
القايمة دي موجودة عشان متبالغش في التصليح. اللوجو المقلوب أو زرار التشغيل المعكوس شكله بايظ بالظبط زي قايمة متقلبتش.
العربي والإنجليزي في سطر واحد
الجملة العربي كتير بيبقى فيها إنجليزي: اسم براند، أو رقم موديل، أو إيميل، أو سعر برمز العملة. المتصفحات والموبايلات بترتّب النص المخلوط بخوارزمية Unicode للنص ثنائي الاتجاه، وهي غالبًا بتنجح، بس بتغلط حوالين علامات الترقيم والأرقام والرموز اللي ملهاش اتجاه خاص.
الأعراض معروفة: رقم تليفون زي +20 100 000 0000 مجموعاته بتطلع معكوسة وعلامة + في الناحية الغلط، أو اسم منتج زي Smart Watch S2 (Black) القوس الأخير بتاعه بينط للناحية التانية من السطر.
الحل إنك تعزل الجزء اللي ليه اتجاه خاص. في الويب، حط الرقم أو العبارة الإنجليزي جوه span بالخاصية dir="ltr". وللنص اللي مش في إيدك، زي اسم عميل جاي من قاعدة البيانات، استخدم عنصر bdi. وادّي خانات الإدخال وصناديق التعليقات dir="auto" عشان النص يمشي ورا أول حرف المستخدم يكتبه.
في Flutter، ادّي الـ Text اتجاهه الخاص عن طريق textDirection، أو حط الرقم بين علامات العزل U+2066 و U+2069. ورسايل الـ SMS والإشعارات وقوالب WhatsApp مفيهاش HTML، فاستخدم فيها علامات العزل أو اكتب الجملة بطريقة تخلّي الرقم في آخرها، وجرّبها على موبايل حقيقي.
الخطوط العربي وتراخيصها
- ارتفاع سطر أكبر من اللاتيني: أنا ببدأ بحوالي 1.7 لنص الفقرات وبعدين بعدّل حسب الخط
- حجم أكبر شوية، لأن خطوط عربي كتير بتبان أصغر من اللاتيني في نفس الحجم
- من غير مسافات بين الحروف (letter-spacing)، لأن الحروف العربي متوصلة ببعض والمسافات بتقطع وصلها
- لا حروف كبيرة ولا خط مايل: العربي مفيهوش حروف كبيرة، وأغلب خطوطه ملهاش نسخة مايلة، فاستخدم الوزن أو الحجم أو اللون عشان تميّز
- من غير محاذاة مضبوطة (justify) للفقرات في المتصفح، لأنها بتوسّع المسافات بين الكلمات ومش بتمدّ الحروف
- مساحة كفاية للنقط والتشكيل، لأن ارتفاع السطر الضيق والصناديق اللي ارتفاعها ثابت ممكن يقصّوها
- أوزان حقيقية للعادي والمتوسط والعريض، عشان المتصفح ميعملش وزن عريض مزيّف
استخدم عيلة خط واحدة بتغطي اللغتين، أو خطين متناسقين. من الاختيارات المجانية على Google Fonts: Noto Sans Arabic و IBM Plex Sans Arabic و Cairo و Tajawal و Almarai، وكلهم برخصة Open Font License.
اقرا رخصة الخط التجاري قبل ما تعتمد التصميم. الويب والتطبيقات والطباعة غالبًا بيترخّصوا كل واحد لوحده، وبعض رخص الويب بتتحسب بعدد مشاهدات الصفحات، وبعضها بيمنع تحويل ملفات الخط أو استضافتها بشكل عام. ولو الخط هيدخل تطبيق Flutter، لازم الرخصة تغطي التطبيقات مش المواقع بس.
123 ولا ١٢٣؟ تختار شكل الأرقام إزاي
العربي ممكن يتكتب بالأرقام الغربية (0123456789)، اللي ناس كتير بيسموها «الأرقام الإنجليزي»، أو بالأرقام المشرقية (٠١٢٣٤٥٦٧٨٩) المعروفة بـ«الأرقام الهندي». الاتنين صح. المشرقية منتشرة في المطبوعات واليفط في مصر وأجزاء من الخليج، وفي نفس الوقت مواقع وتطبيقات عربي كتير بتستخدم الأرقام الغربية.
اختار شكل واحد وطبّقه في كل حتة: الأسعار والتواريخ والكميات والخطوات والرسوم البيانية. أنا عادةً ببدأ بالأرقام الغربية لأنها أسهل في أرقام التليفونات والأكواد اللي الناس بتنسخها، إلا لو العميل بيفضّل غيرها.
خزّن الأرقام كأرقام ونسّقها وقت العرض بس. القيم الافتراضية في Intl.NumberFormat بتختلف حسب الدولة وإصدار المتصفح: في البيانات الحالية ar-EG بتطلّع أرقام مشرقية، و ar-AE بتطلّع أرقام غربية. ضيف -u-nu-latn أو -u-nu-arab للغة عشان تفرض اختيارك. وفي Flutter، الـ NumberFormat اللي في باكدج intl بيعمل نفس الدور.
التواريخ والهجري والعملات
أسامي الشهور بتختلف حسب المنطقة: مصر والخليج غالبًا بيقولوا يناير، وأهل سوريا ولبنان والأردن والعراق بيقولوا كانون الثاني. نسّق التواريخ باللغة والدولة الصح بدل ما تبني النص بإيدك.
التاريخ الهجري مهم في السعودية وفي أي حاجة دينية. التقويم الهجري الرسمي في السعودية هو تقويم أم القرى، والمتصفحات بتدعمه باسم islamic-umalqura. حدّد التقويم صراحةً بـ -u-ca-gregory أو -u-ca-islamic-umalqura بدل ما تعتمد على الافتراضي. وفي مواعيد زي أول رمضان، الإعلان الرسمي ممكن يختلف عن التاريخ المحسوب بيوم، فمتبنيش وعود على تاريخ محسوب.
في العملة، اختار بين الرمز والكود، واتعامل مع السعر كوحدة واحدة في النص المخلوط. العربي عادةً بيحط المبلغ الأول، زي 250 ج.م، و ر.س للريال و د.إ للدرهم، أما الصفحات الإنجليزي فغالبًا بتستخدم EGP و SAR و AED. ورمز الريال السعودي الجديد اللي طلع في 2025 ليه حرف خاص في Unicode، بس خطوط كتير لسه مفيهاش الحرف ده، فجرّبه الأول.
الفورمز وخانات الإدخال والبحث
- عناوين الخانات والنصوص المساعدة ورسايل الخطأ بتتحاذى للبداية
- خانات الإيميل والباسورد والموقع والتليفون من الشمال لليمين حتى في الصفحة العربي
- خانات الاسم والعنوان والرسالة اتجاهها أوتوماتيك
- خانة التليفون بتقبل +20 و +966 و +971 ومش بتفرض شكل واحد للرقم
- الأرقام المشرقية بتتحوّل لغربية قبل التحقق أو الحفظ
- رسايل التحقق بالعربي، مش نص إنجليزي جاي من السيرفر زي ما هو
- عنوان الخانة بيفضل ظاهر، لأن النص الإرشادي بيختفي أول ما تبدأ تكتب
- منتقي التاريخ بيمشي على أول يوم في الأسبوع حسب الدولة: السبت في مصر، والحد في السعودية، والاتنين في الإمارات حسب بيانات اللغات الحالية
الكيبورد العربي بيوقّع فورمز كتير. العميل يكتب رقم تليفونه ويبان سليم، وبعدين السيرفر يرفضه لأن الأرقام مش من 0 لـ 9. حوّل الحروف من U+0660 لـ U+0669 واللي زيها في الفارسي من U+06F0 لـ U+06F9 في الواجهة والسيرفر مع بعض.
والبحث في المتجر الإلكتروني محتاج نفس الاهتمام. الناس بيكتبوا أحمد واحمد، وبيخلطوا بين ة و ه، وبين ي و ى. وحّد الحروف دي وتجاهل التشكيل والتطويل قبل المطابقة، وإلا العميل هيدوّر على منتج إنت بتبيعه فعلًا وميلاقيش حاجة.
في الويب: dir و lang وخصائص CSS المنطقية
ابدأ بعنصر html. الخاصية lang="ar" بتقول للمتصفح وقارئ الشاشة وأدوات الترجمة إن الصفحة عربي، و dir="rtl" بتحدد الاتجاه. بعدها Flexbox و Grid بيمشوا وراه، فالصفوف بتبدأ من اليمين من غير CSS زيادة.
وبعدين اكتب CSS بمنطق البداية والنهاية بدل الشمال واليمين. الخصائص المنطقية زي margin-inline-start و padding-inline و border-inline-start و inset-inline-end و text-align: start معناها اليمين في العربي والشمال في الإنجليزي، فملف تنسيق واحد بيخدم اللغتين. وفي Tailwind فيه ms-4 و pe-6 و text-start لنفس الفكرة.
فيه حاجات مش بتتقلب لوحدها: translateX() و background-position وإزاحات box-shadow والـ gradients المكتوبة بـ to right، وأي JavaScript بيقرا مكان الـ scroll أو المسافة من الشمال. فعّل اختيار RTL في مكتبات السلايدر ومنتقي التاريخ. ومتقلبش الصفحة كلها بـ transform أو row-reverse، لأن التنقّل بالكيبورد وقارئ الشاشة هيمشوا ساعتها بترتيب غلط.
<!doctype html>
<html lang="ar" dir="rtl">
<head>
<meta charset="utf-8">
<style>
.card {
position: relative;
padding-block: 1rem;
padding-inline: 1.5rem;
border-inline-start: 4px solid #0f766e; /* right in Arabic, left in English */
text-align: start;
}
.card .icon {
margin-inline-end: 0.75rem; /* space between the icon and the text */
}
.card .badge {
position: absolute;
inset-block-start: 0.5rem;
inset-inline-end: 0.5rem; /* top left in Arabic, top right in English */
}
[dir="rtl"] .icon-next {
transform: scaleX(-1); /* only for arrows that show direction */
}
</style>
</head>
<body>
<p>اتصل بنا على <span dir="ltr">+20 100 000 0000</span></p>
<p>المنتج: <bdi>Smart Watch S2 (Black)</bdi></p>
<input type="email" name="email" dir="ltr" autocomplete="email">
<textarea name="message" dir="auto"></textarea>
</body>
</html>في التطبيقات: Directionality و start و end في Flutter
Flutter بيدعم الاتجاه من اليمين للشمال من الأساس. لما العربي يبقى ضمن supportedLocales ومعاه الـ delegates العامة للترجمة، الـ MaterialApp بيحط Directionality من اليمين للشمال للتطبيق كله، فالـ Row والـ AppBar والـ Drawer والقوايم الأفقية بيبدأوا من اليمين.
ابعد عن أي حاجة متثبّتة على الشمال أو اليمين: EdgeInsetsDirectional بدل EdgeInsets.only(left: ...)، و AlignmentDirectional بدل Alignment.centerLeft، و PositionedDirectional بدل Positioned، و TextAlign.start بدل TextAlign.left. واقرا Directionality.of(context) لما رسمة مخصصة أو animation تحتاج تعرف الاتجاه.
الـ PageView والـ Dismissible وانتقال الصفحات بأسلوب Cupertino بيمشوا مع الاتجاه برضه. أما الإيماءات اللي بتكتبها بنفسك فلأ، فجرّب السحب المخصص بالعربي. وأنا كاتب عن Flutter بتفصيل أكتر، ومنه ملفات الترجمة وصيغ الجمع العربي، في مقالات لوحدها على المدونة دي.
@override
Widget build(BuildContext context) {
// Right to left whenever the app runs in Arabic.
final isRtl = Directionality.of(context) == TextDirection.rtl;
return Padding(
padding: const EdgeInsetsDirectional.only(start: 16, end: 8),
child: Row(
children: [
const Icon(Icons.phone),
const SizedBox(width: 8),
// The number keeps its left-to-right order inside an Arabic row.
Text(phone, textDirection: TextDirection.ltr),
const Spacer(),
// A custom drawing needs the direction passed in.
CustomPaint(
size: const Size(48, 8),
painter: StepPainter(isRtl: isRtl),
),
// Material arrows such as arrow_forward mirror on their own.
const Icon(Icons.arrow_forward),
],
),
);
}اكتب للقارئ العربي ومتترجمش
الـ layout المعكوس بإتقان بيفضل غريب لو الكلام اتترجم سطر بسطر. اكتب النص العربي لقارئه: جمل أقصر، والكلمات اللي الناس بتستخدمها فعلًا، وزراير بعبارات طبيعية زي «اطلب الآن» أو «تواصل معنا».
حدّد مستوى اللغة بدري. الفصحى البسيطة بتناسب مصر والخليج مع بعض وأغلب مواقع الشركات، واللهجة المصري الخفيفة ممكن تناسب براند استهلاكي بيكلّم السوق المصري. حتى الكلمات بتختلف: التطبيق غالبًا «تطبيق موبايل» في مصر و«تطبيق جوال» في السعودية.
والقواعد بتأثر على الواجهة كمان. الأفعال بتتغير مع المذكر والمؤنث، فكلمة «سجّل» بتكلّم راجل، لكن «التسجيل» محايدة. وللعربي ست فئات جمع في قواعد Unicode (zero و one و two و few و many و other)، فالأعداد محتاجة رسايل جمع حقيقية. ومتبنيش الجمل بإنك تلزق أجزاء في بعض؛ كل رسالة لازم تبقى نص كامل فيه متغيرات.
الترجمة الآلية مقبولة كمسودة أولى، بس لازم حد بيتقن العربي يعيد صياغتها وهو شايف الشاشات الحقيقية، اللي عليها الكلمة العربي ممكن تتكسر على سطرين أو تطلع بره مساحتها.
الظهور في جوجل لموقع بلغتين
ادّي كل لغة URL خاص بيها، زي /ar/ و /en/. الزرار اللي بيغيّر النص على نفس العنوان بـ JavaScript أو بـ cookie معناه إن جوجل هيشوف نسخة واحدة بس.
اربط النسختين بلينكات hreflang في كل صفحة، بتشاور على الصفحة نفسها وعلى نسختها باللغة التانية، وفي الاتجاهين. والـ canonical في كل نسخة بيشاور عليها هي، مش على اللغة التانية. وترجم كمان عنوان الصفحة ووصفها والعناوين اللي جواها والنص البديل للصور.
جوجل بيعرف اللغة من المحتوى الظاهر مش من خاصية lang، بس lang لسه مهمة للمتصفح وقارئ الشاشة. متحوّلش الزائر أوتوماتيك حسب مكانه أو لغة المتصفح بتاعه، لكن حط زرار لغة بينقله لنفس الصفحة باللغة التانية.
دوّر على الكلمات المفتاحية العربي لوحدها. الناس بتدوّر بعبارات زي «تصميم مواقع» و«برمجة تطبيقات»، ونادرًا ما بتبقى ترجمة مباشرة لكلمتك الإنجليزي، والصياغة ممكن تختلف بين مصر والخليج. ضيف النسختين للـ sitemap، وتابع فهرستهم في Google Search Console.
<!-- In the head of https://example.com/ar/services -->
<link rel="canonical" href="https://example.com/ar/services">
<link rel="alternate" hreflang="ar" href="https://example.com/ar/services">
<link rel="alternate" hreflang="en" href="https://example.com/en/services">
<link rel="alternate" hreflang="x-default" href="https://example.com/en/services">
<!-- The English page lists the same three alternates,
with its canonical pointing to /en/services -->الاختبار في الاتجاهين
أنا براجع كل شاشة باللغتين وأنا ببنيها، مش في آخر المشروع:
- كل الشاشات باللغتين، ومنها الحالات الفاضية ورسايل الخطأ وحالات التحميل
- محتوى عربي حقيقي بطول واقعي، مش نص وهمي
- المحتوى المخلوط: أسامي إنجليزي وإيميلات وأرقام تليفونات وأسعار جوه جمل عربي
- ترتيب التنقّل بزرار Tab في كل فورم
- VoiceOver على iPhone و TalkBack على Android بالعربي
- موبايل حقيقي لغته عربي، مع الإشعارات والكيبورد
- الإيميلات وفواتير PDF والرسايل النصية ولوحة التحكم، وأدوات الشات والخرايط وصفحات الدفع الخارجية
- في Flutter، اختبارات widget أو golden بتعرض الشاشات المهمة جوه Directionality مع TextDirection.rtl
أخطاء منتشرة وإزاي تتجنبها
- قلب الصفحة بـ transform أو row-reverse بدل ما تستخدم dir والخصائص المنطقية
- كتابة left و right ثابتين في CSS أو Flutter
- لوجوهات وصور وزراير تشغيل وأرقام تليفونات معكوسة
- عنصر html من غير lang و dir
- نص عربي مقصوص بسبب ارتفاع سطر ضيق أو صندوق ارتفاعه ثابت
- رسايل خطأ إنجليزي جوه الواجهة العربي
- فواتير PDF وإيميلات الحروف العربي فيها بتطلع مفكوكة أو معكوسة
- إضافة العربي في الآخر، فكل شاشة تتفتح من الأول
أغلب الأخطاء دي سببها إن العربي بيتعامل كترجمة في آخر المشروع. ولما يبقى جزء من نظام التصميم من أول شاشة، تكلفته الزيادة بتبقى قليلة.
والموقع الموجود المليان left و right غالبًا ينفع يتصلّح شاشة ورا شاشة. اطلب مراجعة الأول، وبعدين عرض سعر مبني على اللي المراجعة كشفته.
قائمة مراجعة قبل الإطلاق، وتعمل إيه بعدها
- الخاصيتين lang و dir مظبوطين، أو العربي ضمن لغات التطبيق المدعومة
- الـ layout والقوايم والخطوات والسلايدر وشرايط التقدّم بتتقلب
- اللوجوهات والصور وزراير الميديا والأرقام مش بتتقلب
- الأيقونات اللي ليها اتجاه بتشاور على الناحية الصح
- النص المخلوط معزول في الأماكن اللي محتاجة كده
- ارتفاع السطر والحجم والأوزان مظبوطين، من غير مسافات بين الحروف
- رخصة الخط بتغطي الموقع والتطبيق
- شكل واحد للأرقام، والتواريخ والأسعار بتعدّي على أداة تنسيق
- الفورمز بتقبل الأرقام المشرقية وبتعرض الأخطاء بالعربي
- كل لغة ليها URL خاص، و hreflang و canonical وعنوان صفحة ووصف خاصين بيها
- كل شاشة متجرّبة في الاتجاهين على أجهزة حقيقية
لو بتخطط لموقع جديد أو متجر إلكتروني أو تطبيق موبايل، قول للمطوّر من أول يوم إن العربي ضمن نطاق الشغل، حتى لو هينزل بعد الإنجليزي. القرار ده بيحدد الـ layout والخط والعناوين والميزانية.
ولو النسخة العربي عندك ضعيفة، ابدأ بالشاشات اللي بتجيب مبيعات: الصفحة الرئيسية، وصفحات المنتجات أو الخدمات، والتسجيل، وإتمام الشراء. طبّق عليها القايمة دي وصلّح اللي مش بيعدّيها. ولو عايزني أراجع موقعك أو تطبيقك، ابعتلي اللينك وأهم الشاشات، وأنا هقولك إيه اللي محتاج يتصلّح وحجم الشغل المطلوب.
أسئلة شائعة
- إزاي أخلّي موقعي يدعم العربي من اليمين للشمال؟
- حط lang="ar" و dir="rtl" على عنصر html في الصفحات العربي، واكتب CSS بالخصائص المنطقية زي margin-inline-start بدل left و right. وبعدين راجع الأيقونات والنص المخلوط والخطوط والفورمز في كل صفحة. بالطريقة دي layout واحد بيخدم اللغتين.
- أستخدم الأرقام الهندي ولا الإنجليزي في الموقع العربي؟
- الاتنين صح؛ اختار واحد والتزم بيه في كل حتة. الأرقام الإنجليزي (123) أسهل في أرقام التليفونات والأكواد اللي الناس بتنسخها، والهندي (١٢٣) أقرب للمطبوعات التقليدية. وفي الحالتين، اقبل الشكلين في خانات الإدخال وحوّلهم قبل الحفظ.
- لازم أقلب الأيقونات في التصميم العربي؟
- الأيقونات اللي بتشاور على اتجاه بس، زي أسهم الرجوع والتالي وأيقونة الإرسال ومؤشرات التقدّم. أما أيقونات الحاجات الحقيقية واللوجوهات وزراير تشغيل الفيديو فبتفضل زي ما هي.
- أحط النسخة العربي على دومين منفصل ولا في فولدر /ar/؟
- الطريقتين شغالين مع جوجل طول ما كل لغة ليها عناوين خاصة والنسختين مربوطين بـ hreflang. الفولدر زي /ar/ أسهل في الإدارة وبيخلّي الموقع كله في مكان واحد، وده اللي بنصح بيه عادةً. أما الدومينات المنفصلة فبتناسب الشركات اللي بتدير نشاط مختلف في كل دولة.
- ترجمة جوجل تكفي للنسخة العربي من الموقع؟
- تكفي كمسودة أولى بس. لو اتنشرت زي ما هي هتبان مترجمة، وغالبًا هتغلط في المذكر والمؤنث وصيغ الجمع، ومش هتستخدم الكلمات اللي عملاءك بيدوّروا بيها. اطلب من كاتب بيتقن العربي يعيد صياغتها على الشاشات الحقيقية.
- العربي بيزوّد تكلفة تصميم موقع أو تطبيق قد إيه؟
- ده بيعتمد على عدد الشاشات، ومين هيكتب المحتوى العربي، ورخصة الخط، والأدوات الخارجية اللي محتاجة تدعم العربي زي الدفع والإيميلات والفواتير. إنك تخطط له من البداية أرخص بكتير من إنك تضيفه بعدين. ابعت الشاشات أو نطاق الشغل، واطلب عرض سعر يذكر العربي كبند لوحده.
- Flutter بيدعم العربي والاتجاه من اليمين للشمال؟
- أيوه. لما العربي يبقى ضمن supportedLocales ومعاه الـ delegates العامة، Flutter بيعرض التطبيق كله من اليمين للشمال وأسهم Material بتتقلب لوحدها. بس برضه محتاج المسافات والمحاذاة اللي بتمشي مع الاتجاه، وتاخد بالك من النص المخلوط، وتجرّب كل شاشة بالعربي.