2009-04-06 13 views
32

ASP.NET MVCで作業しているときに、自分のシステムにインストールされている.NETフレームワークによって発行された例外メッセージがドイツ語であることに気付きました。私は本当に英語のメッセージを好むので、私はそれらをSOに掲示することができます。.NETフレームワークで英語の例外を強制する

これは前に尋ねられたことは知っていますが、奇妙なことに、私の場合は推奨された回避策のどれもうまくいかないようです。私はすでに、次の試してみました:

  • は、英語ロケールに私のWindowsシステムを切り替えて再起動のVisual Studioを
  • 設定ツール - >オプション - >環境 - >インターナショナル設定 - >言語の「英語」
  • 例外がスローされる直前に、スレッドロケールを英語に設定します。

    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture( "en-US"); Thread.CurrentThread.CurrentUICulture = new CultureInfo( "en-US");

    //私の障害のあるメソッドを呼び出すには...だから

は、どのように私は、.NETフレームワークの問題英語の例外メッセージを作ることができますか?そして、ソリューションごと、あるいはシステム全体でこれを行うアプローチはありますか?

編集:ユニットテストの実行中に例外がスローされます。これが理由であればスレッドの文化が効果を発揮しなかったかどうかはわかりません。

+0

あなたは、Windowsのオプションを設定している場合は、Visual Studioを再起動する必要があります。あなたはそれを試しましたか?さもなければ、この問題は確かにむしろ奇妙に思えるでしょう。 – Noldorin

+0

はい、私はロケールを設定した後にVSを復元しました。 –

+0

[C# - 例外メッセージは英語で表示されますか?](http://stackoverflow.com/questions/209133/c-sharp-exception-messages-in-english) –

答えて

9

私が知りましたように、問題は確かに別のテストプロジェクトを持つことに関連していました。私は実際のプロジェクトでUI言語を英語に設定しようとしましたが、テストプロジェクトで同じことをしませんでした。なぜなら、テスト結果を見ても例外メッセージはドイツ語で表示されていたからです。

例外がスローされる直前のテストメソッドでUI言語を設定することは、私のためのトリックでした。 - [コントロールパネル] - [プログラムと機能 - マイクロソフト

スタート:

+0

デバッグ中にトレースポイントにUI言語を設定すると、中断することなく実行を継続できます(常に表示されるわけではない例外の場合)。 例外をスローすると予想される行にブレークポイントを設定し、このメッセージを「印刷」します。 '{System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(" en-us " );} ' –

1

例外テキストを読み取る直前にカルチャを切り替えてみましたか?例外オブジェクトが作成されたときとは異なり、メッセージにアクセスするときにローカライゼーションが発生する可能性があります。

+0

良い点。私の場合、単体テストの実行中に例外がスローされます。この場合、例外テキストが別のスレッドで読み取られるかどうかはわかりません。 –

+0

"string message = ex.Message"コード(またはあなたの持つもの)の直前で現在のスレッドのUIカルチャを設定してみることができますか? – dommer

+0

メッセージはテストランナーによって読み取られました。例外がスローされる直前にユニットテストメソッドでUI言語を設定するのは難点でした。 –

7

にUI培養を「en」に設定しましたか?詳細情報here

3

明らかに、すべてのフレームワーク例外メッセージは、インストールされたOS言語にバインドされています。したがって、Windowsの英語版をインストールしない限り.Net Frameworkの例外は英語では表示されません。 CurrentUICultureを "en-US"に設定しても役に立たないとは思えますが、オランダのWindows OSでこのような回避策を使用して英語のメッセージを表示しました。

9

は、ドイツ語の言語パックをアンインストールします。NET Framework(4クライアントプロファイル)言語パックDEU - アンインストール(削除)

.NET Frameworkのバージョンごとにアンインストールを繰り返す必要がある場合があります。

+0

なぜdownvoteですか? – tomsv

+0

合意。それは便利です。それはOPの問題を(わずかに異なる)方法で解決し、他の人にとっては間違いなく有用です。私は補償するためにあなたをアップしました。 :) –

+3

言語パックはWindows 8以降では使用されません.NETではOSの言語が使用されます –

2

私は、web.configファイルに以下の変更を試みたし、それが助けた:

<system.web> 
    <globalization uiCulture="en-US" culture="en-US" /> 
... 
関連する問題