[C#] 다국어 지원 C# 2015. 4. 6. 17:29

다국어 지원이 생각보다 편하다.

 

ko-KR, en-US 이렇게 직접적으로 할 필요가 없이

 

CultureInfo를 이용하여 CurrentCulture를 String 형태로 반환하면 현재 플랫폼의 상황을 알 수가 있다.

 

여지껏 한번도 이렇게 해 본 적이 없고.. 다국어 지원을 처음하다보니 생소하긴한데..

 

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(CultureInfo.CurrentCulture.ToString());
            ResourceManager manager = new ResourceManager("FMAClient.TextInfo", typeof(Form).Assembly);

 

형태로 하면 현재 지정된 리소스를 들고 올 수가 있다.

 

리소스.지원언어 형태로 해서 리소스를 추가 하면 위에서 찾은 지원 형태에 따라 자동으로 인식한다.

 

하나 주의점이 필요하다면.. 기본적인 리소스 파일을 Dummy 형태로 만들어 둬야한다.

 

그렇지 않을 경우 디자이너가 깨지거나 하는 경우를 볼 수가 있다.

 

지원하지 않은 언어에 대한 오류 메세지들이 등장한다.

 

manager.GetString("Conditions"); 형태로 해 주면 리소스에 저장한 이름의 데이터를 가져 올 수가 있다.

 

만약 한국어라면 ko-KR인데 생성 리소스 파일은 리소스명.ko-KR 이렇게 만들어 주면 자동으로 들어간다.

 

영어나 이런 경우 en-US인데 리소스명.en-US 파일을 만들어 두 리소스 파일을 비교 후 해당하는 리소스를 참조하는 형식이다.

 

참조해야하는 네임스페이스는 Resources, Globalization 이 두가지이다.