2010-01-19 19 views
25

Mi Visual Studio es uno francés, instalado en un sistema operativo francés. Todas las excepciones que recibo durante depuración o tiempo de ejecución también obtengo en francés.Idioma de excepciones de fuerza en inglés

¿Puedo hacer algo para que los mensajes de excepción estén en Inglés? Para goggling, discutiendo etc.

I intentado el siguiente:

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

obtenido

referencia a objeto no establecida como una instancia de un objeto.

Este es, sin duda, fresco ... pero, como yo trabajo en un proyecto francés, no voy a codificar obligando a Thread.CurrentUICulture Inglés. Quiero que el cambio en inglés sea solo en mi máquina local y no cambie las propiedades del proyecto.

¿Es posible establecer el idioma excepciones sin modificar el código de la aplicación?


En VS , establezca las Herramientas -> Opciones -> Medio Ambiente -> Ajustes Internacionales -> Idioma para "Inglés", END lanzar la misma excepción obtener el mensaje de ex en francés, sin embargo: alt text http://lh4.ggpht.com/_1TPOP7DzY1E/S1V62xcvHAI/AAAAAAAAC7o/ckLDVFPKh5Y/s800/exception.png

+2

Tengo el mismo problema con el alemán con el estudio visual inglés e incluso los errores del compilador están localizados en alemán. (Lo que hace que Google les resulte difícil) –

+0

@Christian: consulte http://stackoverflow.com/questions/721337/forcing-english-language-exceptions-in-net-framework quizás esto lo ayude ... – serhio

+0

posible duplicado de [C# - ¿Mensajes de excepción en inglés?] (Http://stackoverflow.com/questions/209133/c-sharp-exception-messages-in-english) –

Respuesta

1

Finalmente una solución "fuerte" podría ser el siguiente:

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

Sin embargo, me gustaría una solución sin modificaciones en el código del proyecto .

De MSDN:

El CurrentUICulture propiedad será establecido implícitamente, si una aplicación no especifica un CurrentUICulture. Si CurrentUICulture no se establece explícitamente en el código de una aplicación, que es fijado por la GetUserDefaultUILanguage función en Windows 2000 y Windows XP interfaz de usuario multilingüe (MUI) productos en los que el usuario final puede configurar el valor por defecto idioma.Si el idioma de la IU del usuario no está establecido, se establecerá en el idioma instalado en el sistema, que es el idioma de los recursos del sistema operativo .

Si una aplicación está basada en la Web, el CurrentUICulture se puede configurar de forma explícita en código de aplicación para el navegador del usuario aceptar lenguaje.

10

También podemos establecer la actual cultura de Inglés sólo en versiones de depuración:

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

¿Eso no haría que la depuración no sea confiable? Otras partes del proyecto pueden depender de la cultura de Francia. – Kobi

+1

@Thomas: sí, pero este cambio afectará a todos los demás usuarios del código. Si mi jefe de proyecto es un viejo francés, me decapitará por eso :) – serhio

+2

@Kobi: el comportamiento más específico de cada cultura, como el formato de fecha/hora/número, depende de CurrentCulture, no de CurrentUICulture. CurrentUICulture solo afecta a los recursos que se utilizan. Si no hay conjuntos de satélites para recursos en culturas distintas al francés, volverá a la cultura predeterminada de todos modos –

0

no lo probé, pero de acuerdo con la documentation que la propiedad s debería establecerse de manera predeterminada en el idioma de la interfaz de usuario actual, que está configurado en el panel de control. Por lo tanto, debería funcionar correctamente automágicamente según su configuración internacional.

+0

¿qué quiere decir exactamente mi "lenguaje de IU actual"? Mi sistema operativo es francés (por ejemplo, el nombre del botón "Inicio" es "Démarrer"), por lo que 'CultureInfo.CurrentCulture.Name ==" fr-FR "' – serhio

+0

en ControlPanel cambié el "Regional y las opciones de idioma" = > "Estándares y formatos" para ser "inglés de EE. UU.", Pero esto no ayudó. – serhio

+0

Me refiero al que se encuentra en la Configuración internacional en el Panel de control (http://www.guidebookgallery.org/pics/gui/settings/international/winxppro-1-1.png). EDITAR Vi ahora tu comentario ...No sé, AFAIK debería funcionar así ... –

2

desinstalar el paquete de idioma francés:

Inicio - Panel de control - Programas y Funciones - Microsoft .NET Framework (4 Client Profile) Language Pack FRU - Desinstalar

Es posible que tenga que repetir la desinstalación para cada versión de .NET Framework que encuentres allí.

4
+1

@ Hi-Angel No, se cerró como "no corregido". No se pudo encontrar ninguna entrada nueva en https://developercommunity.visualstudio.com/ –

+0

@LouisSomers Solo recuerdo que fue un sarcasmo. Tan sutil que no lo vi yo mismo. Probablemente fue una referencia al desconocimiento de MS de las solicitudes y errores en general * (ver por ejemplo, problemas de Skype) *. –

+0

@ Hi-Angel Estoy haciendo otro intento en el [depósito de DotNet en GitHub] (https://github.com/Microsoft/dotnet/issues/474#issue-256175151). Lamentablemente, no tengo tiempo para solucionarlo yo mismo y les pido que se fusionen, ¿pero tal vez alguien más lo haga? –

0

Para cualquier/8.1 Win8 usuarios se enfrentan este problema, instalar el paquete de idioma Inglés y hacer que el idioma de la pantalla de Windows parece ser única manera fácil de resolver como Windows 8 tiene .NET marco construido en su núcleo.

Probablemente lo mismo para Win10.

0

Por el bien de todos los futuros usuarios de la aplicación, colocar este con el método principal:

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

Se les ahorrará una buena cantidad de problemas para encontrar el equivalente Inglés del un mensaje de error mal traducida .

Cuestiones relacionadas