Kültür ve UICulture arasındaki fark nedir?


126

Birisi bana .NET çerçevesi arasındaki Cultureve UICultureiçindeki fark hakkında biraz daha bilgi verebilir mi? Ne yaparlar ve neyi ne zaman kullanırlar?

Yanıtlar:


148

Culturekü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

UICultureuygulamanı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 UICultureiç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.


39
Bu, İngilizce etiketlere ve UI'ye (İngilizce UICulture) ve Norveç para birimine, tarihe, saate ve sayı biçimlendirmesine (Norveç Kültürü) sahip olabileceğiniz anlamına gelir. Windows açısından, bunu menüler ve iletişim kutuları için bir dil paketinin kurulu olduğunu düşünün. (UICulture), ancak Norveç bölgesel ayarlarıyla çalışıyor (Kültür.)
Lasse V.Karlsen

2
Bunun sonuçlarını vurgulamak için: Bir kullanıcının dilini desteklemeseniz bile, biçimlendirme için kültürünü desteklediğinizden emin olun! Bir uygulamanın hem kültür hem de dil açısından "en-US" durumuna geri döndüğü, yalnızca dile geri dönmesi gerektiğinde hatalar gördüm.
ToolmakerSteve

1
A'nın yeterli olacağı CultureInfokaynak dosyasını belirlemek için tüm bir nesneyi kullanmanın amacı stringnedir? (Örneğin Languagemülkü FrameworkElement)
Wouter

2

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-GBburada entemsil eder Englishve GBtemsil ederGreat Briton

en-USburada entemsil eder Englishve UStemsil ederUnited States

CultureTarih, saat gibi Kültüre bağlı işlevler için kullanın . ve UICulturedoğru kaynak dosyası yüklemesi içindir.


0

@ 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" %>


-4

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.