2008-10-13 3 views
29

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

Я получил это сообщение, оно выглядит как кто-то использовал Babelfish, чтобы перевести его (это шведское): "System.ComponentModel.Win32Exception: Programmet Kunde инте Старта eftersom programmets сида-VID-sidakonfiguration är felaktig."

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

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

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

ответ

9

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

+2

Если вы измените CurrentCulture, это не изменит разделители десятичных чисел, сортировку строк, символы валюты , форматы даты и т. д.?Что серьезно раздражает ваших иностранных пользователей. – MarkJ 2009-03-13 15:56:19

+1

Вот полная строка: System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo («en-US»); – epotter 2009-08-19 20:41:01

+2

Есть ли другая возможность, кроме изменения Культуры, поскольку это может быть задано приложением для целей перевода. Исключение, однако, не следует переводить. Есть ли какие-либо пакеты для удаления на .Net-установке? – Juri 2009-11-11 13:48:33

2

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

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

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

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

2

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

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

0

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

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

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

3

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

Смежные вопросы