본문 바로가기
프로그래밍/프로그래밍

c# 다중언어

by 완소루피 2020. 11. 2.
728x90
반응형

지역화(Localization) 및 다중 언어(Multi-Language) 지원을 위한 강력한 기능을 제공합니다.

 

우선 다중으로 지원할 문자열을 기록할 리소스를 프로젝트에 추가합니다.

이 파일을 '기준 리소스'라고 부르겠습니다.

 

 

그리고 지역화할 문자열을 기록할 리소스도 추가합니다.

 

여기서 파일 이름이 중요합니다.

앞서 생성한 기준 리소스 파일명에 .(온점) 그리고 문화 문자열을 넣습니다.

 

 

문화 문자열은 특정 문화권을 지칭하는,

알파벳 소문자 2개 -(하이픈) 알파벳 대문자 2개로 이루어진 문자열입니다.

 

한국, 한국어는 ko-KR로 표현됩니다.

 

문화 문자열에 대한 정보들은 아래 링크를 참고하십시오.

http://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx

 

 

한국어로 지역화를 하고 싶다면

(기준 리소스의 파일명).ko-KR

 

로 리소스 파일 이름을 지으면 됩니다.

 

필자는 기준 리소스 파일을

TextLib

이라고 지었고

 

 

한국어 리소스는

TextLib.ko-KR

 

 

일본어 리소스도 만들었습니다.

TextLib.ja-JP

입니다.

 

 

그러면 준비는 끝, 어떻게 사용할까요.

 

 

먼저 기준 리소스,

필자의 경우 TextLib을 엽니다.

그러면 엑셀 같은 표가 하나 열립니다.

 

 

여기에 지역화할 문자열들을 기록합니다.

이름, 값, 설명이 있습니다.

이름은 변수(프로퍼티)명과 대응하며 값은 해당 변수의 반환값이 됩니다.

 

 

 

그리고 지역화 리소스 파일을 엽니다.

 

필자는 한국어, TextLib.ko-KR을 열고 아래와 같이 작성했습니다.

이름은 기준 리소스에 일치하게 하고? 값은 지역화할 문자열로 바꿔 줍니다.

 

 

 

 

그리고 코드 상에서

 

(기준 리소스 이름).(변수 이름)

 

을 작성하면 리소스에 기록한 값이 반환됩니다.

 

private void SetTexts() 

{ 

   this.Text = TextLib.MainForm_Title;

   lbl_greet.Text = TextLib.GreetToWorld;

   lbl_langChange.Text = TextLib.ChangeLanguage + " : ";

   btn_close.Text = TextLib.Close;

}  

 

이렇게 하면 끝입니다.

 

 

런타임이 현재 구동 중인 머신의 언어 설정을 참고하여

자동으로 어느 리소스에 있는 문자열을 반환할지 자동으로 선택합니다.

 

 

일일이 스위치?문을 돌린다거나

여러 언어 버전의 어플리케이션을 빌드할 필요가 없습니다.

 

그런데 런타임이 자동으로 설정하는 언어가 아니라

프로그래머 또는 사용자가 직접 원하는 언어를 설정하고 싶을 수 있습니다.

 

물론 가능합니다.

 

(기준 리소스 이름).Culture

 

프로퍼티를 새로 할당하면 됩니다.

 

 

이 프로퍼티는 CultureInfo 객체를 나타내는데

자세한 정보는 아래 링크를 참고하십시오.

 

http://msdn.microsoft.com/ko-kr/library/system.globalization.cultureinfo.aspx

 

이 객체를 생성할 때 문화 문자열이 사용됩니다.

만약 한국어로 수동 설정하고 싶다면 아래와 같이 하면 됩니다.

 

TextLib.Culture = new System.Globalization.CultureInfo("ko-KR");

이 이후부터는 TextLib.ko-KR의 문자열들이 반환될 것입니다.

덧붙여 현재 구동중인 머신의 CultureInfo 객체를 얻을 수도 있습니다.

 

TextLib.Culture = System.Globalization.CultureInfo.CurrentCulture;

 

런타임에게 언어 설정을 맡긴 것과 같은 결과를 얻을 수 있습니다.

728x90
반응형

'프로그래밍 > 프로그래밍' 카테고리의 다른 글

[ADB] Airplane Mode 변경  (0) 2020.11.12
[C#] C로 작성된 Dll 사용하기  (0) 2020.10.30
버블정렬  (0) 2018.03.22
C++로 간단한 퀴즈 프로그램 만들기  (0) 2018.03.22