النصوص في Android Studio

Abdulrahman Aghaمنذ 7 سنوات

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

 

يعاني الكثير من مطوري التطبيقات على منصة الـ Android  من مشكلة التعامل مع النصوص في التطبيقات التي يطورونها. سنقوم في هذه المقالة بتسليط الضوء على ملف الـ XML التي يوفره لك Android Studio كحل لكثير من المشاكل المتعلقة بالـ Strings الموجودة داخل التطبيق الخاص بك. ومن هذه المشاكل : 

1- احتواء التطبيق الخاص بك على الكثير من النصوص المتشابهة والمتكررة مما يجعل القيام بتغييرها جميعاً أمراً بحاجة إلى الكثير من الوقت.

2- قد ترغب بأن يدعم التطبيق الخاص بك لغات متعددة في آن واحد. 

الحل بكل بساطة يكمن في ملف الـ strings.xml. فكيف يمكننا التعامل معه ؟

 

مميزات ملف الـ strings.xml:

1- تخزين جميع النصوص المستخدمة داخل التطبيق واستخدام الملف كمكتبة يتم استيراد النصوص منها بشكل مباشر.

2- تغيير النص داخل ملف الـ strings كفيل بتغيير كافة الـ textViews التي تستخدم هذا النص على سبيل المثال.

3- تخزين جميع اللغات التي ترغب أن يدعمها التطبيق الخاص بك. حيث سيتم عرض النصوص بحسب اللغة المستخدمة داخل الجهاز.

لنتعرف معاً كيف يتم التعامل مع هذا الملف.

 

1- نقوم بإنشاء project جديد ونسميه Strings على سبيل المثال.

1.jpg

 

2- نقوم بترك اعدادات الأجهزة والنظام كما هي.

2.jpg

 

3- نقوم باختيار Empty Activity على سبيل المثال.

3.jpg

 

4- نختار الإسم الخاص بالـ Activity.

4.jpg

 

5- بعد إنشاء project جديد نقوم بالذهاب إلى قائمة الـ projects على اليسار واسدال قائمة الـ resources ومن ثم قائمة الـ values لنجد ملف الـ strings.xml. اللغة المقترحة أو الـ default عند إنشاء أي تطبيق هي الإنجليزية. 

5.jpg

 

6- عند فتح الملف سنلاحظ وجود Block الـ resources وبداخله Block خاص بالنصوص المستخدمة داخل التطبيق ونلاحظ بأن اسم التطبيق محفوظ بشكل اوتوماتيكي داخل ملف الـ strings. الصيغة التي يتم ادخال أي strings في ملف الـ strings هي:

<string name="NAME_OF_THE_VARIABLE">THE_VALUE</string>

المقصود بـ NAME OF THE VARIABLE هو اسم النص، والاسم هو الذي سيتم الاشارة إليه مستقبلاً إذا اردت استخدام النص داخل textView على سبيل المثال. وأما THE VALUE تشير إلى النص الذي سيظهر عند تشغيل التطبيق. في الصورة يتبين لنا بأن app_name هو اسم الـ string ونصه Strings.

6.jpg

 

7- نقوم بإضافة بعض النصوص بنفس الطريقة.

7.jpg

 

8- نعود للـ activity ونقوم بإضافة textView آخر للتجريب. "نلاحظ وجود كلمة Strings والتي ستتغير بمجرد تغييرك للـ app_name الموجود داخل الـ strings.xml.

8.jpg

 

9- بالضغط على أول textView سيظهر لنا قائمة الخصائص على يسار الشاشة وإذا لم تظهر يمكنك الذهاب إلى خصائص جميع الـ components الموجودة داخل الـ activity بالضغط على text.

   9.jpg 10.jpg

 

10- قم بتغيير الـ text إلى string/NAME_OF_THE_VARIABLE@ وستلاحظ تغير النصوص داخل الـ activity بشكل مباشر إلى نفس النصوص الموجود داخل ملف الـstrings وأي تغيير داخل ملف الـ XML سيقوم بتغييرها.

11.jpg

 

11- نلاحظ بأننا عندما قمنا بتغيير النص داخل ملف النصوص. تغيرت النصوص بشكل مباشر.

12.jpg  13.jpg

 

 

تم مناقشة الفائدة الأولى من ملف الـ strings وطريقة استخدامه والآن لنرى كيف نستطيع دعم أكثر من لغة في تطبيق واحد. سنختار العربية على سبيل المثال. 

 

1- سنحتاج إلى إنشاء ملف strings.xml جديد داخل ملف الـ values.

14.jpg

 

2- اسم الملف يجب أن يكون strings ونقوم بتغيير الـ Directory name إلى values-ar. وهنا رمز الـ ar يشير إلى العربية ولكل لغة الرمز الخاص بها.

15.jpg

 

3- نلاحظ وجود الملف داخل مجلد الـ strings وبجانبه الرمز الخاص به.

16.jpg

 

4- نقوم الآن بنسخ جميع النصوص الموجود داخل الملف الأول ولصقها داخل ملف الـ strings.xml الجديد الخاص باللغة العربية وتغيير جميع النصوص إلى اللغة العربية. يلاحظ بأنه يجب عدم تغيير NAME_OF_THE_VARIABLE لأن بتغييرها ستتضطر إلى اختيار إحدى اللغتين للظهور داخل الـ textViews على سبيل المثال.

17.jpg

 

5- بالعودة إلى الـ activity وبعد الانتهاء من ترجمة النصوص للعربية سنلاحظ بأنه تم إضافة اللغة العربية إلى قائمة الـ Language أعلى الـ activity وبامكانك اختيار اللغة العربية أو الانجليزية لرؤية النتائج.

2.jpg1.jpg

 

6- نلاحظ عند تشغيل الـ emulator سيعطينا كافة النصوص باللغة الانجليزية كونها اللغة الافتراضية. 

 19.jpg

 

7- لإظهار النصوص باللغة العربية سنضطر لتغيير لغة الجهاز إلى العربية. نذهب للـ settings او الاعدادات.

20.jpg

 

8- نختار العربية.

21.jpg

 

9- بالعودة إلى قائمة التطبيقات نجد بأن اسم التطبيق قد تغير بشكل مباشر من Strings إلى النصوص.

22.jpg

 

10- نجد بأن كافة النصوص تغيرت إلى اللغة العربية بشكل مباشر.

23.jpg

 

 

بهذه الطريقة ستحل الكثير من المشاكل التي قد تواجه الكثير من المطورين عند التعامل مع النصوص أو اللغات. 

يجب التنويه إلى أن ملف الـ strings.xml يقبل أيضاً array of strings أو مصفوفة من النصوص وليس نصوص فردية فقط وقد نتطرق إلى هذه الفكرة وكيفية التعامل معها بمقال آخر. 

 

إلى هنا نصل إلى نهاية المقال. أتمنى بأني قد وفقت إلى ايصال الفكرة بشكل واضح وشكراً على حسن المتابعة.

كلمات دليلية:
1
إعجاب
12504
مشاهدات
0
مشاركة
1
متابع

التعليقات (1)

أسامة الشريف:

موضوع أكثر من رائع و مهم جدا للجميع
على المستوى الشخصي استفدت منه كثيرا 
شكرا لحضرتك ولي شرف المتابعة 
تحياتي 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !