Di .NET ada CultureInfo
kelas di System.Globalization
namespace. Ia memiliki dua properti yang serupa, keduanya mengembalikan nilai CultureInfo
tipe: CurrentCulture
dan CurrentUICulture
.
Apa perbedaan di antara mereka?
Yang mana yang harus saya gunakan kapan dan mengapa?
.net
globalization
cultureinfo
percikan
sumber
sumber
CurrentUICulture
akan selalu menjadi en-US pada mesin berbahasa Inggris, terlepas dariCurrentCulture
, yang dapat diatur untuk melokalkan Pengaturan Regional.CurrentCulture
'en-GB', tetapiCurrentUICulture
'en-US'.Jawaban:
CurrentCulture
adalah representasi .NET dari lokal pengguna default sistem. Ini mengontrol angka default dan format tanggal dan sejenisnya.CurrentUICulture
mengacu pada bahasa antarmuka pengguna default, pengaturan yang diperkenalkan pada Windows 2000. Ini terutama mengenai bagian pelokalan / terjemahan UI aplikasi Anda.Opsi regional apa pun yang dikonfigurasikan oleh sistem akan memiliki nilai "Lancar" di aplikasi .NET Anda.
Sering kali keduanya sama. Tetapi pada sistem saya mereka akan berbeda: Saya lebih suka angka dan tanggal saya dalam format Jerman, jadi
CurrentCulture
itu akan Jerman, tetapi saya juga lebih suka semua aplikasi saya dalam bahasa Inggris, jadi ituCurrentUICulture
akan menjadi bahasa Inggris.Ada artikel bagus tentang topik ini: Menyortir semuanya: Mengapa kami memiliki CurrentCulture dan CurrentUICulture
sumber
D
) dapat berisi beberapa "bahasa":en-US
pengembalian "Jumat, 6 April 2018", sedangkanru-RU
pengembalian "6 апреля 2018 г.".Ini adalah trik sederhana yang saya gunakan untuk mengingat yang harus digunakan:
sumber
Cara yang baik untuk membuat perbedaan selain penjelasan yang bagus yang dilakukan oleh sesama pengguna, dan aspek penting dalam pengembangan aplikasi web adalah sebagai berikut:
CurrentCulture
mewakili pengaturan server web. Misalnya, jika aplikasi web ASP.NET Anda dihosting di Jerman, nilaiCutlureInfo.CurrentCulture
kemungkinan besar adalahde-DE
. Dengan demikian,.ToString()
pemformatan default untukIFormattable
tipe akan menggunakan format Jerman default, atau yang telah ditetapkan pada OS server sebagai default.CurrentUICulture
dapat ditangkap dari agen pengguna, dan dapat mewakili budaya antarmuka pengguna dari klien yang terhubung ke situs web. Sebagai contoh, jika Anda memuat bahwa website dari Rusia, pengaturan lokal Anda ditetapkan untuk menggunakan bahasa Rusia, dan agen pengguna Anda mengirimkan pengaturan lokal Anda ke server (Opera dan IE melakukan ini secara otomatis, tidak yakin untuk Chrome dan FireFox), yangCurrenUICulture
akan mewakiliru-RU
. Ini akan menyebabkan sumber daya apa pun seperti string terlokalisasi yang diambil melalui ResourceManager atau ekspresi lokalisasi dalam file ASP.NET aspx / ascx berada dalam bahasa Rusia (jika terjemahan tersedia).sumber
Perbedaan:
CurrentCulture
adalah untuk memformat tanggal dan mata uang sambilCurrentUICulture
menggunakan bahasa / terjemahan. Ini akan digunakanResourceManager
untuk mencari sumber daya berdasarkan budaya.CurrentCulture
kelasSystem.Globalization
sementaraCurrentUICulture
berasal dariSystem.Threading
.CurrentCulture
tetap di berbagai permintaan dalam sesi sementaraCurrentUICulture
perlu diatur dengan setiap permintaan.Kemiripan:
Keduanya adalah
System.Globalization.CultureInfo
contoh.sumber
Perlu dicatat bahwa
CurrentUICulture
mendukung lokal spesifik non-negara seperti 'en' (budaya netral) sedangkanCurrentCulture
HANYA mendukung lokal spesifik negara seperti 'en-GB'. PengaturanCurrentCulture
ke budaya netral akan melemparArgumentException
.Saya berasumsi bahwa ini adalah karena format seperti tanggal dan mata uang lebih kuat terkait dengan negara itu sendiri, tetapi bahasa yang ditampilkan sering dipertukarkan antar negara.
sumber