Предотвратить перевод сообщений об исключениях на язык пользователя? - PullRequest
30 голосов
/ 13 октября 2008

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

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

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

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

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

Ответы [ 5 ]

9 голосов
/ 13 октября 2008

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

4 голосов
/ 18 декабря 2008

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

2 голосов
/ 13 октября 2008

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

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

2 голосов
/ 13 октября 2008

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

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

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

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

0 голосов
/ 13 октября 2008

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

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

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

...