Yanıtlar:
Culture
kültüre bağlı verilerin (tarihler, para birimleri, sayılar vb.) nasıl sunulduğunu etkiler. İşte birkaç örnek:
var date = new DateTime(2000, 1, 2);
var number = 12345.6789;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
Console.WriteLine(date); // 02.01.2000 00:00:00
Console.WriteLine(number.ToString("C")); // 12.345,68 €
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA");
Console.WriteLine(date); // 2000-01-02 00:00:00
Console.WriteLine(number.ToString("C")); // 12 345,68 $
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Console.WriteLine(date); // 1/2/2000 12:00:00 AM
Console.WriteLine(number.ToString("C")); // $12,345.68
Kültür, kullanıcı girdisinin ayrıştırılmasını da aynı şekilde etkiler:
const string numberString = "12.345,68";
decimal money;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
money = decimal.Parse(numberString); // OK!
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
money = decimal.Parse(numberString); // FormatException is thrown, TryParse would return false
Ayrıştırmanın başarılı olduğu, ancak sonucun beklediğiniz gibi olmadığı durumlara dikkat edin .
const string numberString = "12.345";
decimal money;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
money = decimal.Parse(numberString); // 12345
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
money = decimal.Parse(numberString); // 12.345, where the . is a decimal point
UICulture
uygulamanız tarafından hangi kaynak dosyasının (Resources. lang .resx) yükleneceğini etkiler .
Bu nedenle, Alman kaynaklarını (muhtemelen yerelleştirilmiş metin) yüklemek UICulture
için Alman kültürünü ayarlayacak ve Alman biçimlendirmesini (hangi kaynakların yüklendiği üzerinde herhangi bir etki olmaksızın) görüntüleyeceksiniz Culture
.
CultureInfo
kaynak dosyasını belirlemek için tüm bir nesneyi kullanmanın amacı string
nedir? (Örneğin Language
mülkü FrameworkElement
)
Culture and UICulture
Değerler, iki harfli dizelerden oluşan çiftlerdir; birincisi dili tanımlamak için, ikincisi ise bölgeyi tanımlamak içindir. Misal:
en-GB
burada en
temsil eder English
ve GB
temsil ederGreat Briton
en-US
burada en
temsil eder English
ve US
temsil ederUnited States
Culture
Tarih, saat gibi Kültüre bağlı işlevler için kullanın . ve UICulture
doğru kaynak dosyası yüklemesi içindir.
@ Vache'nin harika açıklamasına ek olarak dikkate alınması gereken küçük bir konu: Hem UICulture hem de Culture'ı (sayfa düzeyinde ve uygulama düzeyinde) ayarlayabilirsiniz.
Bunları uygulama düzeyinde ayarlamak için, web.config dosyasına küreselleştirme oturumu eklemeniz yeterlidir.
Örneğin <globalization uiCulture="es" culture="es-MX" />
Bunları belirli bir (bireysel) sayfaya eklemek iyi olan sayfa düzeyinde ayarlamak için, Kültür ve UICulture özniteliklerini @ page yönergesi içinde ayarlayın
Örneğin <%@ Page UICulture="es" Culture="es-MX" %>
UICulture özelliği her Web tarayıcısı için değişebilir, oysa Culture sabit kalır.
Kültür değeri, yalnızca en-US veya en-GB gibi belirli kültürlere ayarlanabilir. Bu, en-US ve en-GB'nin farklı para birimi sembollerine sahip olduğu en için kullanılacak doğru para birimi sembolünü tanımlama gerekliliğini önler. Kullanıcılar, tarayıcılarında UI kültürünü ve kültürünü ayarlayabilir.