Sto riscontrando alcuni problemi nelle app di Windows 8 Metro (XAML & C#) relative alle impostazioni internazionali dell'utente. Sembra che le app non rispettino le impostazioni internazionali dell'utente, quindi anche se Windows 8 è impostato per visualizzare le date e le ore in formato finlandese, le app continueranno a visualizzarle utilizzando la formattazione statunitense. Ma questo è un problema così grande che deve esserci qualcosa che mi manca?App WinRT e impostazioni internazionali. Il modo corretto di formattare date e numeri in base alle impostazioni regionali dell'utente?
Per verificarlo, ho iniziato creando un'applicazione WPF. L'applicazione appena stampa il CurrentCulture e la DateTime.Now formattato:
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();
}
Ecco le mie impostazioni internazionali predefinite:
Quando viene eseguito, l'applicazione visualizzata la data in formato finlandese:
poi ho cambiato le impostazioni internazionali negli Stati Uniti:
E quando l'applicazione è stato eseguito ancora una volta, la cultura e la formattazione cambiato:
Questo è come mi aspettavo tutto per lavorare e questo è anche il modo che mi aspettavo applicazioni WinRT al lavoro.
Quindi, come passaggio successivo, ho creato un'app WinRT (XAML & C#) con lo stesso codice e ripristinato le impostazioni internazionali in finlandese. Il problema:
Anche quando ho definito tramite le impostazioni regionali che la formattazione dovrebbe essere "finlandese", l'applicazione visualizza la WinRT datetime con US-formattazione. Ho poi modificato file di progetto della app e fatto fi-FI la lingua predefinita:
Questo cambiamento anche modificato la cultura del app:
Strano. Ho cambiato la lingua predefinita al suo valore predefinito e la formattazione è stata ripristinata negli Stati Uniti. Ho quindi creato le cartelle "Strings - fi-FI" all'interno del progetto e aggiunto un vuoto "Resources.resw" al progetto. Questo file vuoto sembra essere sufficiente, come mi è stato ora ottenendo la formattazione finlandese:
Appena posso rimuovere il file di risorse vuoto, le formattazioni ritorna negli Stati Uniti:
Molto strano.
Questo porta a poche domande, ma la principale è: è intenzionale che le app WinRT non seguano le impostazioni regionali dell'utente come fanno le app WPF?
Così, acutally come il get/rispettare le impostazioni di formato internazionale utenti? Ho avviato l'emulatore Windows phone 8.1 con la seguente configurazione a scopo di test: UI Lingua: tedesco, Regione: Stati Uniti, Formato Impostazioni: irlandese Non ho trovato alcun modo per ottenere le informazioni, che l'utente ha impostato le sue impostazioni di formato all'irlandese. E il mio unico desiderio è quello di formattare un DateTime come se l'utente volesse vederlo. E il formato regionale non significa automaticamente la regione in cui ho impostato il dispositivo o l'interfaccia utente Langauge che ho scelto. Sui miei dispositivi ho impostato l'interfaccia utente in inglese ma voglio vedere tutte le date e le date nel formato tedesco ... – Kornelis
grazie, il seguente è stato fantastico, perché avevo bisogno di ISO 3166-1 alpha2 https://en.wikipedia.org/ wiki/ISO_3166-1_alpha-2 GeographicRegion userRegion = new GeographicRegion(); string regionCode = userRegion.CodeTwoLetter; – Quincy
Questo ha funzionato per me ma ora ho bisogno di grandi numeri e il 'CurrencyFormatter' non supporta i decimali quindi ho bisogno di una soluzione ... –