2008-10-13 24 views
29

¿Cómo hago para que mi aplicación siempre use inglés al mostrar mensajes de excepciones de win32/.net?¿Evita que los mensajes de excepción se traduzcan al idioma del usuario?

Tengo este mensaje, parece que alguien utiliza babelfish traducirlo (es sueca): "System.ComponentModel.Win32Exception: Programmet kunde inte starta Eftersom programmets ASDI-vid-sidakonfiguration felaktig är".

Extremadamente inútil, y Google tuvo 4 hits para él, ninguno de ellos útil. Así que tengo que adivinar cuál fue el mensaje original y google eso. (Fue: "La aplicación no se pudo iniciar porque su configuración de lado a lado es incorrecta.")

Esta vez fue bastante simple averiguar cuál era el mensaje de error original, con el mensaje en inglés de el comienzo, por supuesto, me ahorraría tiempo.

Entonces, ¿cómo puedo hacer eso?

Respuesta

9

Puede intentar configurar Thread.CurrentThread.CurrentUICulture y/o .CurrentCulture en CultureInfo("en-US").

+2

Si cambia CurrentCulture, ¿no cambiará eso los separadores decimales, clasificación de cadenas, símbolos de moneda? , formatos de fecha, etc.Lo cual molestará seriamente a los usuarios extranjeros – MarkJ

+1

Aquí está la línea completa: System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US"); – epotter

+2

¿Existe alguna otra posibilidad además de cambiar la cultura, ya que la aplicación puede establecerla para fines de traducción? Las excepciones, sin embargo, no deben ser traducidas. ¿Hay algún paquete para eliminar en la instalación de .Net? – Juri

2

Si se trata de una aplicación ASP.NET, se puede establecer el idioma de la interfaz de usuario en web.config (*):

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

Para otras aplicaciones, la configuración regional del usuario actual se utilizan por defecto, y tiene para anularlo explícitamente, por ejemplo Thread.CurrentUICulture = new CultureInfo ("en-US").

(*) advertencia: si un error en el archivo de configuración genera una excepción antes de que se procese el elemento, obtendrá la uiCulture predeterminada.

2

Forzar excepciones para mostrar en un idioma diferente parece ser un poco duro para el usuario ... ¿puede mostrar un código de error junto con el mensaje? Luego, el usuario obtendrá algo que puede entender, y puede buscar el código de error para la versión traducida.

No soy un chico .net así que no sé si esto es posible, solo una idea.

+5

Soy el destinatario de ese mensaje, no del usuario, que probablemente no entendería el mensaje de error aunque fuera en su idioma . Ningún usuario debería ver una excepción lanzada, así que tengo que atraparla y corregirla. Debo traducirlo del sueco al inglés antes de poder entenderlo. – Nifle

0

¿Cómo puedo hacer mi solicitud siempre utilizar cuando se visualizan Inglés/.net mensajes excepciones Win32?

En primer lugar, no muestran mensajes Win32/.NET excepción a los usuarios. Debe manejar excepciones en lugar de mostrarlas al usuario.

De manera predeterminada, los mensajes de excepción se mostrarán en el idioma de la interfaz de usuario actual (si se instala el paquete de idioma apropiado, de lo contrario se incluirán en inglés). Puede cambiar los mensajes de excepción cambiando la propiedad Thread.CurrentThread.CurrentUICulture, pero afectará a toda la GUI de su aplicación.

+0

Esta aplicación todavía está en pruebas, por lo que creo que algunas excepciones que se muestran al probador son correctas. Su propósito es encontrarlos después de todo. Utilizo un archivo de idioma csv externo para todas mis cadenas de texto, así que con un poco de suerte cambiar UICulture no afectará al usuario. – Nifle

3

Por lo demás, las excepciones no deben traducirse (mal). Al registrar excepciones, tiene mucho más sentido hacerlo en un solo idioma. No puedo creer que Microsoft no haya pensado en una forma de hacer esto distinta de UICulture, que básicamente no es una opción :(

+0

es peor. UICUlture no funcionará en todos los casos. Puede intentar configurarlo en un hilo, para algunas excepciones funciona, para otros no (atm. Tengo excepciones en mi idioma, quiero configurarlo en inglés para archivos de registro, pero aún no he encontrado una solución) que funciona en todos los casos). – Offler

Cuestiones relacionadas