Bisakah seseorang memberi saya sedikit lebih banyak informasi tentang perbedaan antara Culture
dan UICulture
dalam kerangka NET.? Apa yang mereka lakukan dan kapan harus menggunakan apa?
126
Culture
mempengaruhi bagaimana data yang tergantung pada budaya (tanggal, mata uang, angka, dan sebagainya) disajikan. Berikut ini beberapa contoh:
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
Kultur juga memengaruhi penguraian input pengguna dengan cara yang sama:
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
Waspadalah terhadap kasus di mana parsing berhasil tetapi hasilnya tidak seperti yang Anda harapkan.
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
memengaruhi file sumber mana (Resources. lang .resx) yang akan dimuat oleh aplikasi Anda.
Jadi untuk memuat sumber daya Jerman (mungkin teks yang dilokalkan) Anda akan mengatur UICulture
budaya Jerman dan menampilkan pemformatan Jerman (tanpa dampak pada sumber daya mana yang dimuat) yang akan Anda atur Culture
.
CultureInfo
objek hanya untuk menentukan file sumber daya di mana astring
akan cukup? (MisalnyaLanguage
properti dariFrameworkElement
)Culture and UICulture
Nilai adalah pasangan string dua huruf, yang pertama adalah untuk mendefinisikan bahasa dan yang kedua untuk mendefinisikan wilayah. Contoh:
en-GB
di sinien
mewakiliEnglish
danGB
mewakiliGreat Briton
en-US
di sinien
mewakiliEnglish
danUS
mewakiliUnited States
Gunakan
Culture
untuk fungsi tergantung Budaya seperti tanggal, waktu. danUICulture
untuk pemuatan file sumber daya yang benar.sumber
Hanya masalah kecil untuk dipertimbangkan selain penjelasan luar biasa @ Vache: Anda dapat mengatur UICulture dan Culture pada (level halaman dan level aplikasi).
Untuk mengaturnya pada level aplikasi, cukup tambahkan sesi globalisasi di web.config
misalnya
<globalization uiCulture="es" culture="es-MX" />
Dan untuk mengaturnya pada level halaman, yang bagus untuk ditambahkan pada halaman (individual) tertentu, atur atribut Culture dan UICulture dalam direktif @ page
misalnya
<%@ Page UICulture="es" Culture="es-MX" %>
sumber
Properti UICulture mungkin berubah untuk setiap browser Web, sedangkan Culture tetap konstan.
Nilai Budaya dapat diatur hanya untuk budaya tertentu, seperti en-US atau en-GB. Ini mencegah persyaratan untuk mengidentifikasi simbol mata uang yang benar untuk digunakan untuk en, di mana en-US dan en-GB memiliki simbol mata uang yang berbeda. Pengguna dapat mengatur budaya dan budaya UI di browser mereka.
sumber