چند زبانه کردن در سی شارپ

یکی از امکانات فوق العاده یک نرم افزار این است که مورد استفاده برای همه زبان ها باشد در این مقاله قصد داریم آموزشی درباره چند زبانه کردن یک نرم افزار بدهیم

 برای شروع به کار یک پروژه از نوع WindowsForm ایجاد کرده و مانندزیر شروع به طراحی آن کنید.

دراین جا چند نکته است که حائز اهمیت است:

همان طور که مشاهده میکنید ما ابتدا فرم  را به زبان English طراحی کردیم

 فرم ها  خاصیتی  به نام Language دارند که تنها اگر روی Default باشد امکان اضافه کردن کنترل به آن داریم

در کنترل combobox دو خاصیت را باید تنظیم کنیم

1-Item: مقادیر موجود در combobox را نشان میدهد که آن  را با فارسی و Engilsh پر میکنیم

2:-خاصیت Drop Down Style  را برابر با Drop Down list قرار میدهیم

حال بعد از آن که فرم خود را مانند بالا طراحی کردیم آن را ذخیره میکنیم و برای آن که بتوان از زبان فارسی نیز  استفاده کنیم تنها کافی است در قسمت Properties رفته و خاصیت Language آن را در حالت Persian قرار دهیم (فقط یادآوری کنم که در این خاصیت همان طور که مشاهده میکنید دو تاPersian وجود دارد که  بهتر است از Persian دومی برای برنامه خود استفاده کنید.)

 

حال فرم فارسی را به صورت زیر طراحی کنید فقط همان طور که در بالا اشاره شد فقط میتوانید خاصیت Text (متن) کنترل ها را تغیر بدهید.

برای آن که اطلاعات ما در برنامه ذخیره شود روی solution راست کلیک کنید و در قسمت Properties در بخش Setting ها رفته ویک setting مانند زیر تعریف کنید

همان طور که مشاهده میکنید قسمت Value=fa باعث میشود که زبان پیش فرض برنامه "فارسی " باشد.

حال روی دکمه  "تغییرات " دوبار کلیک کرده تا رویداد click آن فراخوانی شود و در رویداد click ، کد های زیر را فراخوانی میکنیم.

  private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex == 0)
            {
                CultureInfo cul;
                cul=new CultureInfo("en-US");
                Properties.Settings.Default.lan = "en";
                Properties.Settings.Default.Save();

            }
            else if(comboBox1.SelectedIndex==1)
            {
                CultureInfo cul;
                cul=new CultureInfo("fa-IR");
                Properties.Settings.Default.lan = "fa";
                Properties.Settings.Default.Save();
            }
            Application.Restart();
        }

این نکته را هم خاطر نشان کنم که حتما باید از فضای نام using  System.Globalization; در برنامه استفاده کنید

همان طور که مشاهده میکنید برای چند زبانه کردن برنامه کافی است از حلقه if استفاه کنید ودر این جا چون من تنها از دو  زبان  میخواستم در برنامه استفاده کنم از حلقه  else if استفاه کردم

کد ها کاملا واضح هست ابتدا یک نمونه از کلاس CultueInfo برای استفاده از زبان مورد نظر خود ایجاد  میکنیم

و سپس آن را در Settingای که در بالا ساختیم ذخیره میکنیم

و در انتها یکبار برنامه را Restart میکنیم

حال در قسمت Program  برنامه رفته و برای آن که زبانی که انتخاب کردیم ،زبان پیش فرض برنامه شود(یعنی دفعه بعد برنامه با آن زبان باز شود) کد های زیر را به برنامه اضافه میکنیم

 CultureInfo cu;
            string lan = Properties.Settings.Default.lan;
            if (lan == "en")
            {
                
                cu=new CultureInfo("en-US");
            }
            else
            {
                cu=new CultureInfo("fa-IR");
            }

            Thread.CurrentThread.CurrentCulture = cu;
            Thread.CurrentThread.CurrentUICulture = cu;

و حال از برنامه اجرا بگیرید

همان طور که مشاهده میکنید زبان پیش فرض فارسی است و باتغیر زبان برنامه به شکل زیر میشود

 

فایل های ضمیمه