2017-02-22 10 views
0

나는 setlocale을 보았지만 내가 찾고있는 것을 찾는 데 어려움을 겪고있다. 내 코드에서setlocale에서 올바른 코드 사용

나는이 :

이 행한
void CMeetingScheduleAssistantApp::SetLocale() 
{ 
    CString strLang[NUM_LANGUAGES] = 
    { 
     _T("eng"), _T("deu"), _T("esp"), _T("ita"), 
     _T("plk"), _T("fra"), _T("ptb"), _T("nld"), 
     _T("sve"), _T("slv"), _T("csy"), _T("fin"), 
     _T("dan"), _T("ukr"), _T("rus"), 
     _T("eng"), /*_T("fpo") Tagalog */ 
     _T("eng"), /* Haitian Creole */ 
     _T("eng"), /* Afrikaans */ 
     _T("sqi"), 
     _T("chs"), /* Chinese (Simplified) */ 
     _T("hrv"), 
     _T("trk"), 
     _T("eng"), /* Twi */ 
     _T("swk"), // AJT v11.3.4 
     _T("eng"), // _T("eti") Estonian AJT v12.0.5 
     _T("rom"), // Romanian AJT v12.0.8 
     _T("ell"), // Greek AJT v13.0.0 
     _T("bgr"), // Bulgarian AJT v13.0.2 
     _T("eng"), // Malagasy AJT v14.0.4 
     _T("ara"), // Arabic AJT v16.0.0 
     _T("ind"), // Indonesian AJT v16.0.2 
     _T("hin"), // Hindi AJT v16.0.7 
     _T("tai"), // Tamil AJT v16.1.0 
     _T("vit"), // Vietnamese v16.1.1 
     _T("eng"), // Zulu AJT v16.1.6 
     _T("eng"), // Gun AJT v17.0.9 
     _T("ln-CG"), // Lingala v17.0.9 
     _T("ptg") // Portuguese Portugal v17.1.0 
     // Add more languages here 
    }; 

    _tsetlocale(LC_ALL, strLang[m_eLanguage - LANGUAGE_ENGLISH]); 
} 

항상 확인을 작동합니다. 이 전화를 한 후에 날짜 형식이 맞습니다.

위의 도움말 항목과 함께 제공되는 링크를 보면 ptb 등의 코드를 찾을 수 없습니다. pt-BR

본인의 코드가 유효하고 어디에서나 문서화되어 있다고 가정합니다.

답변

1

setlocale에는 Locale Names, Languages, and Country/Region Strings에 문서화 된대로 로캘 이름이 필요합니다.

locale 이름은 RFC 4646의 언어 태깅 규칙 (Windows Vista 이상)를 기반으로하고, LOCALE_SNAME에 의해 표현된다 : 로케일은 locale name 식별 할 수 있습니다. 일반적으로, 패턴 < > - < 영역 >이 사용됩니다. 여기에서 언어는 소문자 ISO 639 언어 코드입니다. 사용 가능한 경우 ISO 639-1의 코드가 사용됩니다. 그렇지 않으면 ISO 639-2/T의 코드가 사용됩니다.

[...]

로케일 중립 로케일 (NO 영역) 인 경우는 LOCALE_SNAME 값은 패턴 < 언어 > 따른다.

ISO 639-2 3 문자 언어 코드의 전체 목록은 wikipedia에 게시됩니다.