문화와 UICulture의 차이점은 무엇입니까?


126

누군가 .NET 프레임 워크 의 차이점 CultureUICulture.NET 프레임 워크 의 차이점에 대해 조금 더 많은 정보를 제공 할 수 있습니까? 그들이 무엇을하고 언제 무엇을 사용해야합니까?

답변:


148

Culture문화 종속 데이터 (날짜, 통화, 숫자 등)가 표시되는 방식에 영향을줍니다. 다음은 몇 가지 예입니다.

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

문화는 또한 같은 방식으로 사용자 입력의 구문 분석에 영향을줍니다.

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

구문 분석이 성공 하지만 결과가 예상 과 다른 경우에주의하십시오 .

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응용 프로그램에서로드 할 리소스 파일 (Resources. lang .resx)에 영향을줍니다 .

따라서 독일어 리소스 (아마 현지화 된 텍스트)를로드 UICulture하려면 독일어 문화권으로 설정 하고 (로드되는 리소스에 영향을주지 않고) 독일어 형식을 표시합니다 Culture.


39
영어 레이블과 UI (영어 UICulture), 노르웨이 통화, 날짜, 시간 및 숫자 형식 (노르웨이 문화)을 가질 수 있음을 의미합니다. Windows 용어에서는 메뉴와 대화 상자에 언어 팩이 설치되어 있다고 생각하십시오. (UICulture)하지만, 노르웨이어 지역 설정 실행 (문화.)
라세 V. 칼슨

2
이것의 의미를 강조하려면 : 사용자의 언어를 지원하지 않더라도 형식화를 위해 그들의 문화를 지원해야합니다! 앱이 언어를 대체하기 만하면되는 문화와 언어 모두에서 "en-US"로 넘어가는 실수를 보았습니다.
ToolmakerSteve

1
CultureInfo자원 파일을 결정하기 위해 전체 객체 를 사용하는 것이 요점은 무엇입니까 string? (예 :의 Language속성 FrameworkElement)
Wouter

2

Culture and UICulture

값은 두 글자 문자열 쌍이며, 첫 번째는 언어를 정의하기위한 것이고 두 번째는 지역을 정의하기위한 것입니다. 예:

en-GB여기 en대표 English하고 GB나타냅니다Great Briton

en-US여기 en대표 English하고 US나타냅니다United States

Culture날짜, 시간과 같은 문화 의존적 기능에 사용 합니다. 및 UICulture올바른 리소스 파일 로딩입니다.


0

@Vache의 멋진 설명 외에도 고려해야 할 작은 문제 : UICulture와 Culture를 모두 페이지 수준 및 응용 프로그램 수준에서 설정할 수 있습니다.

응용 프로그램 수준에서 설정하려면 web.config에서 세계화 세션을 추가하십시오.

예 : <globalization uiCulture="es" culture="es-MX" />

특정 (개별) 페이지에 추가하기에 적합한 페이지 수준에서 설정하려면 @ page 지시문 내에서 Culture 및 UICulture 특성을 설정하십시오.

예 : <%@ Page UICulture="es" Culture="es-MX" %>


-4

UICulture 속성은 각 웹 브라우저마다 변경 될 수 있지만 Culture는 일정하게 유지됩니다.

문화권 값은 en-US 또는 en-GB와 같은 특정 문화권으로 만 설정할 수 있습니다. 이로 인해 en-US와 en-GB의 통화 기호가 다른 en에 사용할 올바른 통화 기호를 식별하지 않아도됩니다. 사용자는 브라우저에서 UI 문화와 문화를 설정할 수 있습니다.

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