프로그래밍/C#

[C#] 다국어 처리 방법(MultiLanguage)

ss-pro 2022. 10. 28. 00:29
반응형

C#에서 리소스파일을 이용해서 다국어 처리하는방법입니다. 한국어과 영어를 처리해보도록 하겠습니다.  먼저 영문으로 화면을 구성한다음 한국어를 적용하도록 하겠습니다.  간단히 요약하면 CurrentCulture 클래스를 사용해서 적용하고 싶은 언어를 설정해주고 리소스파일을 언어별로 만들어 설정하면됩니다. 

1. WinForm의 Localizable 속성을 True변경

2. 리소스파일 추가 (한국어 : ko-KR)
리소스파일을 추가합니다. Form1에 대하여 적용하기위해서 Form.ko-KR.resx의 명칭으로 리소스 파일을 추가합니다. 

Form1.ko-KR.resx파일에 정보를 한글로 입력합니다. 

3. CultureInfo 클래스를 사용한 지역화처리
CultureInfo 클래스를 사용하기 위해서는 using System.Globalization; 을 추가해야합니다. new CultureInfo("ko-KR"); 한국어로 설정할때 InitializeComponent(); 먼저 실행되어야 폼 컨트롤에 반영이 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System.Globalization;
namespace MulitLanguage
    public partial class Form1 : Form
    {
        public Form1()
        {
            //한국어처리
            Thread.CurrentThread.CurrentCulture = new CultureInfo("ko-KR");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("ko-KR");
 
            //영어처리
            //Thread.CurrentThread.CurrentCulture =  new CultureInfo("en-US");
            //Thread.CurrentThread.CurrentUICulture =  new CultureInfo("en-US");
 
            InitializeComponent();
        }
 
        private void btnOK_Click(object sender, EventArgs e)
        {
            MessageBox.Show(FormStrResource.HelloMessage);
        }
    }
}

4. 폼 컨트롤 이외 문자열 메세지 처리관련
컨트롤 명칭이외에 소스 내부의 문자열등을 처리가 필요 할경우에는 별도 리소스파일을 만들어서 처리하면 되는데 이 경우에 FormStrResource.resx라는 리소스파일을 만들었다고 가정하면 한국어를 처리를 위해 FormStrResource.ko-KR.resx파일을 추가하여 아래와 같이 동일한 이름으로 리소스를 작성해서 처리하면 됩니다. 
MessageBox.Show(FormStrResource.HelloMessage);

5. 다국어처리 영상
리소스파일 수정방법과 다국어 적용하는 방법입니다.