Запретить перевод сообщений исключения на язык пользователя?

Как заставить приложение всегда использовать английский при отображении сообщений об исключениях win32/.net?

Я получил это сообщение, похоже, кто-то использовал babelfish для его перевода (это шведский): "System.ComponentModel.Win32Exception: программные программы для запуска программ eftersom sida-vid-sidakonfiguration är felaktig."

Чрезвычайно бесполезно, и у Google было 4 удара, но ни один из них не помог. Поэтому я должен угадать, что такое оригинальное сообщение, и Google. (Это было: "Приложение не запускалось, потому что его бок о бок конфигурация неверна." )

На этот раз было довольно просто узнать, что такое исходное сообщение об ошибке, если сообщение на английском языке с самого начала было бы, конечно, сэкономить мне время.

Итак, как мне это сделать?

Ответ 1

Вы можете попробовать установить Thread.CurrentThread.CurrentUICulture и/или .CurrentCulture на CultureInfo("en-US").

Ответ 2

Тем более, что исключения не должны быть переведены (плохо). При регистрации исключений это делает мук более разумным для этого на одном языке. Я не могу поверить, что Microsoft не думала о том, как сделать это иначе, чем UICulture, что в основном не является опцией: (

Ответ 3

Если это приложение ASP.NET, вы можете установить язык интерфейса пользователя в файле web.config(*):

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

Для других приложений региональные настройки пользователя используются по умолчанию, и вы должны явно переопределить их - например, Thread.CurrentUICulture = new CultureInfo ( "en-US" ).

(*) caveat - если ошибка в файле конфигурации приводит к тому, что исключение создается перед обработкой элемента, вы получите стандартную uiCulture.

Ответ 4

Принудительные исключения для отображения на другом языке кажутся немного суровыми для пользователя... можете ли вы отобразить код ошибки вместе с сообщением? Тогда пользователь получит то, что они могут понять, и вы можете найти код ошибки для переведенной версии.

Я не парень .net, поэтому я не знаю, возможно ли это, просто идея.

Ответ 5

Как мне сделать приложение всегда использовать английский при отображении win32/.net сообщения об исключениях?

Прежде всего, не показывайте пользователям сообщения об исключениях win32/.net. Вы должны обрабатывать исключения, а не показывать их пользователю.

По умолчанию сообщения об исключениях будут отображаться на текущем языке пользовательского интерфейса (если установлен соответствующий языковой пакет, в противном случае они возвращаются на английский язык). Вы можете изменять сообщения об ошибках, изменяя свойство Thread.CurrentThread.CurrentUICulture, однако это повлияет на весь графический интерфейс вашего приложения.