kyuseo의 게임 프로그래밍

세계화에 다국어 버전 지원 프로그램 만들기 본문

C++ 개발

세계화에 다국어 버전 지원 프로그램 만들기

kyuseo 2008. 1. 6. 17:52

개요..

 

최근 국내 소프트들도 해외 진출이 많고 간단한 유틸리티 프로그램도 다국어 지원을 많이 합니다. 다국어 개발에 관한 기본적인 방법을 설명해드립니다.

 

다운로드 (피망고 게임엔진을 이용하기 때문에 컴파일은 되지 않습니다.)

 

 

 

1. 다국어 지원용 ini 파일을 구성합니다.

 

====== Kor.ini 파일 ======

; 한국어

 

[ title ]

100 = 다국어 다이알로그 박스

 

[ control ]

1000 = 확인

1001 = 취소

1002 = 한국어

1003 = 영어

1004 = 다국어 버튼

1005 = 언어를 선택하세요

 

1010 = 다국어 버젼을 만들기는 쉽습니다.

1011 = 하지만 많은 노력이 필요합니다.

 

[ message ]

1020 = 메세지 박스입니다.

 

 

====== eng.ini 파일 ======

; english

 

[ title ]

100 = Multy Language Dialog Box

 

[ control ]

1000 = OK

1001 = Cancel

1002 = Korean

1003 = English

1004 = Multy Language Button

1005 = Select Language...

 

1010 = Multy Language is easy

1011 = But very hard work...

 

[ message ]

1020 = it's message box

 

 

 

2. 특정 상태에 따라서 다국어로 변형합니다.

 

void CMultyLangDlg::OnButtonKor()

{

    ChangeLanguage( "kor.ini" );

}

 

void CMultyLangDlg::OnButtonEng()

{

    ChangeLanguage( "eng.ini" );

}

 

 

 

3. 핵심 변형 코드입니다.

 

void CMultyLangDlg::ChangeLanguage( LPCTSTR szFileName )

{

    m_StringTable.Create( szFileName );

 

    SetWindowText( GetString( 100 ) );

 

    SetDlgItemText( IDOK, GetString( 1000 ) );

    SetDlgItemText( IDCANCEL, GetString( 1001 ) );

 

    SetDlgItemText( IDC_BUTTON1, GetString( 1004 ) );

    SetDlgItemText( IDC_STATIC_1, GetString( 1010 ) );

    SetDlgItemText( IDC_STATIC_2, GetString( 1011 ) );

    

    SetDlgItemText( IDC_BUTTON_KOR, GetString( 1002 ) );

    SetDlgItemText( IDC_BUTTON_ENG, GetString( 1003 ) );

    SetDlgItemText( IDC_STATIC_CHANGE_LANG, GetString( 1005 ) );

}

 

 

* 덧붙여서…

 

일반적으로 리소스(*.res) 파일을 이용하여 다국어를 구현하는 방법도 좋지만 ini 와 같은 텍스트 파일을 이용하는 방법이 확장성에서는 더 좋습니다.