2016-11-18 4 views
1

Thread.CurrentThread.CurrentCultureが特定の言語を使用しているかどうかを検出する方法が必要です。CultureInfoが特定の言語を使用しているかどうかを判断する別の方法はありますか?

特に、国/地域にかかわらず、CurrentCultureCultureInfoオブジェクトが「英語」をサポートしているかどうかを検出する必要がありますが、他の言語もチェックする可能性があります。

私は英語CultureInfoオブジェクトのName sがen-を前に付けた後、地域(USGBなど)さ​​れることを知っている - MSDN's Table of Language Culture Name and Codesによります。

現在のカルチャ名がen-接頭辞「で始まる」のであれば、私は単純にチェックできる:

var currentCultureName = Thread.CurrentThread.CurrentCulture.Name; 
if (currentCultureName.StartsWith("en-")) 
{ 
    // We have an English language culture 
} 

EDIT:同様に(Evkが指摘など) - 私はTwoLetterISOLanguageNameを使用した場合、私は、同じ結果に終わる可能性:

var twoLetterISOLanguageName = 
          Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName; 

if (twoLetterISOLanguageName.Equals("en", StringComparison.InvariantCultureIgnoreCase)) 
{ 
    // We have an English language culture 
} 

代替、またはmがありますこれをチェックする鉱石型の安全な方法です。他の言語を検出する必要性があります(例:フランス語、ドイツ語など)? - 潜在的に大きなswitch文を書く必要がありません。

または、私が上記で使用しているものですか?switchステートメントを使用するのが最善の方法ですか?

あなたの助けを事前に感謝と提案:)非常にエレガントな解決策は何も本当にありません

+0

達成しようとしていることは何ですか? – CharithJ

+0

@CharithJ - 私は、ローカライズされた文字列とは特に関係ないことを指摘する必要があります(私は言語固有の.resxファイルを使用しています)。私は、各顧客のアプリのバージョンごとにアプリ固有の設定用の設定ファイルを持っています。特に、この設定には文字列があります(「WelcomeText」と呼ぶこともあります)。そのため、一部のお客様は「こんにちは」や「ようこそ」(すべて英語)などが好きかもしれません。しかし、アプリを別の言語で利用できます。その言語がコードで「英語以外」であるかどうかを確認し、その言語に基づいてローカライズ版を使用したいと考えています。 –

+0

いくつの言語をサポートしていますか? – CharithJ

答えて

1

、何を示唆していることは、いくつかの言語のために悪いわけではありません。ニュートラルカルチャーを返すCultureInfo.Parent Propertyを使用することができます。

複数の親言語が利用可能な階層がある場合、いくつかの問題があります(たとえば、繁体字中国語、台湾など)。しかし、DE、FR、ENではこれがうまくいくはずです。

var neutralCulture = Thread.CurrentThread.CurrentCulture.Parent.Name; 

if (neutralCulture.Equals("en", StringComparison.OrdinalIgnoreCase)) 
{ 
    // We have an English language culture 
} 
else if (neutralCulture.Equals("fr", StringComparison.OrdinalIgnoreCase)) 
{ 
    // We have a French language culture 
} 
else if (neutralCulture.Equals("de", StringComparison.OrdinalIgnoreCase)) 
{ 
    // We have a German language culture 
} 
+0

あなたの答えをありがとう。おそらく、あなたが私の提案と比較して私の提案から恩恵を受ける方法を説明できますか?私が見ることができるのは 'CurrentCulture.Parent.Name'と余分な' else if'文です。 –

+0

CurrentCulture.Nameを使用しましたが、おそらくCurrentCulture.Parent.Nameがやや良いです。 – CharithJ

+0

提案をありがとう。 2と、 'CurrentCulture.Parent'の利点との違いは何ですか? –

関連する問題