W .NET jest CultureInfo
klasa w System.Globalization
przestrzeni nazw. Ma dwie podobne właściwości, obie zwracające wartości CultureInfo
typu: CurrentCulture
i CurrentUICulture
.
Jaka jest różnica między nimi?
Którego powinienem użyć, kiedy i dlaczego?
.net
globalization
cultureinfo
splattne
źródło
źródło
CurrentUICulture
zawsze będzie en-US na maszynie w języku angielskim, niezależnie od tegoCurrentCulture
, które można ustawić, aby zlokalizować Ustawienia regionalne.CurrentCulture
„en-GB”, aleCurrentUICulture
„en-US”.Odpowiedzi:
CurrentCulture
to .NET reprezentacja domyślnych ustawień regionalnych użytkownika w systemie. Kontroluje domyślne formatowanie liczb i dat i tym podobne.CurrentUICulture
odnosi się do domyślnego języka interfejsu użytkownika, ustawienia wprowadzonego w systemie Windows 2000. Dotyczy to przede wszystkim części aplikacji / lokalizacji interfejsu użytkownika.Bez względu na opcje regionalne, jakie ma skonfigurowany system, będą to „bieżące” wartości w aplikacji .NET.
Często oba są takie same. Ale w moim systemie byłyby inne: wolę moje liczby i daty w formacie niemieckim, więc
CurrentCulture
byłby niemiecki, ale wolę też wszystkie moje aplikacje w języku angielskim, więcCurrentUICulture
byłby to angielski.Jest ładny artykuł na ten temat: Sortowanie wszystkiego Na zewnątrz: Dlaczego mamy zarówno CurrentCulture, jak i CurrentUICulture
źródło
D
) może zawierać całkiem sporo „języka”:en-US
zwraca „piątek, 6 kwietnia 2018 r.”, Podczas gdyru-RU
zwraca „6 sierpnia 2018 r.”.To prosta sztuczka, której używam, aby zapamiętać, której użyć:
źródło
Dobrym sposobem na zrobienie różnicy oprócz miłych wyjaśnień innych użytkowników i ważnym aspektem w tworzeniu aplikacji internetowych jest:
CurrentCulture
reprezentuje konfigurację serwera WWW. Na przykład, jeśli twoja aplikacja internetowa ASP.NET jest hostowana w Niemczech,CutlureInfo.CurrentCulture
najprawdopodobniej byłaby to wartośćde-DE
. Dlatego domyślne.ToString()
formatowanieIFormattable
typów używałoby domyślnych formatów niemieckich lub tych, które zostały skonfigurowane w systemie operacyjnym serwera jako domyślne.CurrentUICulture
może zostać przechwycony z klienta użytkownika i może reprezentować kulturę interfejsu użytkownika klienta łączącego się z witryną. Na przykład, jeśli załadować tę stronę z Rosji, Twoje ustawienia lokalne są skonfigurowane do korzystania z języka rosyjskiego, a aplikacja kliencka wysyła swoje ustawienia regionalne do serwera (Opera i IE to zrobić automatycznie, nie wiem dla Chrome i Firefox), przy czymCurrenUICulture
będzie reprezentowaćru-RU
. Spowoduje to, że wszelkie zasoby, takie jak zlokalizowane ciągi pobrane za pomocą ResourceManager lub wyrażenia lokalizacji w plikach aspx / ascx ASP.NET będą w języku rosyjskim (jeśli dostępne są tłumaczenia).źródło
Różnice:
CurrentCulture
służy do formatowania dat i walut podczas korzystaniaCurrentUICulture
z języka / tłumaczeń. Zostanie wykorzystanyResourceManager
do wyszukiwania zasobów według kultury.CurrentCulture
klasy jest wSystem.Globalization
chwili, gdyCurrentUICulture
pochodziSystem.Threading
.CurrentCulture
jest utrwalany dla różnych żądań w sesji, aleCurrentUICulture
musi być ustawiony dla każdego żądania.Podobieństwo:
Oba są
System.Globalization.CultureInfo
instancjami.źródło
Warto zauważyć, że
CurrentUICulture
obsługuje lokalizacje inne niż krajowe, takie jak „en” (kultury neutralne), podczas gdyCurrentCulture
TYLKO obsługuje lokalizacje specyficzne dla kraju, takie jak „en-GB”. UstawienieCurrentCulture
neutralnej kultury rzuciArgumentException
.Zakładam, że dzieje się tak, ponieważ formaty takie jak daty i waluty są silniej powiązane z samym krajem, ale wyświetlany język jest często wymienny między krajami.
źródło