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
Örnek Kodlar için mail adresimi kullanabilirsiniz
askisem@hotmail.com
Kaynaklar
http://msdn.com
http://www.codeproject.com
http://aspalliance.com
İngilizce Çeviriler:
Elçin Kilercioğlu