例外メッセージがユーザーの言語に翻訳されないようにしますか?
-
10-07-2019 - |
質問
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全体に影響します。