블로그 이미지
blueye

카테고리

내블로그 (52)
창작활동 (10)
저장활동 (16)
관심 (0)
Total
Today
Yesterday

'다국어지원프로그래밍'에 해당되는 글 1건

  1. 2008.07.09 [MFC] 다국어지원프로그래밍 2
1 리소스를 DLL로 만들기
2 주의사항
3 권장 사용법
4 MUI(OS에서 지원!)
5 기존 코드 다국어 변형 작업

리소스를 DLL로 작성하여 다른 언어 지원시 리소스 DLL만 바꿔준다.
 

1 리소스를 DLL로 만들기


  1. VC에서 비어있는 dll프로젝트를 만든다.
  2. 새로 리소스파일을 추가
  3. 리소스의 속성을 보면 언어를 설정할 수 있다. 지원하는 언어로 설정하여 리소스 작성
  4. DLL컴파일 -> 리소스 DLL이 만들어 진다.

2 주의사항


  1. 두 DLL의 ID는 철저하게 일치하여야 한다. (ID란 매크로가 아니라 부여된 번호를 말한다.)
  2. 리소스가 DLL로 따로 작성되기 때문에 호스트 프로그램과 ID값을 일치시키는데 신경써야 한다. (리소스를 분리하지 않으면 자동으로 되겠지만)
  3. 다른 언어용 리소스 DLL은 가지고 있는 요소들이 일치하여야 한다. 한쪽에만 특정 다이얼로그가 있어선 안된다.
  4. 단축키(Accelerator)도 가능한 일치시키는게 좋지만 다국어 지원시 달라질 수도 있다.

3 권장 사용법


  1. 호스트 프로그램에서 언어 설정을 바꿀 수 있는 메뉴가 존재
  2. 현재 설정된 언어는 레지스트리에 저장
  3. 로딩시 이 값을 읽어 해당 DLL을 로드

4 MUI(OS에서 지원!)


  1. 원래 코드의 텍스트 리소스파일만 따로 떼어내어 dll을 만들되, 만들어질 이름을 실행화일이름.코드번호.mui' 로 한다.
    해당 언어로 변환하여 빌드한다.
  2. 원본 코드에서 텍스트 관련 리소스는 삭제한다. 빌드.
  3. 언어별로 mui파일만 작성해 놓으면 OS가 선택해 스트링관련 리소스 로드!!! (언어팩이 이렇게 가능해지는건가?)

5 기존 코드 다국어 변형 작업


  1. 언어 작업시 제어판->국가및 언어 옵션-> 모든 설정을 해당 언어로 셋팅. (리부팅 필요)
  2. 리소스 : 스트링 테이블, 다이얼로그, 글자가 들어간 비트맵및 아이콘 수정. 리소스의 언어를 반드시 해당언어로 설정.
  3. #define 되어 있는 부분에 작성자가 스트링을 소스내에 모아 놓았을 수도 있음. 수정.(헤더파일들 검색)
  4. MessageBox 검색, 수정
  5. AfxMessageBox 역시 검색, 수정. AfxMessageBox의 경우 미리 정의된 AFX_IDS_APP_TITLE 을 메세지 박스 타이틀로 사용.
    이 매크로가 정의 되어 있지 않은 경우 프로그램 이름을 타이틀로 사용
  6. DrawText, TextOut 등을 검색 수정.
  7. (!!!중요!!!) MFC등을 사용한 프로그램의 경우에는 출력되는 스트링을 찾을 수 없거나 MFC리소스에 있는 경우가 있다.
    이는 시스템에서 출력하는 메세지로 OS 이미지의 쉘에서 해당 스트링이 바뀌어야 하는 것으로 App.쪽에선 수정할 필요가 없다.
  8. 프로그램 실행파일 이름과 타이틀도 바꾼다. 상호 호출하는 Apps. 인 경우 호출하는 프로그램 이름이 정의된 곳을 찾아서 바꾸어준다.
    클래스 이름은 바뀔 필요가 없다. 타이틀은 FindWindow등에서 사용될 가능성이 농후 하므로 검색하여 찾아준다.
    ex) NWAVE 카메라: 리소스 수정, rc파일 직접 열어 메뉴항목 수정(반드시 eVC에서 리소스 해당언어설정), MessageBox 수정, DrawText 수정, CameraDll도 마찬가지. SendMessage!!!, 스트링 관련 함수들 - wsprintf, wcscpy, wcscat등, format
_____________________________________________________________________________________________________

출처 : Batmask Wiki :: 다국어 지원 프로그래밍
Posted by blueye
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함