Thread.CurrentThread.CurrentCulture
が特定の言語を使用しているかどうかを検出する方法が必要です。CultureInfoが特定の言語を使用しているかどうかを判断する別の方法はありますか?
特に、国/地域にかかわらず、CurrentCulture
CultureInfo
オブジェクトが「英語」をサポートしているかどうかを検出する必要がありますが、他の言語もチェックする可能性があります。
私は英語CultureInfo
オブジェクトのName
sがen-
を前に付けた後、地域(US
、GB
など)されることを知っている - 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
ステートメントを使用するのが最善の方法ですか?
あなたの助けを事前に感謝と提案:)非常にエレガントな解決策は何も本当にありません
達成しようとしていることは何ですか? – CharithJ
@CharithJ - 私は、ローカライズされた文字列とは特に関係ないことを指摘する必要があります(私は言語固有の.resxファイルを使用しています)。私は、各顧客のアプリのバージョンごとにアプリ固有の設定用の設定ファイルを持っています。特に、この設定には文字列があります(「WelcomeText」と呼ぶこともあります)。そのため、一部のお客様は「こんにちは」や「ようこそ」(すべて英語)などが好きかもしれません。しかし、アプリを別の言語で利用できます。その言語がコードで「英語以外」であるかどうかを確認し、その言語に基づいてローカライズ版を使用したいと考えています。 –
いくつの言語をサポートしていますか? – CharithJ