2010-01-19 5 views
25

Mon Visual Studio est un français, installé sur un système d'exploitation français. Toutes les exceptions que je reçois pendant le débogage ou l'exécution sont également disponibles en français.Force la langue d'exceptions en anglais

Puis-je faire quelque chose que les messages d'exceptions soient dans English? Pour exorbités, discuter, etc.

J'ai essayé les éléments suivants:

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

obtenu

Référence d'objet non définie à une instance d'un objet.

C'est, sûrement, cool ... mais, comme je travaille sur un projet français, je ne hardcode forcer Thread.CurrentUICulture à l'anglais. Je veux que le changement en anglais soit seulement sur ma machine locale, et ne change pas les propriétés du projet.

Est-il possible de définir les exceptions langue sans modifier le code de l'application?


Dans VS , définissez les Outils -> Options -> Environnement -> Paramètres internationaux -> Langue à WND "Anglais" jeter la même exception obtenir le message d'ex en français, cependant: alt text http://lh4.ggpht.com/_1TPOP7DzY1E/S1V62xcvHAI/AAAAAAAAC7o/ckLDVFPKh5Y/s800/exception.png

+2

J'ai le même problème avec l'allemand avec le studio visuel anglais et même les erreurs de compilateur sont localisées en allemand. (Ce qui rend les googling difficiles) –

+0

@Christian: Voir le http://stackoverflow.com/questions/721337/forcing-english-language-exceptions-in-net-framework peut-être cela vous aidera ... – serhio

+0

duplication possible de [C# - Messages d'exception en anglais?] (Http://stackoverflow.com/questions/209133/c-sharp-exception-messages-in-english) –

Répondre

1

Enfin une solution "forte" pourrait être la suivante:

[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()); 
} 

Cependant, je voudrais une solution sans modifications dans le projet Code.

De MSDN:

Le CurrentUICulture propriété sera est implicitement si une application ne spécifie un CurrentUICulture. Si CurrentUICulture est pas explicitement définie dans le code d'une application, il est défini par la fonction GetUserDefaultUILanguage sur Windows 2000 et Windows XP Interface utilisateur multilingue (MUI) produits pour lesquels l'utilisateur final peut définir la valeur par défaut la langue.Si la langue de l'interface utilisateur de l'utilisateur n'est pas définie, elle sera définie par la langue installée par le système, étant la langue des ressources du système en cours d'utilisation.

Si une application est basée sur le Web, le CurrentUICulture peut être défini explicitement dans le code d'application pour navigateur accepter la langue de l'utilisateur.

10

Vous pouvez définir la culture actuelle en anglais seulement debug:

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

Cela ne rendrait-il pas le débogage peu fiable? D'autres parties du projet pourraient dépendre de la culture de la France. – Kobi

+1

@Thomas: oui, mais ce changement affectera tous les autres utilisateurs de code. Si mon chef de projet est un vieil homme français, il me décapitera pour ça :) – serhio

+2

@Kobi: la plupart des comportements spécifiques à la culture comme la date/heure/le formatage du nombre dépendent de CurrentCulture, pas de CurrentUICulture. CurrentUICulture affecte uniquement les ressources utilisées. S'il n'y a pas d'assemblages satellites pour les ressources dans les cultures autres que le français, il retombera de toute façon sur la culture par défaut –

0

Je n'ai pas essayé, mais selon la documentation que la propriété de doit être défini par défaut sur la langue de l'interface utilisateur actuelle, définie dans le panneau de configuration. Donc, cela devrait fonctionner correctement automagiquement selon vos paramètres internationaux.

+0

que voulez-vous dire exactement par "langue d'interface utilisateur actuelle"? Mon OS est français (par exemple le bouton "Démarrer" est "Démarrer"), donc par défaut 'CultureInfo.CurrentCulture.Name ==" fr-FR "' – serhio

+0

Dans ControlPanel, j'ai changé le "Regional and language options" = > "Standards et formats" pour être "English US", mais cela n'a pas aidé. – serhio

+0

Je parle de celui défini dans les paramètres internationaux dans le Panneau de configuration (http://www.guidebookgallery.org/pics/gui/settings/international/winxppro-1-1.png). EDIT J'ai vu maintenant votre commentaire ...Je ne sais pas, AFAIK cela devrait fonctionner comme ça ... –

2

Désinstaller le pack de langue française:

Démarrer - Panneau de configuration - Programmes et fonctions - Microsoft .NET Framework (4 Profil client) Langue FRU Pack - Désinstaller

Vous devrez peut-être répéter la désinstallation pour chaque version de .NET Framework que vous trouvez là.

4
+1

@ Salut-Angel Non, il a été fermé comme "non fixé". Impossible de trouver une nouvelle entrée sur https://developercommunity.visualstudio.com/ –

+0

@LouisSomers Je me souviens juste, c'était un sarcasme. Si subtile que je ne l'ai pas vu moi-même. C'était probablement une référence à l'ignorance de MS des demandes et des bogues en général * (voir par exemple les problèmes de Skype) *. –

+0

@ Hi-Angel Je fais une autre tentative au [dépôt DotNet sur GitHub] (https://github.com/Microsoft/dotnet/issues/474#issue-256175151). Malheureusement, je n'ai pas le temps de le réparer moi-même et de leur demander de le fusionner, mais peut-être que quelqu'un d'autre le fait? –

0

Pour toute Win8/8.1 utilisateurs face à ce problème, l'installation du pack anglais et en font le affichage Windows langue semble être seul moyen facile de le résoudre comme Win8 a .net cadre construit dans son noyau.

Probablement la même chose pour Win10.

0

Pour le bien de tous les futurs utilisateurs de votre application, placez ce au principal méthode:

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

Il sauverai un bon beaucoup de mal à trouver l'équivalent anglais aa message d'erreur mal traduit .

Questions connexes