오늘은 언어 설정값을 읽어오는 방법을 알아보겠습니다.
배포하는 프로그램이 다국어를 지원하는 경우, 현재 System Locale 무엇인지 알아야 합니다.
이것은 제어판 -> 시계 및 국가 -> 국가 또는 지역 -> 관리자 옵션 탭에서 시스템 로캘 변경을 눌러 알 수 있습니다.
해당 Locale 값을 GetUserDefaultUILanguage 함수를 통해 알아 볼 수 있습니다.
GetUserDefaultUILanguage를 사용하기 위해선 아래 조건을 만족해야합니다.
Minimum supported client | Windows 2000 Professional [desktop apps | UWP apps] |
Minimum supported server | Windows 2000 Server [desktop apps | UWP apps] |
Header | winnls.h (include Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |
함수 원형은 아래와 같습니다.
LANGID GetUserDefaultUILanguage();
파라미터는 없으면 LANGID 형식으로 반환이 됩니다.
이렇게 반환된 LANGID에서 Primary Language ID(0 ~ 8)에 현재 로캘이 저장되어 있습니다.
PRIMARYLANGID를 사용하여 해당 위치의 값만 빠르게 얻을 수 있습니다.
전체 코드는 아래와 같습니다.
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
LANGID lang_id = GetUserDefaultUILanguage();
cout << "language id : 0x" << hex << lang_id << endl;
LANGID pri_lang_id = PRIMARYLANGID( lang_id );
cout << "primary language id : 0x" << hex << pri_lang_id << endl;
if ( pri_lang_id == LANG_KOREAN )
cout << "LANG_KOREAN" << endl;
else if ( pri_lang_id == LANG_JAPANESE )
cout << "LANG_JAPANESE" << endl;
}
출력 결과는 아래와 같습니다.