2013-10-21 8 views
5

に文化の表示名を取得します。次のように私は、現在のカルチャを取得していますその言語

var culture = Thread.CurrentThread.CurrentCulture.DisplayName; 

問題は、私は常に英語で名前を取得することです:

  • ENは英語
  • なりPTはポルトガル語の代わりにポルトガル語になります
  • フランスはフランス語になりません...

特定の言語の文化のDisplayNameを取得するにはどうすればよいですか?

は、あなたが代わりに DisplayNameNativeNameを表示する必要が ミゲル

+0

ディスプレイの言語の名前を表示します現在の.netフレームワークの場所。名前またはネイティブ名を使用します。 –

+0

これらの仕事のどちらも...どちらも英語で私を迎えます –

答えて

10

、ありがとうございました。

+1

それは動作しません...とにかく私は英語を取得します...私のOSは英語である可能性がありますか? –

5

DisplayNameは、現在の.NETフレームワークの場所の言語で表示されます。

DisplayNameの代わりにNativeName(または、おそらくちょうどName私はこれを試していない)を使用することができます。

編集

次のコードでこれをテストした後:

// set the current culture to German  
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); 
var native = Thread.CurrentThread.CurrentCulture.NativeName; 
var display = Thread.CurrentThread.CurrentCulture.DisplayName; 
var name = Thread.CurrentThread.CurrentCulture.Name; 

結果であった:

"ドイツ(ドイツ)" =ネイティブ

表示= 「ドイツ(ドイツ)」

(名=「脱DE」

0

につながりました1このスニペットを使用することができます)国なし:1は、特定のローカライズされた言語名を使用する場合

CultureInfo culture = Thread.CurrentThread.CurrentCulture; 

string nativeName = culture.IsNeutralCulture 
    ? culture.NativeName 
    : culture.Parent.NativeName; 

は、一つは、これを使用することができます。

string language = "es-ES"; 
CultureInfo culture = new CultureInfo(language); 

string nativeName = culture.IsNeutralCulture 
    ? culture.NativeName 
    : culture.Parent.NativeName; 

タイトルケース名(例:代わりにフランス語のフランス語)、このラインを使用:

private static string GetTitleCaseNativeLanguage(string language) 
{ 
    CultureInfo culture = new CultureInfo(language); 

    string nativeName = culture.IsNeutralCulture 
     ? culture.NativeName 
     : culture.Parent.NativeName; 

    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName); 
} 

または延長法として:方法として

string result = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName); 

public static string GetNativeLanguageName(this CultureInfo culture, bool useTitleCase = true) 
{ 
    string nativeName = culture.IsNeutralCulture 
     ? culture.NativeName 
     : culture.Parent.NativeName; 

    return useTitleCase 
     ? CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName) 
     : nativeName; 
} 
関連する問題