2017-02-22 9 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名は(Windows Vistaおよびそれ以降)RFC 4646の言語タグ付け規則に基づき、及びLOCALE_SNAMEで表されています。一般に、パターン<の言語>-<のREGION >が使用されます。ここでは、言語は小文字のISO 639言語コードです。 ISO 639-1のコードが使用可能な場合に使用されます。それ以外の場合は、ISO 639-2/Tのコードが使用されます。

[...]

ロケールがニュートラルロケール(NO領域)である場合に、LOCALE_SNAME値はパターン<言語>に従います。

ISO 639-2の3文字の言語コードの完全なリストはwikipediaで公開されています。

関連する問題