Ayın Konusu: Programımıza çoklu dil desteği nasıl yapabiliriz!

Yaptığımız programı farklı ülkelerdeki insanlarında kullanmasını isteyebiliriz. Bu özellik birçok programlarda mevcut, biz bunun istersek programımızda geniş bir matris dizisi tanımlayarak yapabileceğimiz gibi Visual Studio IDE’sinin bize sunduğu ‘Resource File’ ile de yapabiliriz. Bunun için önce projemize bir ‘Resource File’ ekleyelim. Bunun için;

– Project->Add New Item->General->Resource File->DilAyari.tr-TR.resx  ve DilAyari.en-US.resx isimlerinde 2tane resource file ekleyelim.

Burada dikkat edilmesi gereken nokta tr-TR dememiz. Bu kod Ingilizce için en-US, Italyanca için it-IT olarak değiştirilebilir. Tam liste için MSDN’e başvurabilirsiniz.  .resX uzantılı dosyalarını açtığımız zaman karşımıza Excel tablosu gibi bir tablo çıkacaktır. Burada 3 tane sütun var; -Isim, -Değer, -Yorum. Projemizde bir tane buton olsun ve bu butonun ismide ‘Tamam’ olsun, eğer kullanıcı programı ingilizce kullanmak istiyorsa bunu ‘OK’ olarak görsün. Bunun için şimdi eklediğimiz DilAyari.tr-TR.resx dosyasını açalım ve şu şekilde dolduralım

Name = ‘tmm_btn’, Value = ‘Tamam’

DilAyari.en-US.resx için;

Name = ‘tmm_btn’, Value = ‘OK’

2 dosyada da butonumuza isim verdik. Şimdi bunları kullanmaya geldi. Kullanıcı için 2 tane dil için buton ekleyelim.

private void turkce_btn_Click(object sender, EventArgs e)
{
   Thread.CurrentThread.CurrentUICulture = new CultureInfo("tr-TR");
   Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
 
   button1.Text = resM.GetString("tmm_btn");
}

Bu kodu incelersek, önce programımızın çalışacağı dil için Thread sınıfının üyesi olan CurrentThread properties’inde bulunan CurrentUICultere ve CurrentCulture properties’i Türkçe olarak ayarlıyoruz. Ardından da butonumuzun ismini düzeltiyoruz. Burada resM’i aşağıdaki gibi tanımladım;

ResourceManager resM = new ResourceManager("WindowsProject1.DilAyari",
                                            Assembly.GetExecutingAssembly()
                                          );

Eğer programınız da birden fazla kontrol varsa bunları bir fonksiyon altında toplarsanız sizin için daha rahat olacaktır. O zaman tek yapmanız gereken ‘Türkçe’ butonuna basıldığı zaman Cultere ayarlarını yapmak ve fonksiyonu çağırmak olacaktır. Bir avantajıda şu, mesela siz ileride bir tane daha buton eklediniz ya da başka birşey bunun dil ayarlarını yapmak için hem türkçe hem ingilizce ya da varsa diğer dillerin butonunun altına tek tek yazmak yerine sadece fonksiyona yazarsınız ve işlem tamamlanmış olur.

Bir ayın konusunun daha sonuna geldik, umarım sizler için faydalı olmuştur…

Herkese kolay gelsin, iyi çalışmalar…

2 Responses to Ayın Konusu: Programımıza çoklu dil desteği nasıl yapabiliriz!

    Bir cevap yazın

    Your email address will not be published. Please enter your name, email and a comment.