السلام عليكم و رحمة الله و بركاته
كان أحد الإخوة في المنتدى قد طلب منِّي أن أكتب شرحاً لكيفيّة عمل تطبيق متعدِّد اللغة Multilanguage application
و لعلِّي أحاول تلبية رغبته في هذا الدرس المختصر جدَّاً .
كيف نصنع تطبيق متعدِّد اللغة ؟
في البداية و قبل كل شيء يجب أن نتوجَّه بالشكر الكبير لحبيبتنا Microsoft على ما تقدمه لعشَّاقها المبرمجين من تسهيلات مستمرَّة ;
لا أزال أذكر عندما أردتُ عمل تطبيق متعدِّد اللغة لأوَّل مرَّة باستخدام فيجوال بيسك 6 أو C++ , الموضوع كان في غاية الصعوبة
إن قُورِنَ بالطريقة الجديدة التي قدَّمتها Microsoft (حبيبتنا) مع بيئة التطوير Visual Studio و إطار العمل دوت نت.
حيث أصبح يمكن أن نقول لك كمبرمج يريد عمل تطبيق متعدِّد اللغات
1- أنشئ مشروعاً جديداً و أبدأ بعمل نافذة للتطبيق باللغة العربيَّة .

2- اختر الخاصيّة Localizable للنافذة و اجعلها مساويةً لـ True

3- اضبط الخاصيَّة Language على Arabic و لا تقم بتغيير تصميم النافذة (لأنَّك صممتها بالعربيّة أصلاً :) ) .
4- اضبط الخاصيَّة Language على English و عدِّل على النافذة الموجودة بحيث تصبح ملائمة للغة الإنجليزيّة .

5- إلى هنا نكون قد أنهينا كامل العمل تقريباً بدون أن نكتب أي تعليمة برمجيَّة ! (أين أيَّامك يا .ini :) )
6 - لتغيير اللغة :
أ - لا بدَّ من استيراد فضائي الأسماء
System.Threading
c# : System.Globalization
using System.Threading; using System.Globalization;
VB :
Imports System.Threading Imports System.Globalization
ب - لتغيير اللغة نكتب الكود التالي :
c# :
Thread.CurrentThread.CurrentUICulture = new CultureInfo("EN-us");VB :
Thread.CurrentThread.CurrentUICulture = new CultureInfo("EN-us")ملحوظة : السطر السابق كفيل بتغيير اللغة إلى الإنجليزيّة حيث أن الوسيط بشكل عام هو أوَّل حرفين من اللغة ثمَّ - ثمَّ أوَّل حرفين من الدولة , مثلاً
نستطيع أن نكتب
AR-sy (العربيّة - سوريا)
FR-fr (الفرنسيّة - فرنسا)
و التغييرات لن تظهر على النافذة التي تم استدعاء السطر البرمجي بها , إلَّا إن قمنا بإعادة رسم النافذة .
6 - إلى هنا نكون قد أنتهينا من إنشاء تطبيق متعدد اللغة , دعني أقول مجازاً تطبيق ذو واجهة متعددة اللغة :) , لماذا ؟
ماذا لو كان لدينا في التطبيق أحد الإجرائيَّات التي تقوم بالتالي :
c# :
MessageBox.Show("مختار سيد صالح");VB :
MessageBox.Show("مختار سيد صالح")كيف ستتغير لغة مربع الحوار عند تغيير لغة التطبيق ؟ لحل هكذا مشكلة نلجأ لعمل متغيِّر عام (على مستوى التطبيق) ثم نعدِّل قليلاً على الشيفرة السابقة لتصبح كما يلي
c# :
if(myLang=="A")
{
MessageBox.Show("مختار سيد صالح");
}
else
{
MessageBox.Show("Mukhtar Sayed Saleh");
}VB :
if myLang="A" then
MessageBox.Show("مختار سيد صالح")
else
MessageBox.Show("Mukhtar Sayed Saleh")
end ifشاهدوا المثال في المرفقات :)
ختاماً , أعتذر عن التقصير بحق هذا الركن الذي تعلَّمت منه الكثير الكثير و أسأل الله تعالى أن يجعل هذا الدرس و سائر ما أكتب خالصاً لوجهه تعالى و أسألكم الدعاء في ظهر الغيب , و السلام عليكم .