본문 바로가기

Programming/.NET

C# .NET Custom CultureInfo and satellite assemblies

반응형

 

아래처럼 Custom CultureInfo를 추가해야 하는 경우가 있다.

태국영어로 서비스를 지원하고 싶어 리소스파일(resx)을 추가하려 하는데

해당하는 culture info(en-TH)가 기본적으론 없는 경우

 

culture info를 직접 추가하는 방법은 다음과 같다.

var culture = new CultureAndRegionInfoBuilder("en-TH", CultureAndRegionModifiers.None);

culture.LoadDataFromCultureInfo(CultureInfo.CreateSpecificCulture("en-US"));

culture.LoadDataFromRegionInfo(new RegionInfo("th-TH"));

culture.Register();

CultureAndRegionInfoBuilder class를 이용해 새로 추가할 culture info 객체를 만들고

필요한 정보(문화정보, 지역정보)를 설정해준뒤

등록(Register) 한다.

 

참고사항

1.CultureAndRegionInfoBuilder class 사용을 위해 sysglobl.dll을 참조 등록해주어야 한다.

2. 프로그램 실행 시 새로 추가한 culture Info(en-TH)로 지역화가 정상 동작하지 않을 경우?

-> 빌드 결과물에 새로 추가한 CultureInfo에 해당하는 폴더 및 satellite assembly가 없을 수 있다.

그럴땐 지역화 리소스가 있는 프로젝트를 빌드한 후

리소스를 사용하는 프로젝트를 다시 빌드해 해당 폴더 및 (폴더 하위에)satellite assembly가 생기는 것을 확인한다.

 

반응형