Risposte:
Culture
influenza 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
UICulture
influisce su quale file di risorse (Resources. lang .resx) verrà caricato dall'applicazione.
Quindi per caricare risorse tedesche (presumibilmente testo localizzato) dovresti impostare UICulture
la cultura tedesca e visualizzare la formattazione tedesca (senza alcun impatto su quali risorse vengono caricate) che imposteresti Culture
.
CultureInfo
oggetto solo per determinare il file di risorse dove string
sarebbe sufficiente? (Ad esempio, la Language
proprietà 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-GB
qui en
rappresenta English
e GB
rappresentaGreat Briton
en-US
qui en
rappresenta English
e US
rappresentaUnited States
Utilizzare Culture
per 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.