2017-02-22 27 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. Как правило, шаблон < язык > - <REGION> используется. Здесь язык является строчным кодом языка ISO 639. Коды из ISO 639-1 используются, когда они доступны. В противном случае используются коды из ISO 639-2/T.

[...]

Если локаль является нейтральным языковым (нет региона), значение LOCALE_SNAME следует шаблон < языка >.

Полный список трехбуквенных кодов ISO 639-2 публикуется по адресу wikipedia.