¿Podría alguien darme un poco más de información sobre la diferencia entre Culture
y UICulture
dentro de .NET Framework? ¿Qué hacen y cuándo usar qué?¿Cuál es la diferencia entre Culture y UICulture?
Respuesta
Culture
afecta la forma en que 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 sintáctico 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
Cuidado con los casos en que el análisis tiene éxito pero el resultado no es lo que se esperaría es ser.
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
afectos que va a ser cargado a su aplicación por archivo de recursos (recursos. lang .resx).
Así que 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 están cargados) establecería Culture
.
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.
Solo una pequeña cuestión a considerar además de la increíble explicación de @Vache: Puede establecer UICulture y Culture en (nivel de página y nivel de aplicación).
Con el fin de ponerlos a nivel de aplicación, basta con añadir sesión de la globalización en web.config
por ejemplo, <globalization uiCulture="es" culture="es-MX" />
Y para ponerlos a nivel de página, lo cual es bueno para añadir en una página específica (individuales), establecen la cultura y UICulture atributos dentro de la página @ directiva
por ejemplo, <%@ Page UICulture="es" Culture="es-MX" %>
Culture and UICulture
Los valores son pares de cuerdas de dos letras, la primera es para la definición de la lengua y la segunda para la definición de la región. Ejemplo:
en-GB
aquí en
representa English
y GB
representa Great Briton
en-US
aquí en
representa English
y US
representa United States
Uso Culture
para las funciones que dependen de Cultura como fecha, hora. y UICulture
es para la carga correcta del archivo de recursos.
- 1. ¿Cuál es la diferencia entre {0} y ""?
- 2. Cuál es la diferencia entre = y: =
- 3. ¿Cuál es la diferencia entre .ToString (+) y ""
- 4. Cuál es la diferencia entre $ (...) y `...`
- 5. ¿cuál es la diferencia entre:.! y: r !?
- 6. ¿Cuál es la diferencia entre ".equals" y "=="?
- 7. ¿Cuál es la diferencia entre dict() y {}?
- 8. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 9. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 10. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 11. ¿Cuál es la diferencia entre + = y = +?
- 12. ¿Cuál es la diferencia entre " " y ""?
- 13. Cuál es la diferencia entre $ y jQuery
- 14. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
- 15. Cuál es la diferencia entre la función() {}() y la función() {}()
- 16. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 17. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 18. ¿Cuál es la diferencia entre la vinculación estática y dinámica?
- 19. ¿Cuál es la diferencia entre la sección .got y .got.plt?
- 20. ¿Cuál es la diferencia entre el colado y la coerción?
- 21. ¿cuál es la diferencia entre el complemento y la biblioteca?
- 22. ¿Cuál es la diferencia entre el casting y la conversión?
- 23. ¿Cuál es la diferencia entre WPF y la aplicación Silverlight?
- 24. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 25. ¿Cuál es la diferencia entre CookieContainer y la colección Response.Cookies?
- 26. ¿Cuál es la diferencia entre la relación Composición y Asociación?
- 27. ¿cuál es la diferencia entre el material y la textura?
- 28. ¿Cuál es la diferencia entre el marco y la arquitectura?
- 29. ¿Cuál es la diferencia entre la carpeta vim72 y vimfiles?
- 30. ¿cuál es la diferencia entre la lex y yacc
Lo que significa que puede tener etiquetas inglesas y UI (inglés UICulture) y moneda noruega, fecha, hora y formato de número (norwegian Culture.) En términos de Windows, piense que tiene un paquete de idioma instalado para los menús y cuadros de diálogo (UICulture), pero ejecutándose con las configuraciones regionales noruegas (Cultura). –
Para enfatizar las implicaciones de esto: ¡Incluso si no admite el idioma de un usuario, asegúrese de apoyar su cultura para el formateo! He visto errores en los que una aplicación se retrotrae a "en EE. UU." Tanto para la cultura como para el idioma, cuando solo era necesario recurrir al idioma. – ToolmakerSteve
¿Cuál es el punto en el uso de un objeto entero 'CultureInfo' solo para determinar el archivo de recursos donde una' cadena' sería suficiente? (Por ejemplo, la propiedad 'Lenguaje' del' FrameworkElement') – Wouter