2017-02-22 34 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