例外メッセージがユーザーの言語に翻訳されないようにしますか?

StackOverflow https://stackoverflow.com/questions/197127

質問

win32 / .net例外メッセージを表示するときにアプリケーションで常に英語を使用するにはどうすればよいですか

このメッセージを受け取りました。誰かがbabelfishを使って翻訳したようです(スウェーデン語です): " System.ComponentModel.Win32Exception:Programmet kunde inte starta eftersom programmets sida-vid-sidakonfigurationärfelaktig。

非常に役に立たず、Googleには4つのヒットがありましたが、どれも役に立たなかった。 だから私は元のメッセージが何であったかを推測し、それをグーグルで調べなければなりません。 (つまり、"アプリケーションのサイドバイサイド構成が正しくないため、アプリケーションの起動に失敗しました。")

今回は、元のエラーメッセージが何であるかを見つけるのはかなり簡単でした。最初から英語でメッセージを表示しておけば、もちろん時間を節約できます。

では、どのようにすればいいですか?

役に立ちましたか?

解決

Thread.CurrentThread.CurrentUICulture および/または .CurrentCulture CultureInfo(" en-US")に設定してみてください。

他のヒント

例外を翻訳するべきではない理由(ひどい)。 例外をログに記録するとき、単一の言語でそれを行う方がmucをより理にかなっています。 Microsoftがこれを行う方法をUICulture以外に考えていなかったとは信じられません。UICultureは基本的に非オプションです:(

ASP.NETアプリケーションの場合、web.config(*)でUI言語を設定できます:

<system.web>
    <globalization ... uiCulture="en-US" ... />
</system.web>

他のアプリケーションでは、現在のユーザーの地域設定がデフォルトで使用されます。明示的にオーバーライドする必要があります。 Thread.CurrentUICulture = new CultureInfo(&quot; en-US&quot;)。

(*)警告-構成ファイルのエラーにより、要素が処理される前に例外がスローされる場合、デフォルトのuiCultureが取得されます。

異なる言語で例外を強制的に表示することは、ユーザーにとって少し厳しいようです...メッセージとともにエラーコードを表示できますか?その後、ユーザーは理解できるものを取得し、翻訳バージョンのエラーコードを検索できます。

私は.netの男ではないので、これが可能かどうかはわかりませんが、ただのアイデアです。

  

アプリケーションを常に作成するにはどうすればよいですか   win32 / .netを表示するときに英語を使用する   例外メッセージ?

まず、 win32 / .net例外メッセージをユーザーに表示しない。例外をユーザーに表示するのではなく、処理する必要があります。

デフォルトでは、例外メッセージは現在のUI言語で表示されます(適切な言語パックがインストールされている場合は、英語にフォールバックします)。 Thread.CurrentThread.CurrentUICulture <を変更する例外メッセージを変更できます。 / a>プロパティ。ただし、アプリのGUI全体に影響します。

scroll top