Localization: كيف تدعم أكثر من لغة في تطبيقك
بسم الله الرحمن الرحيم
سنتعرف في هذا الدرس على طريقة انشاء تطبيق يدعم تعدد اللغات بحسب لغة الجهاز، سنعتمد اللغتين العربية والانجليزية في هذا التطبيق.
سنبدأ أولا باضافة جميع اللغات التي نريد دعمها في تطبيقنا
نذهب الى Project Navigator
ثم نقوم باضافة اللغات المطلوبة من الأسفل
نلاحظ تقسيم الملفات الى لغتين كما في الصورة
االآن سنقوم بانشاء ملف من نوع String لنخزن فيه جميع الStrings باللغتين العربية والانجليزية
اضغط على File > New > File واختر النوع String كما في الصورة
تأكد من تسمية الملف باسم "Localizable" تماما كما هو ليتعرف عليه الxCode بشكل صحيح
الآن نختار الملف الجديد من اليسار، ومن قائمة الFile Inspector نضغط على Localize ونختار اللغة الانجليزية مبدئيا
الآن نختار اللغة العربية أيضا لنقوم بتقسيم ملف الLocalizable.strings الى لغتين
قم باضافة الStrings المطلوبة الى الملفين بالطريقة التالية
ليقوم الxCode بعمل Build تأكد من:
- كتابة الkey بشكل موحد بين اللغتين العربية والانجليزية
- وضع علامة ال= بين الkey والvalue
- كتابة الvalue بين علامتي تنصيص ""
- انهاء السطر بSemi-Colon ;
لنرى طريقة استدعاء الStrings من ملف Localizable قمت بعمل الواجهة البسيطة التالية:
وقمت بربط الOutlets والActions كالتالي:
الآن اضف الكود التالي في زر اللغة الانجليزية:
let path = Bundle.main.path(forResource: "en", ofType: "lproj")
let bundle = Bundle.init(path: path!)! as Bundle
nameLbl.text = bundle.localizedString(forKey: "WebsiteName", value: nil, table: nil)
والتالي لزر اللغة العربية:
let path = Bundle.main.path(forResource: "ar", ofType: "lproj")
let bundle = Bundle.init(path: path!)! as Bundle
nameLbl.text = bundle.localizedString(forKey: "WebsiteName", value: nil, table: nil)
في السطر الأول: قمنا بتعريف الpath الذي سيوصلنا لكل من ملفات اللغة العربية والانجليزية
(يمكنك معرفة الResource والType من قائمة الFile Inspector عند الضغط على ملفي العربية والانجليزية)
في السطر الثاني قمنا بتعريف كل من ملفات اللغتين كVariable يحمل الاسم bundle
في السطر الثالث قمنا باستدعاء الString المطلوب باستخدام الميثود localizedString(_:String,_:String,_:Strint(
والآن عند تجربة البرنامج نرى النتيجة التالية (صورة GIF):
حتى الآن كنا نحدد ملف اللغة الذي نريد استدعاء الString منه
والآن سنقوم بتغيير النص اعتمادا على لغة الجهاز باستخدام زر واحد فقط
لنرى ذلك قمت بتغيير الStoryboard ليحتوي على زر واحد فقط، وقمت باضافة الoutlets والactions كالتالي:
والآن قم باضافة السطرين التاليين للميثود viewDidLoad()
let btnTitle: String = NSLocalizedString("ButtonText", comment: "")
languageBtn.setTitle(btnTitle, for: .normal)
والسطر التالي للميثود الخاصة بالbutton action
nameLbl.text = NSLocalizedString("WebsiteName", comment: "")
في هذه الاكواد، قمنا باستعمال الميثود NSLocalizedString لاستدعاء الString المناسب بحسب لغة الجهاز
لتجربة البرنامج سنقوم بتشغيله على جهاز بلغة انجليزية، ثم سنحولها للعربية ونعيد التجربة
(صورة GIF):
وصلنا الى ختام الدرس، أستودعكم الله الذي لا تضيع ودائعه.
التعليقات (0)
عرض المزيد.. جديد مقالاتي
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !