Başlangıç > Vb > vb resource dosyası okuma

vb resource dosyası okuma


Merhaba resource
Yazdığımız programlarda birden fazla dil desteği sunacağımız zaman çeşitli yöntemler ile bunu yaparız. Bazen database üzerinde bir tablo içinde bazen de bir Resource dosyasında. Özel bazı durumlarda database üzerinde çoklu dil desteğine ait bilgileri tutsak bile genel olarak bu işlem Resource dosyları ile yapılmaktadır. Şimdi sizlerle birlikte basit bir console uygulaması hazırlayalım ve bu uygulama ile “Hello World” mesajını farklı diller ile yazdıralım. Bunun için projemize yeni bir item olarak Resource file ekliyoruz. Eklediğimiz dosy bizim default culture bilgisine ait olmaktadır. Diğer dillere ait bilgileri tutmak için ise tek tek resource dosyası ekleriz ve bunların isimlerinin sonuna “.” ile o dilin culture bilgisini yazarız. Bizim örneğimizde üç adet dile ait bilgileri kullanacağız. Türkçe, İngilizce ve Fransızca. Siz bunları istediğiniz gibi değiştirip çoğaltabilirsiniz. İlk eklediğimiz Resource file ismini Türkçe dili için kullanacağımızdan adını “Resource.resx” olarak belirtiyoruz, daha sonra ise İngilizce için “Resource.en-US.resx” ve Fransızca içinse “Resource.fr-FR.resx” dosyalarını oluşturuyoruz. Dosyalarımızu oluşturduğumuzda içindeki veriler aşağıdaki gibi olacaktır.

[Resource.resx]

  <data name="HelloWorld" xml:space="preserve">
    <value>Merhaba Dünya</value>
  </data>

[Resource.en-US.resx]

  <data name="HelloWorld" xml:space="preserve">
    <value>Hello World</value>
  </data>

[Resource.fr-FR.resx]

  <data name="HelloWorld" xml:space="preserve">
    <value>Bonjour le monde</value>
  </data>

Şimdi bu resource dosyalarındaki bilgileri okumak için bir class hazırlayalım. Alttaki kod içindeki “ResourceManager” ilk parametresindeki değer Resource dosyasının yerini gösterir. Bizim projemizde Resource dosyası proje içindeki Resources klasörü altında olduğu için ilk parametre değeri namespace.klasöradi.resource adi şeklindedir.

[Read.vb]

Imports System.Globalization
Imports System.Reflection
Imports System.Resources

Public NotInheritable Class Read

    Public Shared Function FromResource(key As String, culture As CultureInfo)
        Dim rm As ResourceManager = New ResourceManager("ResourcesVb.Resource", Assembly.GetExecutingAssembly())
        Return rm.GetString(key, culture)
    End Function

End Class

Okuma yapacağımız class hazır olduğuna göre, program içerisinde her bir dil için culture bilgisine ihtiyacımız olduğundan bu bilgileri tutabileceğimiz bir class hazırlayalım.

[Culture.vb]

Public NotInheritable Class Culture
    Public Shared Function trTR() As String
        Return "tr-TR"
    End Function

    Public Shared Function enUS() As String
        Return "en-US"
    End Function

    Public Shared Function frFR() As String
        Return "fr-FR"
    End Function
End Class

Şimdide çalışacak olan programımızı yazalım.

[Program.vb]

Imports System.Globalization

Module Program

    Sub Main()

        Dim cultureTR As CultureInfo = New CultureInfo(Culture.trTR())
        Dim cultureUS As CultureInfo = New CultureInfo(Culture.enUS())
        Dim cultureFR As CultureInfo = New CultureInfo(Culture.frFR())

        Console.WriteLine("Read resources from Resource.resx with Culture")
        Console.WriteLine("HelloWorld with " + cultureTR.Name + " : " + Read.FromResource("HelloWorld", cultureTR))
        Console.WriteLine("HelloWorld with " + cultureUS.Name + " : " + Read.FromResource("HelloWorld", cultureUS))
        Console.WriteLine("HelloWorld with " + cultureFR.Name + " : " + Read.FromResource("HelloWorld", cultureFR))

        Console.ReadKey()

    End Sub

End Module

Artık herşey hazır ve programı çalıştırdığımızda ise çıktı olarak aşağıdaki gibi bir sonuç görürüz.

Read resources from Resource.resx with Culture
HelloWorld with tr-TR : Merhaba Dünya
HelloWorld with en-US : Hello World
HelloWorld with fr-FR : Bonjour le monde

Projenin kaynak kodlarına üzerinden ulaşabilirsiniz.
Kolay gelsin.

Reklamlar
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: