2017-02-22 74 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 name鑑定:

一個locale名是基於RFC 4646的語言標記約定(Windows Vista和更高版本),並通過LOCALE_SNAME表示。通常,使用<語言>-<地區>。這裏,語言是一個小寫的ISO 639語言代碼。可用時使用ISO 639-1的代碼。否則,使用ISO 639-2/T的代碼。

[...]

如果locale是中性區域(沒有區域),則LOCALE_SNAME值遵循模式<語言>。

ISO 639-2三字母語言代碼的完整列表發佈在wikipedia