.NET에서 CultureInfo의 CurrentCulture 속성과 CurrentUICulture 속성의 차이점은 무엇입니까?


358

.NET에는 네임 스페이스에 CultureInfo클래스가 System.Globalization있습니다. 그것은 두 개의 유사한 특성의 모두 반환 값이 CultureInfo: 유형 CurrentCultureCurrentUICulture.

그들 사이의 차이점은 무엇입니까?

언제, 왜 어떤 것을 사용해야합니까?


28
Microsoft는 지혜로 미국 영어와 영국 영어 또는 다른 영어의 UI 문화를 분리하지 않습니다. 영어 용 MUI는 없습니다. 즉 , 지역 설정을 현지화하도록 설정할 수있는에 CurrentUICulture관계없이 영어 시스템에서 항상 영어로 CurrentCulture사용할 수 있습니다.
nicodemus13

11
예. 저는 영국에 있는데 CurrentCulture'en-GB'이지만 CurrentUICulture'en-US'입니다.
대령 패닉

: 그냥 자세하게 설명이 문서 발견 github.com/jbe2277/waf/wiki/CurrentCulture-vs.-CurrentUICulture
RinoTom

답변:


346

CurrentCulture시스템의 기본 사용자 로캘에 대한 .NET 표현입니다. 기본 숫자 및 날짜 형식 등을 제어합니다.

CurrentUICulture Windows 2000에 도입 된 설정 인 기본 사용자 인터페이스 언어를 나타냅니다. 이는 주로 앱의 UI 현지화 / 번역 부분과 관련이 있습니다.

시스템이 구성한 지역 옵션은 .NET 앱의 "현재"값입니다.

종종 그들은 둘 다 동일합니다. 그러나 내 시스템에서 그들은 다를 것입니다 : 나는 독일어 형식의 숫자와 날짜를 선호하므로 CurrentCulture독일어 일 것입니다. 그러나 모든 응용 프로그램을 영어로 선호하기 때문에 영어 일 CurrentUICulture것입니다.

주제에 대한 좋은 기사 가 있습니다. 모두 정렬하기 : CurrentCulture와 CurrentUICulture가 모두있는 이유


5
사실이 깊이있는 설명에 대한 좋은 대안이 될 수 있습니다 forums.asp.net/post/1080435.aspx
Michael12345

@ Michael12345 힌트를 주셔서 감사합니다. 링크를 업데이트했습니다. 귀하가 링크하는 게시물도 괜찮습니다.
Tomalak

5
CurrentUICulture는 실제로 CurrentLanguageCulture를 의미하고 CurrentCulture는 실제로 CurrentDataCulture를 의미하기 때문에 끔찍한 이름입니다.
Pxtl

2
@ Pxtl : CurrentDataCulture 대신 CurrentFormattingCulture를 선택하고 싶습니다 . 그럼에도 불구하고 이것들은 당신의 이름에서 알 수 있듯이 분명히 분리되지 않을 수도 있습니다. 예를 들어, 긴 날짜 형식 ( )에 상당히 많은 "언어"가 포함될 수 있다고 주장합니다 . "2018 년 4 월 6 일 금요일"을 반환하고 "6 апреля 2018 г"를 반환합니다. Den-USru-RU
또는 매퍼

107

이것은 내가 사용할 것을 기억하기 위해 사용하는 간단한 트릭입니다.

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture

nicodemus13 의 의견 과 Panic 대령 의 말을 신뢰한다면, 트릭의 두 번째 부분이 효과가 없을 것 같습니다.
또는 매퍼

15

동료 사용자가 수행 한 멋진 설명 외에도 웹 응용 프로그램 개발에서 중요한 부분을 추가 할 수있는 좋은 방법은 다음과 같습니다.

  • CurrentCulture웹 서버의 설정을 나타냅니다. 예를 들어 ASP.NET 웹 응용 프로그램이 독일에서 호스팅되는 경우의 값은 CutlureInfo.CurrentCulture아마도입니다 de-DE. 따라서 유형 의 기본 .ToString()형식 IFormattable은 기본 독일어 형식 ​​또는 서버 OS에서 기본값으로 설정된 형식을 사용합니다.

  • CurrentUICulture사용자 에이전트로부터 캡처 될 수 있고, 웹 사이트에 연결하는 클라이언트의 사용자 인터페이스 문화를 나타낼 수있다. 당신이 러시아에서 해당 웹 사이트를로드하는 경우 예를 들어, 로컬 설정이 러시아어를 사용하도록 설정하고, 사용자 에이전트가 서버 (오페라와 IE는하지 않도록 크롬과 파이어 폭스에 대해 자동으로 수행)에 로케일 설정을 전송하고는 CurrenUICulture것 나타냅니다 ru-RU. 이로 인해 ResourceManager를 통해 검색된 현지화 된 문자열 또는 ASP.NET aspx / ascx 파일의 현지화 표현식과 같은 리소스가 러시아어로 번역됩니다 (번역이 가능한 경우).


13

차이점 :

  1. CurrentCultureCurrentUICulture언어 / 번역과 함께 날짜 및 통화 형식을 지정 합니다. ResourceManager문화별로 자원을 찾는 데 사용됩니다 .
  2. 의 네임 스페이스 CurrentCulture클래스에있는 System.Globalization동안 CurrentUICulture에서 온다 System.Threading.
  3. CurrentCulture세션에서 여러 요청에 걸쳐 유지되는 동안 CurrentUICulture모든 요청마다 설정해야합니다.

초상:

둘 다 System.Globalization.CultureInfo인스턴스입니다.


8

CurrentUICulture'en'(중립 문화)과 같은 비 국가 특정 로케일을 CurrentCulture지원 하는 반면 'en-GB'와 같은 국가 별 로케일 만 지원 한다는 점은 주목할 가치가 있습니다. CurrentCulture중립 문화로 설정 하면 ArgumentException.

날짜와 통화와 같은 형식이 국가 자체와 더 강력하게 연결되어 있기 때문에 표시되는 언어는 종종 국가간에 상호 교환이 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.