![]() | |
System.Globalization Namespace'i ile Bölge ve Dil Ayarları | 20.08.2009 16:56:00 |
| Kategori : C# & VB.Net Özet : Geliştirdiğimiz uygulamalarda bilhassa son kullanıcının sürekli gördüğü User Interface arabiriminde gerek bilginin toplanması gerek ise bilginin gösterilmesi kullanıcının kullandığı dil bilgilerine uygun olmalıdır. Bu durum bilhassa multilanguage uygulamalarda çok önemli bir konuma gelmektedir. Örneğin İngiltere'deki bir kullanıcı ile Türkiye'de bulunan bir kullanıcı tarih biçimlerini ve ondalık ayraçlarını farklı şekilde görmelidir. Bu makalemde sizlere bu özelliği uygulamalarımıza nasıl kazandırabileceğimizi ve kullanıcının ayarlamış olduğu dil ayarlarını nasıl okuyabileceğimizi anlatacağım. | |
| Merhabalar, Geliştirdiğimiz uygulamalarda bilhassa son kullanıcının sürekli gördüğü User Interface arabiriminde gerek bilginin toplanması gerek ise bilginin gösterilmesi kullanıcının kullandığı dil bilgilerine uygun olmalıdır. Bu durum bilhassa multilanguage uygulamalarda çok önemli bir konuma gelmektedir. Örneğin İngiltere'deki bir kullanıcı ile Türkiye'de bulunan bir kullanıcı tarih biçimlerini ve ondalık ayraçlarını farklı şekilde görmelidir. Bu makalemde sizlere bu özelliği uygulamalarımıza nasıl kazandırabileceğimizi ve kullanıcının ayarlamış olduğu dil ayarlarını nasıl okuyabileceğimizi anlatacağım.
System.Globalization namespace'indeki class'lar bilgisayardaki dil, bölge, tarih
& zaman, para birimi gibi bilgilerin ve bu
bilgilerin formatlarının uygulamalarımızda yönetilmesini sağlayan class'lardır.
System.Globalization namespace'inin tüm öğelerinin detaylı açıklamalarına
http://msdn.microsoft.com/en-us/library/system.globalization.aspx adresinden
erişebilirsiniz. Bu makalemde System.Globalization namespace'inin önemli birkaç
öğesinden bahsedeceğim. İlk olarak RegionInfo class'ından başlayalım. RegionInfo
class'ı ülke ve bölge bilgilerini içerir ve bize kullanıcının bilgisayarındaki
bölge ve dil seçeneklerinden bağımsız verileri sunar. ISO 3166'da bölge ve
ülkeler için kabul edilmiş iki veya üç harfli kodları parametre alır. Örneğin
Türkiye için geçerli bilgilere erişmek için RegionInfo class'ının instance'ını
aşağıdaki gibi alırız:
System.Globalization.RegionInfo insRegionInfo =
new System.Globalization.RegionInfo("TR");
Instance'ını aldığımız RegionInfo class'ının belli başlı property'leri aşağıda
örnek kodda görülebilir:
static void
Main(string[] args)
Program p =
new Program();
void GetRegionInfo()
}
RegionInfo class'ından sonra bahsetmek istediğim iki class bulunuyor. Bunlar yine System.Globalization namespace'inin öğelerinden olan CultureInfo class'ının iki property'si CurrentCulture ve CurrentUICulture. CultureInfo class'ı belirli bir kültürün tarih & saat formatı, haftanın ilk günü, ondalık simgesi, ölçü sistemi gibi belli başlı özelliklerini taşır. Hatta String class'ı dolaylı olarak CultureInfo class'ını kullanarak varsayılan kültür bilgisini alır.
Öncelikle bu class'ın iki öğesi CurrentCulture
ve CurrentUICulture arasındaki farktan bahsetmek istiyorum.
Çoğu durumlarda CurrentCulture ve CurrentUICulture aynıdır. Bu property'ler
kullanıcı bilgisayarına Multilangual Language Interface (MUI) yüklemişlerse ve
bir yandan MUI'yi kullanıyorlarsa, ancak Bölge ve Dil seçeneklerinde MUI'nin
ayarlarını değiştirmişlerse farklı olur. Culture ayarlarını değiştirmek
istiyorsak kullanıcı arayüzü ayarlarını ve tarih/zaman ve sayı formatlarını
farklılaştırmak durumunda kalırız. Culture ayarları Thread nesnesi ile
ilişkilendirilirler ve CurrentCulture ve CurrentUICulture property'lerini tek
bir thread'de aşağıdaki gibi set edebiliriz:
System.Globalization.CultureInfo
insCultureInfo = new
CultureInfo("tr-TR");
System.Threading.Thread.CurrentThread.CurrentCulture
= insCultureInfo;
System.Threading.Thread.CurrentThread.CurrentUICulture
= insCultureInfo;
Windows'ta kontrol panelde Bölge ve Dil seçenekleri ekranında yapılan
değişiklikler CurrentCulture property'sini değiştirir.
Şimdi CurrentCulture ve CurrentUICulture ile ilgili anlattıklarımın ufak bir
ispatını yapalım. Console uygulaması oluşturalım ve haftanın ilk gününü
CurrentCulture ve CurrentUICulture property'lerinden okuyalım. Uygulama
İngilizce Windows 7 işletim sisteminde çalışacak. İngilizce sistemlerde haftanın
ilk günü pazardır, ancak benim Bölge ve Dil ayarları ekranında haftanın ilk günü
pazartesi olarak ayarlanmış durumda:
Aşağıdaki kodu yazalım ve çalıştıralım:
void HaftaninIlkGununuGetir()
System.Globalization.CultureInfo
insCultureInfo = System.Globalization.CultureInfo.CurrentCulture;
static void Main(string[]
args)
Görüldüğü gibi CurrentCulture Pazartesi, CurrentUICulture Pazar şeklinde sonuç
döndürdü.
Şimdi CultureInfo class'ının bize bilgi sağlayan önemli iki öğesinden daha
bahsetmek istiyorum. Bunlardan birincisi DateTimeFormat DateTimeFormatInfo
tipinde seçili culture'a ait tarih ve zaman format bilgisine erişmemizi sağlar.
DateTimeFormatInfo nesnesinin birçok property'sinden bazılarını aşağıdaki
metodda alabiliriz:
void GetDateTimeFormatInfo()
System.Globalization.DateTimeFormatInfo
dtfi = System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat;
}
void GetNumberFormatInfo()
System.Globalization.NumberFormatInfo
nfi = System.Globalization.CultureInfo.CurrentCulture.NumberFormat;
}
Metodu uygulamada çalıştırdığımızda property'lerin değerlerini aşağıdaki gibi
görebiliriz:
Umarım faydalı olmuştur.
Işıl Orhanel
isil@isilorhanel.net | |
Yazgelistir.com | |