Makale Özeti

Merhaba arkadaşlar bu makalemizde ASP.NET içerisinde Localization (Yerelleştirme) işleminin nasıl yapıldığına göz atacağız. Localization Farklı kültür özelliklerine göre tasarlanmış web siteleri oluşturmamıza sağlayan Framework’un bir özelliğidir.

Makale

Visual Studio da Localization

Visual Studio 2005 herhangi bir Kaynak dosyası (Resource file *.resx) içinde herhangi bir kaynağı eklememize ve düzenlememize izin veren yeni bir kaynak editörü sundu. Web formumuz dizayn zamanındayken(Design time) basit adımlarla yeni kaynak dosyaları oluşturmamızı sağlıyor. Bu kaynak dosyaları, içerisinde ekleyeceğimiz özelliklerin kullanıcı kültür özelliklerine göre sayfaya uygulanmasını sağlar. Kaynak editörü bir grid gibidir. Name, value ve comment olmak üzere 3 sütundan oluşur. Name belirleyeceğimiz kaynağın adını, value kaynakta görüntüleyeceğimiz değeri ve comment’de açıklama satırıdır.

Visual studio 2005 WebForm’larını Localize etmek için 2 yol sunar. Birincisi Lokal kaynaklar (Local Resources), ikinciside Global kaynaklar(Global Resources). Lokal kaynak dosyalarında, kaynak dosyalar asp.net sayfaları içerisine eklenir. Global kaynaklarda ise ortak ayarların tutulduğu tek bir kaynak dosya oluşturulur.

Kısaca özetlersek;

  • Web Uygulamaları için kaynak dosyaları oluşturmamızı,
  • Kaynaklara erişmek için Çalışma zamanında yeni tanımlamalar yapmamızı,
  • Kullanıcı istekleri için geçerli kültür özelliklerini otomatik olarak uygulamamızı sağlar. (Tarih-saat, para birimi, web formlardaki bilgiler)

Özellikle çok uluslu firmalar için düşünürsek, örneğin Microsoft için her dil için ayrı ayrı uygulama geliştirmek hem zaman kaybı hemde gereksiz iş yüküdür. Bu durumda local kaynak dosyalarını kullanarak uygulamanın çalışacağı kültür özelliklerine gore tarih-saat, para birimi, kullanıcı formlarındaki bilgilerin vb. gibi bilgilerin otomatik olarak ayarlanmasını sağlayabiliriz. Küçük çaplı projeler için düşünürsek projeyi compile etmeden kaynak dosyaları değiştirerek site üzerinde güncelleme işlemleri yapılabilir.

Örnek Uygulama

Localization özelliklerini anlatan bir örnek yapalım. Örneğimizde Tarih-saat, para birimi ve kullanıcı ara yüzlerini dil seçeneklerine göre otomatik olarak uygulandığını göreceğiz.

İlk olarak visual studio 2005 içinde Localize Adında bir proje açalım.

Açılan web formumuza bir adet label ekleyelim. Text özelliğini silelim ve adını lblHosgeldiniz olarak belirleyelim.

Daha sonra Solution Explorerdan,  Add Asp.NET Folder diyerek projemize Local Kaynak klasörü ekleyelim. Bu klasör üzerinde sağ tıklayarak projemize bir adet kaynak dosyası ekleyelim ve adını “default.aspx.resx” olarak belirleyelim.

Açılan sayfa da kaynağımızın adı(name) ve içerisinde tutacağımız değer saklanacaktır(Value).

Kültür özelliklerimiz Türkçe olduğunu için bu kaynak dosyası içerisine Türkçe bilgiler gireceğiz.

Evet, şimdi İngilizce için kaynak dosyamızı oluşturalım adını “default.aspx.en.resx”  yapalım ve özelliklerimizi belirleyelim.

Kültür özelliklerimizi belirledik.  Şimdi web formumuza gidip sayfamızın Kültür ayarlarını yapalım.

Page Language ="VB" AutoEventWireup ="false" CodeFile ="Default.aspx.vb" Inherits ="_Default"   Culture="Auto" UICulture="Auto"

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

< html xmlns ="http://www.w3.org/1999/xhtml" >

< head runat ="server">

    < title > Untitled Page</ title >

</ head >

< body >

    < form id ="form1" runat ="server">

    < div >

< asp : Label ID ="lblHosgeldiniz" runat ="server" Font-Names ="Verdana" Font-Size ="X-Large" meta:resourceKey="lblHosgeldiniz"></ asp : Label >< br />

        < br />

          </ div >

    </ form >

