아직 확실하게 다가오지는 않는데.. 좀 뒤져 보고 하면 나올 것 같습니다.
감사합니다.
장성호 님이 쓰신 글 :
: exe는 당연히 하나입니다.
:
: 원래 exe파일안에 아이콘을 비롯한 text 및 이미지 등의 리소스들이 같이 들어가게 있습니다.
:
: window프로그램은 WinMain이 호출되기 전에
: GetModuleHandle이라는 api로 HInstance를 얻어서 WinMain을 호출하면서 넘겨줍니다.
:
: 만약 HInstance 에 다른 리소스 dll을 load해뒀다면 어떻게 될까요?
: 아마 Form을 생성하거나 Icon을 생성할때 HInstance 에서 리소스 정보를 가져와서 생성하는데..
: 그것이 모양은 똑 같지만 다른것으로 대체되어있다면 여러가지 언어 지원이 불가능할것 없겠죠
:
: 실제로 첨부한 파일에 보면 .exe는 하나에 같은 이름의 .ENU파일과 .KOR파일이 있습니다.
: Software\\Borland\\Locales 의 레지스터리 설정에 따라
: exe가 running될때 해당되는 .ENU나 .KOR가 로드 되어서 HInstance에 할당되는것 같습니다.
:
: 짧은 지식으로 설명하기 어렵네요
:
: 여기 강좌 자료실에있는
:
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tutorial&no=64
:
: C++Builder6.0 한글 메뉴얼에서 16장 국제적인 애플리케이션 생성의
: 16-10 리소스 DLL 생성
: 16-12 리소스 DLL의 동적 전환
:
: 부분을 참조하세요
:
: 첨부한 자료는 예전에 5.0으로 샘플 만들어 둔것을 6.0으로 다시 컴파일 해서 올린것입니다.
:
: 그럼....
:
:
:
: 이렇게 하면
: exe가 메모리에 mapping될때 리소스 자료를 해당 언어로
:
: 땅주인 님이 쓰신 글 :
: : 감사합니다.
: :
: : 이것 하나만 더 답해주실 수 있는 지?
: :
: : 하나의 프로그램(바이너리)이 두 개의 언어 리소스를 다 가지고 있다는 건데..
: :
: : Translation Manager로 만들어서 어쩌구저쩌구 하니까..
: : 한글 버젼, 영어 버젼 따로 바이너리가 만들어지던데..
: : 하나의 바이너리가 두 언어의 리소스를 다 가지고 있는 건가요? 아닌 것 같던데.. -.-;;;;;
: :
: :
: : 장성호 님이 쓰신 글 :
: : : 제어판에 언어설정이 아니구요
: : :
: : : 윈도우 레지스터리 Software\\Borland\\Locales 에 설정을 그냥 바꿔주는것입니다.
: : :
: : : 아래 함수로 지역 설정을 변경할수 있습니다.
: : : void SetLocalOverrides(char* FileName,char* LocaleOverride)
: : : {
: : : HKEY Key;
: : : const char* LocaleOverrideKey="Software\\Borland\\Locales";
: : : if( RegOpenKeyEx(HKEY_CURRENT_USER,LocaleOverrideKey,0,KEY_ALL_ACCESS,&Key)== ERROR_SUCCESS )
: : : {
: : : if(lstrlen(LocaleOverride)==3)
: : : RegSetValueEx(Key,FileName,0,REG_SZ,(const BYTE*)LocaleOverride,4);
: : : RegCloseKey(Key);
: : : }
: : : }
: : : //---------------------------------------------------------------------------
: : :
: : : 사용예
: : : void __fastcall TForm1::Button1Click(TObject *Sender)
: : : {
: : : SetLocalOverrides((Application->ExeName).c_str(),"KOR"); //한글로 설정
: : : }
: : : //---------------------------------------------------------------------------
: : : void __fastcall TForm1::Button2Click(TObject *Sender)
: : : {
: : : SetLocalOverrides((Application->ExeName).c_str(),"ENU"); //영어로 설정
: : : }
: : :
: : : 그런데 위와같이 변경하면 프로그램을 재시작해야 적용됩니다.
: : :
: : : 프로그램을 재시작하지 않고 run-time에 하는 방법도 있는 걸로 알고 있는데...
: : : LoadNewResourceModule , ReinitializeForms 로 google에서 검색해보세요
: : :
: : :
: : : 저도 Resource Dll Wizard를 사용해본지 너무 오래 되어서 기억이 가물가물 합니다.
: : : 프로그램을 재시작하지 않고 run-time에 바로 변경하는것은 해보지 않은 기능이구요
: : :
: : : 더 자세한것은 다른분들께..
: : :
: : : 그럼..
: : :
: : :
: : :
: : : 땅주인 님이 쓰신 글 :
: : : : 답변 감사합니다.
: : : : 그런데, 언어설정만 하면 된다고 하셨는데..제어판에서 언어 설정하는 걸 의미하나요?
: : : : (어쨌거나 영어로 컴파일한 건 영어버젼, 한국어로 컴파일하면 한국어 버젼인 거죠? )
: : : :
: : : : 제가 해야 할 것은..
: : : : 운영체재의 언어설정이나 이런 것에 상관없이....
: : : : 가령 프로그램이 사용하는 레지스트리에다가 영어 또는 말레이어로 설정해 놓고,
: : : : 동일한 프로그램으로 영어 또는 말레이어로 사용하는 것을 원하는 것입니다.
: : : :
: : : : 동일한 프로그램이 설정(레지스트리 또는 ini file)에 따라 영어 /한국어 등으로
: : : : 표현되어야 한다는 것입니다.
: : : :
: : : : 그냥 레지스트리 밖에 없는건가?
: : : :
: : : : 장성호 님이 쓰신 글 :
: : : : : 오래되서 잘 기억이 나지 않는데요..
: : : : :
: : : : : 메뉴의 File->New에 보면 Resource Dll Wizard라는 것이 있습니다.
: : : : :
: : : : :
: : : : : 이걸로 만들면 언어 설정만 하면 Design - Time에 결정 Caption들은 다 자동으로 가능합니다.
: : : : : 문론 Resurece Dll 만들때 영어 , 한국어 각 언어에 해당하는 string 리소스를 다 만들어 줘야하죠
: : : : :
: : : : : 안되는것도 있습니다.
: : : : : 코딩에서 직접 string을 입력되어있는것은 안됩니다.
: : : : :
: : : : : 개인적으로 코딩에 있는 string은 ini 파일을 이용했습니다.
: : : : :
: : : : : 그럼..
: : : : :
: : : : :
: : : : : 땅주인 님이 쓰신 글 :
: : : : : : 다국어 지원 프로그램을 제작해야 하는데..
: : : : : : 이리저리 뒤져서 Translation Manager를 찾아냈는데요..
: : : : : :
: : : : : : 한가지 의문,
: : : : : :
: : : : : : 해당 언어로 Compile하면 땡인거 아닌가요?
: : : : : : Build한 프로그램 자체가 한글버젼, 영어버젼,일본어 버젼 이렇게 되는 것이지요?
: : : : : :
: : : : : : 제가 필요한 것은 하나의 빌드에서 한글/영어가 동시에 지원되어야 하는데요..
: : : : : : 레지스트리나 기타 설정에서 이 프로그램을 한글로 쓰겠다고 하면 한글로 지원,
: : : : : : 영문으로 쓰겠다면 영문으로 지원하는 기능입니다.
: : : : : :
: : : : : : 말레이지아가 대상 국가인데.. 영어와 말레이어를 공통으로 쓰는데..
: : : : : : 웬만한 사람들은 영어와 말레이어를 같이 쓸 줄 알더군요. O/S도 영문을 쓰고요..
: : : : : :
: : : : : : 그래서, 하나의 빌드가지고 설정에 따라 말레이/영어로 전환하는 기능이
: : : : : : 필요합니다.
: : : : : :
: : : : : : 어떻게 해야 하나요?
: : : : : :
: : : : : : 리소스 파일(텍스트 파일이건, MDB던..)에 영어/말레이어 등록시키고,
: : : : : : 프로그램 실행 될 때 리소스 한꺼번에 다 읽어 들이고,
: : : : : : 설정에 따라 폼의 모든 컨트롤들의 켑션을 영어/말레이로 바꾸고,
: : : : : : 런타임 메세지도 설정에 따라 영어/말레이어로 표시하는 그런 식일 것으로 예상되는데..
: : : : : : 이 방법이 맞는 지? 상당히 노가다라....
: : : : : :
: : : : : : 좀 효율적인 방법은 ?
: : : : : :
: : : : : : 도와주세요..