Changing App language dynamically - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم برمجة الهواتف (http://vb4arb.com/vb/forumdisplay.php?fid=208) +--- قسم : قسم مقالات Xamarin.Android (http://vb4arb.com/vb/forumdisplay.php?fid=209) +--- الموضوع : Changing App language dynamically (/showthread.php?tid=25711) |
Changing App language dynamically - Sajad - 12-07-18 بسم الله الرحمن الرحيم
تغيير لغة التطبيق حسب اختيار المستخدم
عند انشاء تطبيق يدعم لغة واحدة فقط فان ذلك سيقلل من انتشاره على مستوى عالمي لذا ترى الكثير من التطبيقات تدعم العديد من اللغات.
لذا في هذا الدرس سنتعلم كيفية جعل التطبيق متعدد اللغات بحيث يتغير لغة التطبيق بتغيير لغة الجهاز وليس هذا فقط بل احيانا نحتاج تغيير لغة التطبيق فقط بدون تغيير لغة الجهاز ،أي باختيار المستخدم وهذا ما سنتعلمه في هذا الدرس ايضا.
المجلد values داخل مجلد Resources وهذا ما سنركز عليه وايضا على ملف strings داخل المجلد values. values: هذا المجلد يضم ملفات عدة منها: strings, styles, and colors وكل ملف مختص بأمر معين ولكن سنركز فقط على ملف strings. strings: ملف وظيفته خزن النصوص من عناوين وارقام (Ads ID) بحيث كل نص يعطى له اسم معين وعن طريق هذا الاسم نقوم باسناد النص الى اداة معينة. طيب ما علاقة كل هذه التوضيحات بموضوعنا: كيف اجعل المستخدم يختار لغة التطبيق بنفسه؟ لندخل الان الى صلب الموضوع: لجعل التطبيق يدعم اكثر من لغة يجب عليك تكرار مجلد values بعدد اللغات التي تريد دعمها بالشكل التالي: (سنأخذ اللغة العربية والانكليزية كمثال) فقط تضيف لاحقة اللغة على اسم المجلد بهذا الشكل: values
values-en
بحيث سيبقى values يحوي اللغة الافتراضية كأن تكون عربية او أية لغة اخرى و values-en المجلد الذي سيحتوي على النصوص الانكليزية وهكذا مع بقية اللغات.
طيب أين ملف strings؟ وما دورها؟
هذا الملف عند تكرارك لمجلد values سيتم تكرار ملف strings مع محتوياته لذا قم فقط بتغيير النصوص الى اللغة التي تريد دعمها مع الابقاء على الاسماء كما هي.
مثال:
محتوى ملف strings داخل مجلد values:
PHP كود : <resources> محتوى نفس الملف داخل مجلد values-en:
PHP كود : <resources> كما تلاحظ ان الـ name هي نفسها فقط قمنا بتغيير او ترجمة النصوص.
الان نأتي الى كيفية استخدام هذه الـ names:
1- عن طريق خواص الاداة.
2- برمجيا.
مثال:
PHP كود : <TextView او
PHP كود : myText = FindViewById<TextView>(Resource.Id.testText); كل ما سبق سينجم عن تغيير لغة التطبيق وفقا للغة الجهاز.
أما ان اتحنا للمستخدم تغيير اللغة حسب اختياره فعلينا ان نقوم بالامور التالية:
1-
PHP كود : using Android.Content; هذا الكلاس وظيفته يسمح للمستخدم تغيير لغة التطبيق بنفسه وحفظ اللغة التي اختارها.
كيفية استخدام هذا الكلاس:
داخل MainActivity سنعمل override لهذه الدالة ونستدعي بداخلها دالة تغيير اللغة عند تشغيل التطبيق:
PHP كود : protected override void AttachBaseContext(Context @base) الجزء الخاص باختيار المستخدم اللغة التي يريدها:
PHP كود : public override bool OnOptionsItemSelected(IMenuItem item) طبعا كما تلاحظون هذا جزء من الكود الخاص بالـ menu .
فيديو توضيحي:
الكود كاملاً ستجده على GitHub من الرابط التالي:
نسأل الله التوفيق
تحياتي لكم
|