عن المؤسس30 سبتمبر 20264 دقائق قراءة

عبدالله عبدالرحيم الكندي: أخطاء التوطين في تطبيق ثنائي اللغة عربي وإنجليزي

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

عبدالله عبدالرحيم الكندي — تطبيق ثنائي اللغة
AZHAL

تطبيق ثنائي اللغة

عبدالله عبدالرحيم الكندي

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

الخطأ الأول: نصوص مكتوبة مباشرة في الكود

كتابة «تسجيل الدخول» مباشرة داخل الشاشة تشتغل اليوم، لكنها تعني إن كل نص في التطبيق لازم يُطارد يدوياً يوم تبي لغة ثانية. الصح من أول يوم: كل نص في ملف ترجمة بمفتاح. في Flutter الطريقة الرسمية ملفات ARB مع أداة gen-l10n، اللي تولّد كلاس Dart فيه كل نص كخاصية، فتكتب AppLocalizations.of(context).login بدل النص الحرفي، ولو نسيت مفتاحاً تعرف وقت البناء مو من شكوى مستخدم. وفي Next.js مكتبات مثل next-intl تقوم بنفس الدور مع ملف JSON لكل لغة.

واختر للمفاتيح أسماء تشرح مكانها مثل checkoutPayButton بدل button1، وأضف وصفاً للمترجم؛ ملفات ARB تسمح بحقل وصف لكل نص. كلمة «Book» ممكن تكون «احجز» أو «كتاب»، والمترجم اللي يشوف الكلمة بدون سياق بيخمّن، والتخمين يطلع لك زراً مترجماً غلط في أهم شاشة.

الخطأ الثاني: تركيب الجمل بالدمج

كتابة «لديك» ثم الرقم ثم «رسائل» بالدمج تبدو ذكية، لكنها تنكسر في العربي من أول رقم. العربية لها ست صيغ للعدد في معيار ICU: صفر، وواحد، واثنان، وقليل مثل ٣ إلى ١٠، وكثير مثل ١١ إلى ٩٩، وصيغة لبقية الأعداد. «رسالة واحدة»، «رسالتان»، «٣ رسائل»، «١١ رسالة»، «١٠٠ رسالة». الإنجليزية لها صيغتان فقط، فاللي يبني على الإنجليزي أولاً ينسى الباقي.

الحل صيغة plural من ICU داخل ملف الترجمة نفسه، وملفات ARB تدعمها: تكتب لكل صيغة جملتها الكاملة، والمكتبة تختار حسب الرقم. ونفس الشي للمخاطبة: «مرحباً بك» للمذكر و«مرحباً بكِ» للمؤنث تحتاج صيغة select، مو شرط if مبعثر في الكود. والقاعدة الأعم: المترجم يستلم جملة كاملة فيها متغيرات بأسماء واضحة مثل {name}، عشان يرتّبها حسب قواعد لغته، لأن ترتيب الكلمات في العربي غير الإنجليزي.

الخطأ الثالث: الأرقام والتواريخ والعملة بتنسيق واحد

  • الأرقام: هل تعرض ١٢٣ أو 123 في الواجهة العربية؟ القرار تصميمي، لكن لازم يكون متسقاً في كل الشاشات. والأهم إن حقول الإدخال تقبل الشكلين: مستخدم يكتب رقم جواله بالأرقام العربية المشرقية والسيرفر يرفضه، خطأ يتكرر أكثر مما تتوقع.
  • التواريخ: استخدم أدوات التنسيق حسب اللغة مثل DateFormat في حزمة intl، ولا ترتّب اليوم والشهر يدوياً. وإذا جمهورك يحتاج التاريخ الهجري، قرّر من البداية وين يظهر ووين يكفي الميلادي.
  • العملة: «١٥٠ ر.س» في العربي و«SAR 150» في الإنجليزي، ومكان الرمز يختلف. خلّ هذا لأداة التنسيق بدل ما تكتبه بيدك.
  • التخزين: السيرفر يحفظ الأرقام والتواريخ بصيغة محايدة، التوقيت بـ UTC والتاريخ بصيغة ISO 8601، والتنسيق حسب اللغة يصير في الواجهة فقط.

الخطأ الرابع: ترجمة الواجهة ونسيان المحتوى

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

وفي الموقع المرافق للتطبيق، كل لغة تحتاج رابطاً خاصاً بها، مثل ‎/ar و ‎/en، مو صفحة وحدة تبدّل النص بالجافاسكربت. محرّكات البحث تفهرس الرابط، ووسوم hreflang تقول لها إن الصفحتين ترجمة لبعض، فيظهر للباحث بالعربي النسخة العربية وللباحث بالإنجليزي النسخة الإنجليزية، وكل وحدة بعنوانها ووصفها.

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

الخطأ الخامس: اختبار لغة وحدة

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

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

ولا تنسَ صفحة المتجر. App Store و Google Play يسمحان بنص ولقطات شاشة لكل لغة، وتطبيق ثنائي اللغة بصفحة متجر بلغة وحدة يخسر نص الفائدة.

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

عندك فكرة؟ الاستشارة الأولى علينا

كلّم عبدالله مباشرة على واتساب — رسالتك توصل له هو، مو لرد آلي. نسمع فكرتك ونقول لك وش تحتاج وكم تكلّف، ببلاش.

مقالات ذات صلة

كل المقالات
عبدالله الكندي — مكتبة سكيلز
AZHAL

مكتبة سكيلز

عبدالله الكندي

30 سبتمبر 20264 دقائق قراءة

عبدالله الكندي وقصة مكتبة «سكيلز»: ألف سكِل في مكان واحد

كيف بنى عبدالله الكندي مكتبة «سكيلز» المجانية: أكثر من ألف سكِل مفتوح المصدر لـ Claude مصنّفة بتحميل مباشر، ومحادثة ذكية تفلتر الكتالوج محلياً قبل سؤال النموذج.

اقرأ المقال
عبدالله عبدالرحيم الكندي — سناب بكسل
AZHAL

سناب بكسل

عبدالله عبدالرحيم الكندي

30 سبتمبر 20264 دقائق قراءة

عبدالله عبدالرحيم الكندي: ليش إعلان سناب بدون Snap Pixel أعمى؟ سؤال وجواب

أسئلة وأجوبة مع عبدالله عبدالرحيم الكندي عن Snap Pixel وتتبّع التحويلات: وش يسوي البكسل، وأي الأحداث تحتاج، وليش الأرقام ما تطابق متجرك، ومتى تحتاج Conversions API.

اقرأ المقال
عبدالله بن سنكر — العلامة الشخصية
AZHAL

العلامة الشخصية

عبدالله بن سنكر

30 سبتمبر 20264 دقائق قراءة

عبدالله بن سنكر: ليش الناس تشتري من شخص؟ العلامة الشخصية للمؤسس التقني

ليش الناس تشتري من شخص قبل شركة؟ عبدالله بن سنكر يفكك خمس خرافات تمنع المؤسس التقني من بناء علامته الشخصية، ويقابل كل وحدة بالحقيقة وبخطوة عملية تبدأ بها اليوم.

اقرأ المقال