2017-12-20 3 views
0

저는 Visual Studio에서 VC++, MFC를 사용하는 다국어 응용 프로그램을 개발 중입니다. 각 언어에 대해 .rc 파일을 따로 보관하고 있습니다.
다국어 지원을 위해 .rc 파일을 사용 /로드하는 방법은 무엇입니까?

English.rc //having string table for English language 
French.rc //having string table for French language 
German.rc  //having string table for German language 

각 언어는 문자열 테이블이 유지 데 말한다.
함수 LoadString(ID_HERE)을 사용하여 문자열 테이블에서 문자열 값을 가져올 수 있습니다. 나는 다른 언어에 대한 문자열을 얻을 수 있도록 다른 언어 .rc 파일을 링크하고 싶다. 기본적으로 English.rc 파일이 프로젝트와 연결되어 있습니다. 나는 그것을 다른 .rc 파일로 어떻게 바꿀 수 있는지 알고 싶다.

런타임시 특정 언어 .rc 파일을로드/링크하거나 드롭 다운 상자에서 언어를 선택하여 언어를 변경할 수 있습니까?
DLL 메서드를 사용하고 싶지 않습니다. .rc 파일을 프로젝트에 연결하는 직접적인 방법이 있습니까?

+2

* ". 나는 그것을 위해 DLL 방법을 사용하지 않습니다"* : 언어 리소스 DLL이 같은 종류의 작동

리소스 스크립트를 리소스 전용 모듈로 컴파일하는 것이 표준 솔루션입니다. [응용 프로그램에 다국어 사용자 인터페이스 지원 추가] (https://msdn.microsoft.com/en-us/library/windows/desktop/ee845043.aspx)를 참조하십시오. – IInspectable

+0

@IInspectable 몇 개의 링크를 확인했습니다. 그들 중 하나에서 모든 .rc 파일을 함께 추가하고 그것을 사용하여 별도의 DLL을 만들었습니다. 나는 당신이 제공 한 링크도 비슷한 'HelloModule.dll'을 가지고 있다고 생각한다. – Himanshu

+0

내가 링크 된 튜토리얼은 언어마다 개별적인 MUI 모듈을 생성하고 언어 중립성 * "HelloModule.dll"* 파일 (코드와 언어 모두 포함) 중립적 인 후퇴 자원. 특정 리소스의 다중 언어 버전을 동일한 모듈에 저장할 수는 있지만 언어 별 MUI 파일을 자동으로 검색하여 시스템의 MUI 지원 기능을 사용할 수 없게됩니다. 자세한 내용은 [LANGUAGE 문] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa381019.aspx)의 설명서를 참조하십시오. – IInspectable

답변

0

그건 그렇고. 리소스 dll을 만들고 리소스 dll을로드해야합니다. 또 다른 방법은 언어에 따라 조건에 따라 모든 리소스를 사용하는 것입니다. 그런 다음 MFC는 운영 체제 언어를 기반으로 리소스를 선택합니다. 그러나 큰 프로젝트에서는 모든 언어를 동기화 상태로 유지하는 것이 거의 불가능하며 사용자는 표시된 언어를 제어 할 수 없습니다. 나는 그는 뜻 있는지 모르겠지만 -

HMODULE hm = ::LoadLibrary(language_dll); 
if(hm) 
{ 
    AfxSetResourceHandle(hm); 

    if(m_hLanguageDLL) 
     ::FreeLibrary(m_hLanguageDLL); 
    m_hLanguageDLL = hm; 
} 
관련 문제