Anasayfa

C ve Sistem Programcıları Derneği

  • CSD Hakkında
    • Yönetim Kurulu
    • Referanslar
    • Üyelik
    • Adres
    • Kroki
    • İletişim
  • Kurslar
    • Kurs Başvurusu
    • Eğitmenler
  • Seminerler
    • Seminer İste
    • Seminer Ver
  • Kaynaklar
    • Yararlı Linkler
    • Kaynak Kod Arşivi
    • Makaleler
    • Çalışma Soruları
    • Yararlı Kitaplar
    • Dosya Arşivi
    • Döküman Arşivi
  • Duyurular
  • Haberler
  • İş İlanları
    • İş İlanı Gönder
  • SSS
  • Kurs Başvurusu

menü

  • CSD Hakkında
    • Yönetim Kurulu
    • Referanslar
    • Üyelik
    • Adres
    • Kroki
    • İletişim
  • Kurslar
    • Kurs Başvurusu
    • Eğitmenler
  • Seminerler
    • Seminer İste
    • Seminer Ver
  • Kaynaklar
    • Yararlı Linkler
    • Kaynak Kod Arşivi
    • Makaleler
    • Çalışma Soruları
    • Yararlı Kitaplar
    • Dosya Arşivi
    • Döküman Arşivi
  • Duyurular
  • Haberler
  • İş İlanları
    • İş İlanı Gönder
  • SSS
  • Kurs Başvurusu

e-posta ile bilgilendirme.

Derneğimizdeki etkinliklerden haberdar olun!

Haber mektubu üyeliğiniz

Kimler çevrimiçi

Şu an 0 kullanıcı ve 1 ziyaretçi çevrimiçi.
""
dreamhost
Anasayfa

ASP.NET Kaynak Kullanımıyla Yerelleştirme ve Çoklu Dil Desteği (Lokalizasyon ve Globalizasyon)

13.06.2011 - 23:41 tarihinde aykut gönderdi
Yazan: 
Aykut TAŞDELEN

 

Farklı dilleri destekleyen sitelerin tasarımı için ASP.NET kaynak kullanımı yoluyla bir çözüm sağlamaktadır. Kaynaklar Local (Yerel) ve Global (Küresel) diye 2 başlıkta ele alınmıştır.  Aralarındaki fark; lokal kaynakların sadece belirli bir sayfa için tanımlanması globallerin ise sitedeki tüm sayfalar için ortak kullanılabilmesidir. Lokal kaynak dosyaları isimlendirilirken bu nedenden ötürü sayfa ismi.resx biçiminde isimlendirilir. Örneğin "Giris.aspx.en-US.resx" gibi. Kaynak dosyaları gerçekte xml dosyasıdır. Aykut TAŞDELEN

Not : Kaynak kullanımıyla ilgili detaylar "İleri ve Kurumsal Düzey .NET Uygulamaları" isimli kitabımda geniş şekilde ele alınmaktadır.

Yeni ASP.NET sınıfı 4 Temmuz haftasında derneğimizde açılacaktır !  

Bir sayfa için kaynak dosyası üretmenin yolu; “Tools menüsünden > Generate Local Resource” seçeneğini kullanmaktır. İçinde lblUser,lblPwd isimli Label'ların ve diğer kontrollerin olduğu Giris.aspx sayfası için Visual Studio şöyle bir kaynak dosyası (Giris.aspx.resx) üretecektir :

 

Kaynak içerisinde veriler anahtar=değer çifti şeklinde tutulur. VS IDE'si kontrolün Text, Tooltip gibi özelliklerine  ilişkin anahtar değerleri lblUserResource1.Text şeklinde isimlendirmiş değerler ise tümüyle geliştiricinin inisiyatifinde tanımlanmıştır.

Bu şekilde bir Türkçe kaynak dosyası tanımlandıktan sonra bundan copy-paste yoluyla İngilizce (Giris.aspx.en-US.resx) hatta Fransızca (Giris.aspx.en-US.resx) kaynak dosyaları türetilebilir. (İsimlendirmeye dikkat  ediniz)Şüphesiz bu dosyalarda değerler o dile göre verilerek anlamlı bir lokalizasyon yapılmalıdır.

Lokal kaynak dosyaları App_LocalResources klasörüne globaller ise App_GlobalResources klasörüne yerleştirilir.

 

VS ‘nun sayfa için ürettiği kod incelenirse Page direktifinde

meta:resourcekey="PageResource1" ve Culture="auto" UICulture="auto"

değerlerini yazdığı görülecektir. Kontroller ise kaynaktan verileri şu şekilde almaktadır :

<asp:Label ID="lblUser" meta:resourcekey="lblUserResource1"

Projeyi test için normal derleme işlemi yapılmalı ve sayfa tarayıcıda açılmalıdır. Tarayıcınızın dil kısmındaki ayarın Türkçe olduğu varsayılırsa sayfadaki yazıları Türkçe olarak görüyor olmalısınız. Ancak tarayıcı ayarlarında (bu örnek için en-US İngilizce ve fr-FR fransızca dillerini de eklerseniz) ve hangi dil sıralamada üste alınıp sayfa refresh edilerek görüntülenirse yazıların o dilde çıkması gerekir.

Öte yandan bu belirlemeler programatik olarak da yapılabilir. Herşeyden önce page direktifinde (Culture="auto" UICulture="auto") belirlemeleri silinip sayfa kodunda InitializeCulture() sanal fonksiyonu edilmelidir. Bu fonksiyon sayfa için kültür bilgisinin tanımlanmasına yarar.

using ci = System.Globalization.CultureInfo;

using thr = System.Threading.Thread;

public partial class Giris : System.Web.UI.Page

{

protected override void InitializeCulture()

{

if (Session["dil"] != null)

//if (! string.IsNullOrEmpty(Request.QueryString["lang"]))

{

//string kod = Request.QueryString["lang"];

string kod = Session["dil"].ToString();

ci inf = new ci(kod);

this.Culture = kod;

this.UICulture = kod;

thr.CurrentThread.CurrentCulture = inf;

thr.CurrentThread.CurrentUICulture = inf;

}

}

}

Burada sayfa Culture ve UICulture özelliklerine atama yapılmıştır. Şüphesiz bu değer Session ya da QueryString gibi bir kaynaktan elde edilebilir. Bu durumda tarayıcıda ayar ne olursa olsun (ilgili diller yine eklenmiş olmalıdır) istenilen dilde yazılar görüntülenebilir.


Aykut TAŞDELEN

C ve Sistem Programcıları Derneği Eğitmeni

aykuttasdelen@csystem.org

  • Yazıcı uyumluYazıcı uyumlu
  • Arkadaşa gönderArkadaşa gönder
  • PDFPDF

Adres: 2.Taşocağı Cd. Oğuz Sk. Barbaros Apt. No: 11/4 PK: 34387  Mecidiyeköy / İSTANBUL Tel: (212) 274 63 60  (212) 274 99 89  (212) 275 88 97  (212) 288 35 20 Fax: (212) 275 88 97 E-Posta: csystem@csystem.org

İçerik yayınları
Fervens Drupal theme by Leow Kah Thong. Designed by Design Disease and brought to you by Smashing Magazine.