2012-11-21 2 views
9

auf Windows 8 Visual Studio 2012 RC auf einem Deutsch-System, ich alle meine Ausnahmen Deutsch lokalisiert, was effektiv bedeutet, dass ich nichts für sie nützlich google kann. Um dies zu lösen, habe ich bereits folgenden meine IDE auf Englisch Sprache zu ändern:Get Englisch Nachricht Ausnahme statt lokaler Sprache

Tools --> Options --> Internetional Settings --> Language --> English 

Trotzdem ich meine Ausnahmen in der lokalisierten Sprache Deutsch. Ich habe versucht, die ThreadUI Kultur in Code zu ändern diesen Code verwenden:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us"); 

Leider in WinRT der Thread-Namespace ist in WinRT gegangen. Deshalb habe ich versucht:

System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-us"); 

ich noch die Deutsch Ausnahmemeldung erhalten. Kann jemand die un-lokalisierte Version der Ausnahmemeldungen erhalten?

+0

Übersetzungs? :) – mcalex

+1

Ich werde für mindestens zwei Monate in diesem System arbeiten, und ich möchte wirklich nicht alles, was ich Google google übersetzen. – Akku

+0

hast du gesehen: http://stackoverflow.com/questions/209133/c-sharp-exception-messages-in-english. unlocalize.com sieht nützlich aus – mcalex

Antwort

-5

Ausnahmen haben lokalisierte Nachrichten von Design, es ist Verhalten gewünscht. Sie sollten Ihre lokalen Computereinstellungen ändern.

+1

Dies würde eine bessere Antwort, wenn Sie erklärt, wie er über das tut dies gehen könnte, und vielleicht auch darüber, warum die IDE-Einstellungen wirken sich nur auf die IDE selbst aus und nicht auf Programme, die mit der IDE kompiliert wurden und von dieser ausgeführt werden. – TomH

+0

... und wenn das OP sagte, dass er das nicht tun wird oder kann. – mcalex

+3

Nun, die Nachrichten sind da, das Problem ist da, und eine programmatische Lösung ist für .NET 4 und niedriger trotz der fragwürdigen Gestaltung von Ausnahmen (über das Ändern von Thread-Locale) verfügbar, so dass ich nicht sehen kann, warum es nicht sein sollte eine Lösung für .NET 4.5. Diese Antwort ist faul und passt nicht zu meiner Frage. – Akku

2

Die andere Option ist die Exception.HResult Wert abzurufen und anzuzeigen, die auf und wandte sich in Englisch zu einem nützlichen Fehlermeldung gesucht werden kann.

Eine andere Möglichkeit, wenn diese Ausnahmen Win32-Codes haben, wenn auch ein Hack:

[DllImport("kernel32.dll", 
      EntryPoint = "FormatMessageW", 
      SetLastError = true, 
      CharSet = CharSet.Auto)] 
private static extern int FormatMessage(
    int dwFlags, 
    IntPtr lpSource, 
    int dwMessageId, 
    int dwLanguageId, 
    StringBuilder lpBuffer, 
    int nSize, 
    IntPtr[] Arguments); 

// used like: 
var builder = new StringBuilder(2048); 
var res = FormatMessage(
    0x1000|0x0200/*System Message, Ignore Inserts*/, 
    IntPtr.Zero, 
    exception.HResult, 
    new CultureInfo("en-US").LCID, 
    builder, 
    builder.Capacity, 
    null); 
Console.WriteLine("{0}", builder.ToString()); 
// throw new StackOverflowException() 
// "Recursion too deep; the stack overflowed." 
+0

Ich werde das heute versuchen und akzeptieren, wenn es bequem ist. Vielen Dank. – Akku

Verwandte Themen