Makale Özeti

Bu makalemde sizelere Windows 8 uygulamalarında localization'un nasıl yapılacağından ve farklı birkaç yöntemden bahsedeceğim.

Makale

Merhaba,

Bu makalemde sizelere Windows 8 uygulamalarında localization'un nasıl yapılacağından ve farklı birkaç yöntemden bahsedeceğim.

Öncelikle tutmak istediğimiz metinlerimizi aynı desktop uygulamalarında olduğu gibi resource dosyalarında tutmamız gerekiyor. Bunun için ise resw dosyalarını kullanacağız.

Bu dosyaları uygulamamızda tutmak için Common klasörünün altı uygun olacaktır. Yapacağımız örnekte ingilizce ve türkçe olarak iki farklı dilde metinleri tutacağız. Bunun için bu dil kodlarına ait klasörleri Common klasörü altında oluşturmamız gerekiyor.

Değişkenleri tutacağımız resource dosyalarının adına ise Strings ismini verdiğimizi düşünürsek Solution Explorer'da yapımız şu şekilde olacaktır.

 

Şimdi ise resource dosyalarımıza string'lerimizi tanımlayalım.

İngilizce dosyamıza tanımlamayı aşağıdaki gibi yapıyoruz.

 

    Türkçe dosyamıza ise aşağıdaki gibi yapıyoruz.

 

 

Şimdi ise bu dosyalara kodumuz içerisinden ulaşmak gerekiyor. Bunun için Windows.ApplicationModel.Resources namespace'i altında bulunan ResourceLoader class'ını kullanacağız. Bu class'ta bulunan GetString metodu ile ise tanımlamış olduğumuz string'lere ulaşacağız. Bu işlemi nasıl yapcağımızı aşağıda bir örnek ile inceleyelim.

 

Öncelikle sayfamıza bir tane textblock ekliyoruz. ve kod tarafında aşağıdaki kodu yazıyoruz.

 

 protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            ResourceLoader insResourceLoader = new ResourceLoader("Strings");
            txtHelloWorld.Text = insResourceLoader.GetString("HelloWorld");
        }

Burada ilk satırda bulunan Strings resource dosyasının adını ikinci satırdaki HelloWorld ise resource dosyasındaki değişkenin adını temsil etmektedir.

Uygulamayı Türkçe localization'a sahip bir bilgisayarda çalıştırdığınızda Merhaba Dünya , ingilizce localization'a sahip bir bilgisayarda çalıştırdığınızda ise Hello World yazdığını göreceksiniz. Bu dillerin dışında bir bilgisayarda çalıştırdığınızda ise appxmanifest dosyasındaki Default Language değerine ait metinler gözükecektir.

 

Şimdi ise dil ayarlarını uygulama içerisinden nasıl değiştirebileceğimizi inceleyelim.

Bunun için Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride değerini değiştirmemiz gerekiyor. Bu değişikliği yaptığımız durumda burada belirlediğimiz dil ayarları uygulamamızda geçerli olacaktır. Ancak metinlerin yüklenebilmesi için bu değişiklikten sonra farkli bir sayfaya navigate edilmesi gerekmektedir.

 

Tüm bunlardan farklı olarak bazı durumlarda kullanıcının diline göre farklı style dosyalarından stilleri almanız gerekebilir. Bunun için ise style dosyalarını dinamik olarak yüklmek için aşağıdaki kodu kullanabilirsiniz.

string style="dilegorestyledosyasiadi";
Uri u = new Uri("ms-resource:/Files/Common/" + style + ".xaml");
ResourceDictionary skin = new ResourceDictionary();
skin.Source = u;
Application.Current.Resources.MergedDictionaries.Clear();
Application.Current.Resources.MergedDictionaries.Add(skin);