اللغة وتعدد اللغات في تطبيقك من أحد أهم الأمور التي يجب أن تأخذها في الحسبان عند بناءك لأي تطبيق. في هذا الدرس سنتعلم:
- كيفية إضافة أكثر من لغة للتطبيق.
- كيف نجعل التعرف على اللغة أوتوماتيكي أو كيف نعطي المستخدم خيار اختيار اللغة.
- أيضا أحد أهم الأمور هي كيف إضافة Layout يتحول من اليسار إلى اليمين عند اختيارك للغة كاللغة العربية أو الفارسية أو العبرية.
تعتبر اللغة أحد الموارد (Resources) التي يحتاجها تطبيقك للعمل بشكل صحيح. بشكل افتراضي عند إنشاءك لمشروع أندرويد في منصة Android Studio، يتم إنشاء مجلد res ومجلد values ومجلد strings.xml وهذا على افتراض أن مشروعك سيكون باللغة الانجليزية. كل الموارد التي سيحتاجها أو يستخدمها تطبيقك يجب أن تكون داخل مجلد res. اللغة تأخذ ملف xml تحت إسم strings ويكون هذا الملف داخل مجلد اسمه values. إذاً يصبح امتداد ملف اللغة كالتالي
res – > values – > strings.xml
إضافة ملف لغة
لإضافة ملف لغة، كل ماعليك فِعله هو إضافة مجلد values متبوعا برمز اللغة على حسب معايير ISO 639-1 التي تجدها في هذا الرابط فيصبح لدينا موارد اللغة العربية كالتالي
res – > values-ar -> strings.xml
الان عليك أن توفر داخل ملفي ال strings.xml كل ال strings التي ستستخدمها في تطبيقك باللغتين العربية والانجليزية.
بعد أن تنتهي من توفير ال strings داخل الملفان وباللغتين المختلفتين، سيعمل نظام اندرويد على استدعاء واستخدام ملف اللغة المطابق للغة الجهاز. فإذا كان جهازك عربي سيستخدم ملف strings.xml الموجود داخل مجلد values-ar وإذا كان جهازك باللغة الانجليزية سيستخدم ملف strings.xml داخل مجلد values (المجلد الافتراضي).
في هذه الطريقة – وبشكل اوتوماتيكي – يقوم النظام باستدعاء الموارد المناسبة لـ اللغة المستخدمة. هذه هي الطريقة التي ينصح بها الكثير وهي أن يكون ملف اللغة مشابه للغة النظام حتى لاتحصل مشاكل توافقية.
تغيير الواجهات من اليسار إلى اليمين عند تغيير اللغة
اللغة العربية والفارسية والعبرية تصنف ضمن لغات RTL ويعني من اليمين إلى اليسار Right To Left لذا عند برمجتك لتطبيق يدعم لغات مختلفة التوجه LTR and RTL يجب أن تاخذ بعين الإعتبار طُرق تغيير الواجهات بناءً على اللغة المستخدمة.
بشكل افتراضي وعند إنشاءك لمشروع في أندرويد ستوديو تعتبر لغة الواجهات انجليزية LTR لذا لإضافة واجهة عربية هناك عدة طرق:
I) الطريقة الأولى
1- أضف خيار android:supportsRtl=”true” في ملف ال AndroidManifest وتحت tag ال application
2- استخدم marginStart بدلا من marginLeft و marginEnd بدلا من marginRight
أيضا استخدم paddingStart بدلا من paddingLeft و paddingEnd بدلا من paddingRight
وكذلك يمكنك استخدام بعض ال attributes لتحديد اتجاه الواجهة كـ
android:layoutDirection
android:textDirection
android:textAlignment
II) الطريقة الثانية
يمكن أن تضيف مجلد خاص بالمخططات الخاصة باللغة العربية ويكون بإسم layout-ar أو يمكن أن تضيف مجلد خاص بأي لغة تتبع توجه RTL بإضافة مجلد layout-ldrtl
res/
layout/
main.xml (Default layout)
layout-ar/
main.xml (Specific layout for Arabic)
layout-ldrtl/
main.xml (Any “right-to-left” language, except
for Arabic, because the “ar” language qualifier
has a higher precedence.)
إضافة خيار اللغة للمستخدم
يُفضل أن يكون خيار تغيير اللغة داخل قائمة overflow كما هو بالصورة التالية أو ضمن الإعدادات Settings الخاصة بالتطبيق.
عند الضغط على اختيار لغة Choose Language تفتح قائمة popup باللغات المتوفرة.
عند اختيار المستخدم للغة معينة يتم الآتي:
- معرفة اللغة التي اختارها
- حفظ رمز اللغة في الـ shared preference
- يعيد البرنامج تشغيل نفسه
- عند بدء البرنامج يتم التأكد من وجود لغة مختارة من قِبل المستخدم أو لا، فإذا كان هناك لغة قد حددها المستخدم سابقا يتم تغيير إعدادات الـ Locale لتأخذ اللغة المختارة
يفضل أن تُظهر رسالة تنبيهية للمستخدم قبل إعادة تشغيل البرنامج كما في الصورة.
وبعد إعادة التشغيل
الكود المصدري تجده كاملاً في هذا الرابط.
2
السلام عليكم
ماهر نبيل هل انت مطور تطبيقات احتاج مساعدة
وعليكم السلام محمد،
تفضل : )