Предотвратить перевод сообщений об исключениях на язык пользователя?
-
10-07-2019 - |
Вопрос
Как заставить мое приложение всегда использовать английский язык при отображении сообщений об исключениях win32 / .net?
Я получил это сообщение, похоже, что кто-то использовал babelfish для его перевода (это шведский): " System.ComponentModel.Win32Exception: Programmet kunde inte starta eftersom programmes sida-vid-sidakonfiguration or felaktig. "
Чрезвычайно бесполезный, и у Google было 4 хита для этого, ни один из них не помог. Так что я должен угадать, что было оригинальное сообщение, и Google это. (Это было: " Приложение не запустилось, потому что его параллельная конфигурация неверна. & Quot;)
На этот раз было довольно просто выяснить, каково было исходное сообщение об ошибке, и наличие сообщения на английском языке с самого начала, конечно, сэкономило бы мне время.
Так как мне это сделать?
Решение
Вы можете попробовать установить Thread.CurrentThread.CurrentUICulture
и / или .CurrentCulture
в CultureInfo (" en-US ")
. р>
Другие советы
Еще одна причина, по которой исключения не должны переводиться (плохо). При регистрации исключений имеет смысл сделать это на одном языке. Я не могу поверить, что Microsoft не думала о способе сделать это, кроме UICulture, который в основном не вариант: (
Если это приложение ASP.NET, вы можете установить язык интерфейса в web.config (*):
<system.web>
<globalization ... uiCulture="en-US" ... />
</system.web>
Для других приложений региональные настройки текущего пользователя используются по умолчанию, и вы должны явно их переопределить - например, Thread.CurrentUICulture = new CultureInfo (" en-US ").
(*) Предостережение - если ошибка в файле конфигурации приводит к исключению, генерируемому до обработки элемента, вы получите uiCulture по умолчанию.
Принудительное отображение исключений на другом языке кажется пользователю довольно жестким ... Вы можете отобразить код ошибки вместе с сообщением? Затем пользователь получит то, что он может понять, и вы сможете найти код ошибки для переведенной версии.
Я не парень .net, поэтому я не знаю, возможно ли это, просто идея.
Как мне сделать свое заявление всегда использовать английский при отображении win32 / .net сообщения об исключениях?
Прежде всего, не показывает сообщения об исключениях win32 / .net пользователям . Вы должны обрабатывать исключения, а не показывать их пользователю.
По умолчанию сообщения об исключениях будут отображаться на текущем языке пользовательского интерфейса (если установлен соответствующий языковой пакет, в противном случае они переключаются на английский). Вы можете изменить сообщения об исключениях, изменив Thread.CurrentThread.CurrentUICulture , но это повлияет на весь графический интерфейс вашего приложения.