¿Cómo puede I (un americano) prueba si mi aplicación ASP.NET/SQL servidor está manejando correctamente los decimales para Alemania

StackOverflow https://stackoverflow.com/questions/717447

Pregunta

En los EE.UU., se utiliza un "" como separador, pero en Alemania se utiliza un "". Estoy intentando probar si mi lógica es lo suficientemente inteligente como para manejar cualquiera de los dos, pero me parece estar fallando para poner mi máquina de Windows 2000 en modo de alemán.

Fui a Panel de control, Opciones regionales, y ha cambiado "Su idioma" a "Alemania". entonces me reinicia IIS y SQL Server. Sin embargo, no parecen haber surtido efecto mis cambios.

Estas líneas muestran todavía "" siendo el separador.

System.Globalization.CultureInfo ci = new     System.Globalization.CultureInfo (     System.Threading.Thread.CurrentThread.CurrentCulture.Name);

Response.Write (ci.NumberFormat.NumberDecimalSeparator);

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

La mejor manera de probar esto es agregar un elemento de la globalización a su web.config, por ejemplo:.

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

Cambiar la cultura de de-DE afectará a la fecha y formatos numéricos: también se puede cambiar uiCulture si lo desea, dejando uiCulture como en-US significa que obtendrá mensajes de excepción en los Estados Unidos Inglés

.

Otros consejos

Cuando se establece la configuración regional, ¿sabía usted, asegúrese de "Aplicar todos los ajustes a la cuenta de usuario actual y al perfil de usuario por defecto" (pestaña Avanzado)?

Esto debería funcionar en la mayoría de los casos. También estoy asumiendo que su cultura no está predefinido "en-us" en el elemento de globalization Web.config.

Parece que no desea hacerlo mediante el establecimiento de la configuración de Cultura manualmente en el código, en lugar usted quiere que heredan los ajustes del sistema. Eso, en mi opinión, es una buena manera de comprobar ya que sus cambios se deben propagar al servidor SQL también.

Por lo general es lo peor que puede hacer que el manejo de un sitio web de problemas de formato como el separador decimal depende de la configuración regional del servidor web. Esto añade un problema de configuración del servidor que puede hacer más difícil para desplegar su aplicación, mientras que en realidad no necesariamente dar al usuario final lo que quieren. Por ejemplo es posible que desee instalar un un despliegue de Inglés de la misma aplicación a un solo servidor (canadiense!) Francés e.

También es bastante común para la región del sistema que se establece en algo inadecuado, debido a cuestiones de sucesión (por ejemplo. Aplicaciones que sólo funcionan en japonés, o los servidores de producción en todo el mundo que se ejecutan en-estadounidense como la 'versión canónica de Windows ).

Normalmente es mejor para manejar esto en la capa de aplicación, cualquiera de las opciones que tiene un entorno regional, por el despliegue de su código de sitio, o (si es necesario) la opción de una localidad por usuario del sitio. A continuación, cualquier persona puede iniciar sesión en la aplicación y obtener el formato de número apropiado.

Por último, si la interfaz de la aplicación es exclusivamente Inglés, puede ser más apropiado para seguir con el número Inglés formateo de todos modos. Alemanes se han acostumbrado a esto; que en realidad podría ser más confuso para tener una mezcla de convenciones de interfaz de usuario Inglés y Alemán juntos. IMO:. Localizar el fondo, o nada en absoluto

Creo que lo que busca es la ficha Formatos (el primero en llegar).

Se puede configurar su actual cultura de ser alemán.

Creo que sería más fácil que cambiar la configuración regional

Si realmente desea golpear éste ... máquinas virtuales son de su amigo. Pero lo que realmente necesita una suscripción a MSDN para obtener la versión alemana de un sistema operativo.

Carga de un sistema operativo (WinXP o Vista) en una máquina virtual, a continuación, vaya al sitio web.

No creo que IIS utiliza la configuración regional. Es necesario configurar el CultureInfo explicily en el código.

Si sólo está probando el tiempo, se podría cambiar la línea a leer esto:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("de-DE");

y cambiarlo de nuevo después. Se podría utilizar cadenas como que si usted quiere hacer un montón de pruebas unitarias.

¿Puedo aclarar algo, que desea poner el equipo en modo de alemán para probar la aplicación web, que sólo pasa a estar corriendo en la misma máquina que el navegador?

Cuando esto está funcionando de verdad podemos asumir que el Sever podría ser alojado fuera de Alemania (o tal vez en Alemania, pero en una máquina configurado con una configuración regional de EE.UU. - que pasa mucho). Si es así el establecimiento de la cultura en el servidor no es realmente lo que quieres, y probablemente no será capaz de hacer eso cuando se implementa de todos modos.

También tiene otro problema, no hay manera a toda prueba puede detectar el que la cultura de su usuario quiere utilizar. Puede detectar todo tipo de información de las cabeceras HTTP, hacer una búsqueda de dominio de la dirección IP, pero lo que si un alemán querido utilizar su sitio desde los EE.UU., o un americano fue en Alemania y quería ver "" y no "" para el separador decimal?

Para decirlo de otra manera, estoy diciendo que no importa lo que la cultura de PC de su cliente está utilizando - No es relevante porque una vez que se pasa de la web todas las apuestas están apagadas - incluso si su aplicación no detecta su cultura correctamente puede que no sea lo que su usuario quiere!

Por lo tanto, el camino Me gustaría hacer esto es preguntar al usuario qué idioma quieren y luego establecen explícitamente la configuración regional en su aplicación en tiempo de ejecución. Esto quiere decir que pide al usuario que elija un Langague pero es la única manera de estar seguro de utilizar el local adecuado para el usuario. Si todos sus usuarios son el alemán, entonces no tiene que pedir, sólo puede codificar la misma. Si su acercamiento suena como que podría trabajar entonces hay un buen código de ejemplo aquí: http: //msdn.microsoft.com/en-us/library/bz9tc508.aspx .

Buena suerte, o más bien Viel Glück!

Aquí es un artículo

probar fácilmente su código para múltiples culturas

http: / /haacked.com/archive/2007/06/14/easily-test-your-code-for-multiple-cultures.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top