¿Cuál es la diferencia entre las propiedades CurrentCulture y CurrentUICulture de CultureInfo en .NET?

Resuelto splattne asked hace 15 años • 5 respuestas

En .NET existe la CultureInfoclase en el System.Globalizationespacio de nombres. Tiene dos propiedades similares y ambas devuelven valores del CultureInfotipo: CurrentCulturey CurrentUICulture.

¿Cuál es la diferencia entre ellos?

¿Cuál debo usar, cuándo y por qué?

splattne avatar Nov 30 '08 23:11 splattne
Aceptado

CurrentCulturees la representación .NET de la configuración regional del usuario predeterminada del sistema. Esto controla el formato predeterminado de números y fechas y similares.

CurrentUICulturese refiere al idioma predeterminado de la interfaz de usuario, una configuración introducida en Windows 2000. Esto se refiere principalmente a la parte de localización/traducción de la interfaz de usuario de su aplicación.

Cualesquiera que sean las opciones regionales que tenga el sistema configurado, serán los valores "actuales" en su aplicación .NET.

Muchas veces ambos son iguales. Pero en mi sistema serían diferentes: prefiero mis números y fechas en formato alemán, por lo que serían CurrentCulturealemanes, pero también prefiero todas mis solicitudes en inglés, por lo que CurrentUICultureserían en inglés.

Hay un buen artículo sobre el tema: Clasificándolo todo: por qué tenemos CurrentCulture y CurrentUICulture

Tomalak avatar Nov 30 '2008 16:11 Tomalak

Este es un truco sencillo que utilizo para recordar cuál usar:

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture
foxontherock avatar Sep 02 '2010 12:09 foxontherock

Una buena manera de marcar la diferencia además de las agradables explicaciones realizadas por otros usuarios, y un aspecto importante en el desarrollo de aplicaciones web es el siguiente:

  • CurrentCulturerepresenta la configuración del servidor web. Por ejemplo, si su aplicación web ASP.NET está alojada en Alemania, lo CutlureInfo.CurrentCulturemás probable es que el valor de sea de-DE. Por lo tanto, el formato predeterminado .ToString()para IFormattablelos tipos utilizaría los formatos alemanes predeterminados o los que se han configurado en el sistema operativo del servidor como predeterminados.

  • CurrentUICulturese puede capturar desde el agente de usuario y puede representar la cultura de la interfaz de usuario del cliente que se conecta al sitio web. Por ejemplo, si carga ese sitio web desde Rusia, su configuración local está configurada para usar el idioma ruso y su agente de usuario envía su configuración local al servidor (Opera e IE hacen esto automáticamente, no estoy seguro para Chrome y Firefox), lo CurrenUICultureharía representar ru-RU. Esto hará que todos los recursos, como cadenas localizadas recuperadas a través de ResourceManager o expresiones de localización en archivos ASP.NET aspx/ascx, estén en ruso (si hay traducciones disponibles).

Ivaylo Slavov avatar Nov 26 '2015 14:11 Ivaylo Slavov