¿Podría alguien darme un poco más de información sobre la diferencia entre Culturey UICulturedentro del marco .NET? ¿Qué hacen y cuándo usar qué?
                126
            
  
              
        Cultureafecta cómo se presentan los datos que dependen 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 los que el análisis tiene éxito pero el resultado no es el que esperaría.
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
UICultureafecta a qué archivo de recursos (Resources. lang .resx) va a cargar su aplicación.
Entonces, para cargar recursos alemanes (presumiblemente texto localizado), establecería UICulturela cultura alemana y para mostrar el formato alemán (sin ningún impacto en los recursos cargados) que configuraría Culture.
CultureInfoobjeto completo solo para determinar el archivo de recursos donde astringsería suficiente? (Por ejemplo,Languagepropiedad deFrameworkElement)Culture and UICultureLos valores son pares de cadenas de dos letras, la primera es para definir el lenguaje y la segunda para definir la región. Ejemplo:
en-GBaquíenrepresentaEnglishyGBrepresentaGreat Britonen-USaquíenrepresentaEnglishyUSrepresentaUnited StatesÚselo
Culturepara funciones dependientes de Cultura como fecha, hora. yUICulturees para la correcta carga de archivos de recursos.fuente
Solo un pequeño asunto a tener en cuenta además de la increíble explicación de @ Vache: puede configurar UICulture y 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
p.ej
<globalization uiCulture="es" culture="es-MX" />Y para establecerlos en el nivel de página, que es bueno agregar en una página específica (individual), configure los atributos Cultura y UICultura dentro de la directiva @ page
p.ej
<%@ Page UICulture="es" Culture="es-MX" %>fuente
La propiedad UICulture puede cambiar para cada navegador web, mientras que Culture se mantiene constante.
El valor de Cultura se puede establecer solo 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 símbolos de moneda diferentes. Los usuarios pueden configurar la cultura de la interfaz de usuario y la cultura en sus navegadores.
fuente