español .net culture uiculture

.net - cultureinfo c# español



¿Cuál es la diferencia entre Culture y UICulture? (4)

La propiedad UICulture puede cambiar para cada navegador web, mientras que la Cultura se mantiene constante.

El valor de Cultura solo se puede establecer en culturas específicas, como en-US o en-GB. Esto evita el requisito de identificar el símbolo de moneda correcto para usar en en, donde en-US y en-GB tienen diferentes símbolos de moneda. Los usuarios pueden establecer la cultura y la cultura de la interfaz de usuario en sus navegadores.

¿Podría alguien darme un poco más de información sobre la diferencia entre Culture y UICulture dentro del framework .NET? ¿Qué hacen y cuándo usar qué?


Solo un pequeño asunto a considerar además de la increíble explicación de @Vache: puede establecer tanto UICulture como Culture en (nivel de página y nivel de aplicación).

Para configurarlos a nivel de aplicación, simplemente agregue la sesión de globalización en web.config

por ejemplo, <globalization uiCulture="es" culture="es-MX" />

Y para establecerlos en el nivel de la página, que es bueno agregar en una página específica (individual), configure los atributos Cultura y UICulture dentro de la directiva @ page

por ejemplo, <%@ Page UICulture="es" Culture="es-MX" %>


Culture and UICulture

Los valores son pares de cadenas de dos letras, la primera es para definir el idioma y la segunda para definir la región. Ejemplo:

en-GB aquí en representa English y GB representa Great Briton

en-US aquí representa a English y United States representa a United States

Utilice las funciones dependientes de Culture for Culture como fecha y hora. y UICulture es para la carga correcta del archivo de recursos.


Culture afecta cómo se presentan los datos dependientes de la cultura (fechas, monedas, números, etc.). Aquí están algunos ejemplos:

var date = new DateTime(2000, 1, 2); var number = 12345.6789; Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); Console.WriteLine(date); // 02.01.2000 00:00:00 Console.WriteLine(number.ToString("C")); // 12.345,68 € Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA"); Console.WriteLine(date); // 2000-01-02 00:00:00 Console.WriteLine(number.ToString("C")); // 12 345,68 $ Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); Console.WriteLine(date); // 1/2/2000 12:00:00 AM Console.WriteLine(number.ToString("C")); // $12,345.68

La cultura también afecta el análisis de la entrada del usuario de la misma manera:

const string numberString = "12.345,68"; decimal money; Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); money = decimal.Parse(numberString); // OK! Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); money = decimal.Parse(numberString); // FormatException is thrown, TryParse would return false

Tenga cuidado con los casos en que el análisis tenga éxito pero el resultado no es el esperado.

const string numberString = "12.345"; decimal money; Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); money = decimal.Parse(numberString); // 12345 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); money = decimal.Parse(numberString); // 12.345, where the . is a decimal point

UICulture afecta a qué archivo de recursos (Recursos. Lang .resx) va a cargar su aplicación.

Por lo tanto, para cargar recursos alemanes (texto supuestamente localizado), establecería UICulture en la cultura alemana y para mostrar el formato alemán (sin ningún impacto sobre qué recursos se cargan) establecería Culture .