2012-03-14 31 views
5

Quiero saber la configuración o ubicación desde donde System.Globalization.CultureInfo.CurrentCulture lee su valor.Desde donde CultureInfo.CurrentCulture lee la cultura

Estoy usando una computadora portátil con Windows 7 y he cambiado la configuración regional y de fecha y hora de mi sistema a EE. UU.

obtuve mi código de trabajo mediante el siguiente escenario en el web.config bajo

<globalization culture="en-US" /> 

Gracias

Respuesta

6

la MSDN dice

La cultura es una propiedad del subproceso de ejecución. Esta propiedad de solo lectura equivale a recuperar el objeto CultureInfo devuelto por la propiedad Thread.CurrentCulture. Cuando se inicia un subproceso, su cultura se determina inicialmente llamando a la función Windows GetUserDefaultLocaleName.

En otras palabras, se basa en la rosca, bruja tiene un contexto ... en el contexto ASP.NET, que proviene de la configuración regional utilizado en el navegador del cliente primera si se utiliza o la Server Variables Configuración del sistema en todo lo demás.

Bajo este contexto web se puede conseguir utilizando el método Server.Variables en HTTP_ACCEPT_LANGUAGE y obtendrá algo como:

en-US,en;q=0.8,pt-PT;q=0.6,pt;q=0.4 

bruja establece que el navegador del cliente ha puesto en 3 idiomas, donde el primero es en-US.

Todo, desde System.Globalization proviene del Sistema definiciones al igual que la imagen de abajo muestra:

enter image description here

código anterior es:

<p> 
    <pre>System.Globalization.CultureInfo.CurrentCulture</pre> 
    is @System.Globalization.CultureInfo.CurrentCulture.EnglishName 
</p> 

No importa qué navegador está en uso, el definición para System.Globalization siempre vendrá de la definición de sistema operativo

enter image description here

+0

Gracias Balexandre, esta parece ser una buena información. Pero acabo de comprobar la configuración regional de mis navegadores y su en-US (estoy usando firefox y comprobé la configuración general.useragent.locale en about: config) también mis sistemas de fecha y hora y los ajustes regionales fueron configurados en en-US. Pero todavía obtengo en-IN cuando compruebo System.Globalization.CultureInfo.CurrentCulture. ¿Tienes alguna idea de dónde estoy equivocado? – TechnicalSmile

+0

imagen añadida para una mejor comprensión ... – balexandre

2

Después de pasar 8 horas - encontrar una solución Gracias a Ronald - CultureInfo values differ between applications for the same culture. Is this a bug?

Resulta que la configuración regional se almacenan por usuario en Windows. Esto es algo que debería haber tenido en cuenta. La actualización del grupo de aplicaciones para que se ejecute como yo produjo el mismo resultado en ambas aplicaciones .

Para ser justos, lo que todavía es confuso es cómo el servicio de red (la cuenta se estaba ejecutando el grupo de aplicaciones) llegó a tener el valor incorrecto. Ni siquiera estoy seguro de cómo podría rectificar eso.

Editar:

Si es necesario actualizar la configuración regional para las cuentas reservados. Usted tiene dos opciones.

Control Panel > Regional Settings > Click the administrative tab and then select "Copy Settings". 

En la pantalla que pone en marcha, asegurarse de marca "Pantalla de bienvenida y del sistema de cuentas". Las versiones anteriores de Windows son similares, creo. Para el corsé. Registro: HKEY_USERS> SID ...> Panel de control> Internacional. El identificador de seguridad para el servicio de red es: SID: S-1-5-20.

Asegúrese de reiniciar el grupo de aplicaciones para que la configuración surta efecto.

¡Hice # 1 - y me fue un truco!

+0

¡Muchas gracias! Me ahorró muchas horas :) –

1

En caso de ASP.NET, de

HKEY_USERS\S-1-5-20\Control Panel\International\

S-1-5-20 es el identificador de seguridad del servicio de red "usuario" (http://support.microsoft.com/kb/243330)

Para otros tipos de aplicaciones, consulte la documentación de la función GetUserDefaultLocaleName (https://msdn.microsoft.com/en-us/library/windows/desktop/dd318136%28v=vs.85%29.aspx)

para una manera GUI fácil de cambiar la configuración regional de S-1-5-20, véase la respuesta de sitecorebasics

Cuestiones relacionadas