2016-10-27 2 views
1

system error codes을 특정 언어로 번역 할 수 있습니까?FormatMessage를 다른 언어로

MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)부터 FormatMessage까지만 전달할 수 있습니다. 그렇지 않으면 함수 호출이 15100 (리소스 로더가 MUI 파일을 찾지 못함)으로 실패합니다.

시스템 오류 메시지는 어디에 저장됩니까? 시스템과 다른 로케일로 메시지를로드 할 수없는 이유는 무엇입니까?

+0

테스트 용이라면 특정 언어를 컴퓨터에 설치할 수 있습니다. 그렇지 않으면 그냥'MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT)'를 사용하거나 복잡한 목표가 있습니까? –

+0

실제로 오류 알림 메커니즘을 통일하고 싶습니다. 즉 시스템 오류 코드를 현재 응용 프로그램에서 선택한 언어로 번역하고 싶습니다. –

답변

2

기본적으로 MUI는 다국어 사용자 인터페이스를 의미합니다. 이들은 언어 팩입니다. 창문에서는 기본적으로 그것들을 얻지 못할 것입니다. 대신 설치해야합니다.

아래 링크는 조달과 관련하여 도움이됩니다. 기본 창 (10)에 대해 위의 페이지가 표시함으로써

https://support.microsoft.com/en-us/help/14236/language-packs

. 다른 버전의 창을 선택하기위한 드롭 다운 옵션이 있습니다.

위의 링크에 어려움이 있으시면 google에서 Windows 10 또는 다른 버전의 MUI 언어 팩을 검색하십시오.

2

MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)이 아닌 언어 ID에 0을 사용하십시오. 그런 다음 FormatMessage은 스레드의 언어 ID를 기반으로 자원을 선택하거나 GetUserDefaultLangID을 사용합니다.

FormatMessage 문서 :

DWORD WINAPI FormatMessage(
    _In_  DWORD dwFlags, 
    _In_opt_ LPCVOID lpSource, 
    _In_  DWORD dwMessageId, 
    _In_  DWORD dwLanguageId, 
    _Out_ LPTSTR lpBuffer, 
    _In_  DWORD nSize, 
    _In_opt_ va_list *Arguments 
); 

dwLanguageId

:

이 매개 변수의 특정 LANGID를 전달하면

FormatMessage는 그 LANGID으로 만 메시지를 반환합니다. 함수가 해당 LANGID에 대해 메시지를 찾을 수 없으면 Last-Error를 ERROR_RESOURCE_LANG_NOT_FOUND으로 설정합니다. 당신이 제로에 전달하면 , FormatMessage 다음 위해 LANGIDs에 대한 메시지를 찾습니다

  1. 언어 중립적
  2. 스레드 LANGID, 스레드의 로케일 값
  3. 사용자 기본 LANGID를 기반으로 기반 사용자의 기본 로케일 값에서
  4. 시스템 기본 로케일 값을 기준으로 한 시스템 기본 LANGID
  5. 영어 영어
관련 문제