En .NET existe la CultureInfo
clase en el System.Globalization
espacio de nombres. Tiene dos propiedades similares, ambos valores de retorno del CultureInfo
tipo: CurrentCulture
y CurrentUICulture
.
¿Cuál es la diferencia entre ellos?
¿Cuál debo usar cuándo y por qué?
.net
globalization
cultureinfo
splattne
fuente
fuente
CurrentUICulture
que siempre estará en EE. UU. En una máquina de idioma inglés, independientemente de loCurrentCulture
que se pueda configurar para localizar la Configuración regional.CurrentCulture
es 'en-GB', peroCurrentUICulture
es 'en-US'.Respuestas:
CurrentCulture
es la representación .NET de la configuración regional de usuario predeterminada del sistema. Esto controla el número predeterminado y el formato de fecha y similares.CurrentUICulture
se 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 para las que esté configurado el sistema, serán los valores "actuales" en su aplicación .NET.
Muchas veces ambos son lo mismo. Pero en mi sistema serían diferentes: prefiero mis números y fechas en el formato alemán, por lo
CurrentCulture
que sería alemán, pero también prefiero todas mis aplicaciones en inglés, por loCurrentUICulture
que sería inglés.Hay un buen artículo sobre el tema: Ordenarlo todo: por qué tenemos CurrentCulture y CurrentUICulture
fuente
D
) puede contener bastante "lenguaje":en-US
devuelve "Viernes 6 de abril de 2018", mientras queru-RU
devuelve "6 de abril de 2018 г.".Este es un truco simple que uso para recordar cuál usar:
fuente
Una buena manera de marcar la diferencia, además de las buenas explicaciones hechas por otros usuarios, y un aspecto importante en el desarrollo de aplicaciones web es el siguiente:
CurrentCulture
representa la configuración del servidor web. Por ejemplo, si su aplicación web ASP.NET está alojada en Alemania, el valor deCutlureInfo.CurrentCulture
probablemente seade-DE
. Por lo tanto, el.ToString()
formato predeterminado para losIFormattable
tipos utilizaría los formatos alemanes predeterminados, o los que se han configurado en el sistema operativo del servidor como valores predeterminados.CurrentUICulture
puede capturarse desde el agente de usuario y puede representar la cultura de interfaz de usuario del cliente que se conecta al sitio web. Por ejemplo, si carga que el sitio web de Rusia, los valores locales están configurados para utilizar la lengua rusa, y su agente de usuario envía valores de localización para el servidor (Opera e IE hacen esto automáticamente, sin saber para Chrome y Firefox), laCurrenUICulture
haría representarru-RU
. Esto hará que cualquier recurso como cadenas localizadas recuperadas a través de ResourceManager o expresiones de localización en archivos aspx / ascx ASP.NET estén en ruso (si hay traducciones disponibles).fuente
Diferencias:
CurrentCulture
es para formatear fechas y moneda mientrasCurrentUICulture
va con el idioma / traducciones. Será utilizado porResourceManager
para buscar recursos por cultura.CurrentCulture
clase está enSystem.Globalization
mientrasCurrentUICulture
provieneSystem.Threading
.CurrentCulture
persiste en diferentes solicitudes en la sesión, mientrasCurrentUICulture
que debe configurarse con cada solicitud.Semejanza:
Ambos son
System.Globalization.CultureInfo
instancias.fuente
Vale la pena señalar que
CurrentUICulture
admite configuraciones regionales no específicas del país, como 'en' (culturas neutrales), mientras queCurrentCulture
SOLO admite configuraciones regionales específicas del país, como 'en-GB'. EstablecerCurrentCulture
una cultura neutral arrojará unArgumentException
.Supongo que esto se debe a que los formatos como las fechas y la moneda están más fuertemente vinculados al país en sí, pero el idioma que se muestra a menudo es intercambiable entre países.
fuente