2017-02-22 6 views
0

J'ai regardé setlocale mais j'ai du mal à trouver ce que je cherche.Utiliser les bons codes avec setlocale

Dans mon code que j'ai:

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]); 
} 

Cela a fait et fonctionne toujours OK. Le format des dates est correct après avoir effectué cet appel.

Mais en regardant les liens fournis avec le sujet d'aide mentionné ci-dessus, je ne trouve pas de codes comme ptb etc répertoriés. Seulement pt-BR.

Je suppose que mes codes sont toujours valides et sont-ils documentés n'importe où?

Répondre

1

setlocale attend un nom de locale tel que documenté sous Locale Names, Languages, and Country/Region Strings. Un lieu peut être identifié par locale name:

Un nom locale est basé sur les conventions de marquage de la langue de la RFC 4646 (Windows Vista et versions ultérieures), et est représenté par LOCALE_SNAME. Généralement, le modèle <langue> - <REGION> est utilisé. Ici, la langue est un code de langue ISO 639 minuscule. Les codes de l'ISO 639-1 sont utilisés lorsqu'ils sont disponibles. Sinon, les codes de l'ISO 639-2/T sont utilisés.

[...]

Si les paramètres régionaux est un lieu neutre (pas de région), la valeur LOCALE_SNAME suit le modèle <langue>.

Une liste complète des codes de langage à trois lettres ISO 639-2 est publiée au wikipedia.