Tengo algunos problemas en las aplicaciones Metro de Windows 8 (XAML & C#) con respecto a la configuración regional del usuario. Parece que las aplicaciones no respetarán la configuración regional del usuario, por lo que incluso si su Windows 8 está configurado para mostrar las fechas y horas en formato finlandés, las aplicaciones todavía las mostrarán utilizando el formato US. ¿Pero este es un problema tan grande que debe haber algo que me falta?WinRT aplicaciones y configuraciones regionales. ¿La forma correcta de formatear fechas y números en función de la configuración regional del usuario?
Para probar esto comencé creando una aplicación WPF. La aplicación se limita a imprimir la CurrentCulture y la DateTime.Now formato:
private void Culture_Loaded_1(object sender, RoutedEventArgs e)
{
this.Culture.Text = System.Globalization.CultureInfo.CurrentCulture.DisplayName;
}
private void Date_Loaded_1(object sender, RoutedEventArgs e)
{
this.Date.Text = DateTime.Now.ToString();
}
Aquí está mi configuración regional predeterminada:
Cuando se ejecuta, la aplicación mostrará la fecha en formato de Finlandia:
Entonces cambió la configuración regional de los Estados Unidos:
Y cuando la aplicación se ejecuta de nuevo, la cultura y el formato cambió:
Ésta es como esperaba todo para trabajar y esta es también la forma en que esperaba aplicaciones WinRT para trabajar.
Así que, como paso siguiente, creé una aplicación WinRT (XAML & C#) con el mismo código y revertí la configuración regional de nuevo al finlandés. El problema:
Incluso cuando he definido a través de la configuración regional que el formato debe ser "finlandés", la aplicación WinRT muestra la fecha y hora con Estados Unidos y el formato. luego modifiqué archivo de proyecto de la aplicación e hice fi-FI el idioma por defecto:
Este cambio también modificó la cultura de la aplicación:
extraño. Cambié el idioma predeterminado a su valor predeterminado y el formato se restauró en EE. UU. Luego creé las carpetas "Strings - fi-FI" dentro del proyecto y agregué un vacío "Resources.resw" al proyecto. Este archivo vacío parece ser suficiente, ya que ahora estaba recibiendo el formato de Finlandia:
Tan pronto como se quita el archivo de recursos vacía, los formateos revierte de nuevo a los Estados Unidos:
Muy extraño.
Esto lleva a algunas preguntas, pero la principal es: ¿Es intencional que las aplicaciones WinRT no sigan las configuraciones regionales del usuario como lo hacen las aplicaciones WPF?
Así, acutally cómo el get/respeto de los Usuarios La configuración regional de formato? Comencé el emulador de Windows 8.1 para teléfono con la siguiente configuración para fines de prueba: UI Idioma: alemán, Región: EE. UU., Configuración de formato: irlandés No he encontrado forma de obtener la información, que el usuario ha establecido su configuración de formato Irlandés. Y mi único deseo es formatear un DateTime como el usuario quiere verlo. Y el formato regional no significa automáticamente su región en la que configuro el dispositivo ni el UI Langauge que elegí. En mis dispositivos configuro la interfaz de usuario en inglés, pero quiero ver todos los TimeStamps y fechas en el formato alemán ... – Kornelis
gracias, lo siguiente fue genial, porque necesitaba ISO 3166-1 alpha2 https://en.wikipedia.org/ wiki/ISO_3166-1_alpha-2 GeographicRegion userRegion = new GeographicRegion(); string regionCode = userRegion.CodeTwoLetter; – Quincy
Esto me ha funcionado, pero ahora necesito grandes cantidades y el 'CurrencyFormatter' no es compatible con el decimal así que necesito una solución ... –