2010-01-19 4 views
25

Моя визуальная студия - французский, установленный на французской ОС. Все исключения, которые я получаю во время отладки или выполнения, получают также на французском языке.За исключением случаев Язык на английском языке

Могу ли я, однако, что-то делать сообщения об исключениях в English? Для выпучив, обсуждения и т.д.

Я попробовал следующее:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); 
throw new NullReferenceException(); 

получены

объекта не задана ссылка на экземпляр объекта.

Это, безусловно, круто ... но, как я работаю на французский проект, я не буду жёстко принуждая Thread.CurrentUICulture на английский язык. Я хочу, чтобы изменения на английском были только на моей локальной машине и не изменяли свойства проекта.

Можно ли установить исключение язык без изменения кода приложения?


В VS установите Сервис -> Параметры -> Environment -> International Settings -> Language в "Английский" WND бросать же исключение получить сообщение ех ан-французски, однако: alt text http://lh4.ggpht.com/_1TPOP7DzY1E/S1V62xcvHAI/AAAAAAAAC7o/ckLDVFPKh5Y/s800/exception.png

+2

У меня такая же проблема с немецкой с английской визуальной студией, и даже эррос компилятора локализованы на немецком языке. (Что затрудняет их работу) –

+0

@Christian: см. Http://stackoverflow.com/questions/721337/forcing-english-language-exceptions-in-net-framework, возможно, это поможет вам ... – serhio

+0

Возможный дубликат [C# - Исключительные сообщения на английском языке?] (Http://stackoverflow.com/questions/209133/c-sharp-exception-messages-in-english) –

ответ

1

Наконец «резкое» решение может быть следующим:

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 

#if DEBUG 
    // Add this; Change the Locales(En-US): Done. 
    Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 
#endif 

    Application.Run(new Form1()); 
} 

Однако я хотел бы решение без изменений в коде проект .

От MSDN:

CurrentUICulture свойство будет установлено неявно, если приложение не указать CurrentUICulture. Если CurrentUICulture не установлен явно в коде приложения, оно устанавливается GetUserDefaultUILanguage функция на Windows 2000 и Windows XP Multilingual User Interface (MUI) продукции, где конечный пользователь может установить по умолчанию язык.Если пользовательский интерфейс пользователя не установлен, он будет установлен на системным языком, который является языком ресурсов операционной системы .

Если приложение веб-, то CurrentUICulture может быть установлен явно в коде приложения для браузера пользователя принимает языка.

10

Вы можете установить текущую культуру на английский язык только в отладочной версии:

#if DEBUG 
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); 
#endif 
+7

Не может ли сделать отладку ненадежной? Другие части проекта могут зависеть от культуры Франции. – Kobi

+1

@Thomas: да, но это изменение повлияет на всех других пользователей кода. Если мой менеджер проектов - старый французский человек, он обезглавит меня за это :) – serhio

+2

@ Kobi: большинство особенностей, связанных с культурой, таких как формат даты/времени/числа, зависит от CurrentCulture, а не от CurrentUICulture. CurrentUICulture влияет только на то, какие ресурсы используются. Если в культурах, отличных от французских, нет спутниковых сборок для ресурсов, то они откажутся от культуры по умолчанию –

0

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

+0

Что конкретно вы подразумеваете под моим «текущим языком пользовательского интерфейса»? Моя ОС - французская (например, имя кнопки «Пуск» - «Démarrer»), поэтому по умолчанию «CultureInfo.CurrentCulture.Name ==» fr-FR »' – serhio

+0

В ControlPanel я изменил «Региональные и языковые параметры» = > «Стандарты и форматы» - «Английские США», но это не помогло. – serhio

+0

Я говорю об одном наборе в международных настройках на панели управления (http://www.guidebookgallery.org/pics/gui/settings/international/winxppro-1-1.png). EDIT Теперь я увидел ваш комментарий ...Я не знаю, AFAIK, он должен так работать ... –

2

Uninstall французский языковой пакет:

Пуск - Панель управления - Программы и функции - Microsoft .NET Framework (4 Client Profile) Language Pack FRU - Uninstall

Вы, возможно, потребуется повторить процедуру удаления для каждой версии .NET Framework, которую вы там найдете.

4

Это известная проблема. Пожалуйста, проголосуйте за затруднительные здесь: https://connect.microsoft.com/VisualStudio/feedback/details/591839/exception-localization-in-app-config-and-web-config

+1

@ Hi-Angel Нет, он был закрыт как «не фиксированный». Не удалось найти новую запись на https://developercommunity.visualstudio.com/ –

+0

@LouisSomers Я просто помню, это был сарказм. Настолько тонко, что я сам этого не видел. Вероятно, это была ссылка на незнание MS запросов и ошибок вообще * (см., Например, проблемы с Skype) *. –

+0

@ Привет-Ангел Я делаю еще одну попытку в [репозитории DotNet на GitHub] (https://github.com/Microsoft/dotnet/issues/474#issue-256175151). К сожалению, у меня нет времени, чтобы исправить это сам и попросить их объединить его, но может быть, кто-то другой? –

0

Для любых/8.1 пользователей Win8 перед этой проблемой, установка английского языкового пакета и сделать его Windows, язык дисплея, кажется, только легким способом решить это как Win8 есть .net рамки, встроенные в ее ядро.

Возможно, то же самое для Win10.

0

Для блага всех будущих пользователей вашего приложения, поместите это в методе Главной:

CultureInfo.DefaultThreadCurrentUICulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 

Это сэкономит им хорошую массу неприятностей найти английский эквивалент аа плохо переведенное сообщения об ошибке ,