</ body >

</ html >

İlk olarak kültür özelliklerini Auto özelliği verdik. Label’ın meta:resourcekey özelliğini belirttik. Şimdi sayfamızı çalıştırabiliriz.

Evet sayamızı çalıştırdık ve “Selam Türk” Diye Bizi Karşıladı. Şimdi sayfamızın dil ayarını ingilizce yapalım.

Sayfamızı Refresh edelim.

Karşılama mesajı bu kez “Selam İngiliz” oldu.  Projemizi biraz daha genişletelim. Sayfamıza bir adet DropdownList, bir adet calendar ve bir adet label ekleyelim.

Dropdown içerisinde Dil seçenekleri olacak ve seçtiğimiz dile göre de Tarih-Saat, Para Birimi, ve Karşılama Mesajı değişecek.  Dropdown dilleri ekleyelim.

  

< asp : DropDownList ID ="DropDownList1" runat ="server" AutoPostBack ="True" OnSelectedIndexChanged ="DropDownList1_SelectedIndexChanged" meta : resourcekey ="DropDownList1Resource1">

            < asp : ListItem Selected ="True" Value ="Auto" Text ="Lütfen Dil Seçiniz"></ asp : ListItem >

            < asp : ListItem Value ="Auto"   Text ="Türkçe"></ asp : ListItem >

            < asp : ListItem Value ="en-US"   Text ="İngilizce"></ asp : ListItem >

            < asp : ListItem Value ="fr-FR" Text ="Fransızca"></ asp : ListItem >

            < asp : ListItem Value ="ar-EG" Text ="Arapça"></ asp : ListItem >

        </ asp : DropDownList >

< asp : DropDownList ID ="DropDownList1" runat ="server" AutoPostBack ="True" OnSelectedIndexChanged ="DropDownList1_SelectedIndexChanged" meta : resourcekey ="DropDownList1Resource1">

            < asp : ListItem Selected ="True" Value ="Auto" Text ="Lütfen Dil Seçiniz"></ asp : ListItem >

            < asp : ListItem Value ="Auto"   Text ="Türkçe"></ asp : ListItem >

            < asp : ListItem Value ="en-US"   Text ="İngilizce"></ asp : ListItem >

            < asp : ListItem Value ="fr-FR" Text ="Fransızca"></ asp : ListItem >

            < asp : ListItem Value ="ar-EG" Text ="Arapça"></ asp : ListItem >

        </ asp : DropDownList >

Eklediğimiz label içerisinde de para değerini tutacak kodumuzu yazalım. Burada da kültür özelliklerine göre para formatı ve para birimi gelecek.

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim parabirimi As Double = 575757.57

        Label1.Text = String.Format("{0:c}", parabirimi)

    End Sub

Dropdownd da listelediğimiz dillerden seçtiğimiz dile göre istediğimiz ayarları vermesini isteyelim. Bunun için InitializeCulture() metodunu ezelim.

    Protected Overrides Sub InitializeCulture()

        Dim dil As String = Request("DropDownList1")’ dropdowndan gelen değer

        If String.IsNullOrEmpty(dil) Then dil = "Auto" ’ eğer dil boşsa otamatik olarak belirle

        UICulture = dil

        Culture = dil

    End Sub

Şimdi Dropdownumuzda Dil Seçimi yapıldığında çalışacak kodu yazalım. Burada Seçilen Dile Göre InitializeCulture() metodu çalışacak ve seçilen dile göre Kültür özelliklerini uygulacak. Projemizi çalıştıralım.

Şimdi dillerden ingilizce Seçelim.

Listeden bu kezde Arapçayı seçelim.

Evet, Arapça seçeneğini seçtik ve sayfamızın Arapça kültür ayarlarına geldiğini gördük.

Bu şekilde tüm kullanıcı ekranlarımızı kaynak dosyalarımız içerisinden belirleyebilir çok kolay bir şekilde projemize birçok dil seçeneği ile çalışma imkânı sağlayabiliriz.

Bu makalenin de sonuna geldik, başka bir makalede görüşmek üzere başarı ve iyi günler dilerim.

Sem GÖKSU
MCP | MCAD.NET | MCTS | 2007 ASP.NET MVP

Örnek Kodlar için mail adresimi kullanabilirsiniz

askisem@hotmail.com

Kaynaklar
http://msdn.com

http://www.codeproject.com

http://aspalliance.com