Risposte:
Cultureinfluenza la modalità di presentazione dei dati dipendenti dalla cultura (date, valute, numeri e così via). Ecco alcuni esempi:
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 influenza anche l'analisi dell'input dell'utente allo stesso modo:
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
Fai attenzione ai casi in cui l'analisi ha esito positivo ma il risultato non è quello che ti aspetteresti.
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
UICultureinfluisce su quale file di risorse (Resources. lang .resx) verrà caricato dall'applicazione.
Quindi per caricare risorse tedesche (presumibilmente testo localizzato) dovresti impostare UICulturela cultura tedesca e visualizzare la formattazione tedesca (senza alcun impatto su quali risorse vengono caricate) che imposteresti Culture.
CultureInfooggetto solo per determinare il file di risorse dove stringsarebbe sufficiente? (Ad esempio, la Languageproprietà del FrameworkElement)
Culture and UICulture
I valori sono coppie di stringhe di due lettere, la prima è per la definizione della lingua e la seconda per la definizione della regione. Esempio:
en-GBqui enrappresenta Englishe GBrappresentaGreat Briton
en-USqui enrappresenta Englishe USrappresentaUnited States
Utilizzare Cultureper funzioni dipendenti dalla cultura come data, ora. ed UICultureè per il corretto caricamento del file di risorse.
Solo una piccola cosa da considerare oltre alla fantastica spiegazione di @ Vache: puoi impostare sia UICulture che Culture a livello di pagina e di applicazione.
Per impostarli a livello di applicazione, è sufficiente aggiungere una sessione di globalizzazione in web.config
per esempio <globalization uiCulture="es" culture="es-MX" />
E per impostarli a livello di pagina, che è utile aggiungere in una pagina specifica (individuale), impostare gli attributi Cultura e UICulture nella direttiva @ page
per esempio <%@ Page UICulture="es" Culture="es-MX" %>
La proprietà UICulture potrebbe cambiare per ciascun browser Web, mentre la cultura rimane costante.
Il valore Cultura può essere impostato solo su culture specifiche, come en-US o en-GB. Ciò impedisce l'obbligo di identificare il simbolo di valuta corretto da utilizzare per en, dove en-US e en-GB hanno simboli di valuta diversi. Gli utenti possono impostare la cultura e la cultura dell'interfaccia utente nei loro browser.