Respostas:
Cultureafeta como os dados dependentes da cultura (datas, moedas, números etc.) são apresentados. Aqui estão alguns exemplos:
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
A cultura também afeta a análise da entrada do usuário da mesma maneira:
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 com os casos em que a análise é bem-sucedida, mas o resultado não é o que você esperaria.
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
UICultureafeta qual arquivo de recurso (Recursos. lang .resx) será carregado pelo seu aplicativo.
Portanto, para carregar recursos em alemão (texto provavelmente localizado), você deve definir UICulturea cultura alemã e exibir a formatação em alemão (sem qualquer impacto sobre os recursos carregados) Culture.
CultureInfoobjeto inteiro apenas para determinar o arquivo de recurso onde a stringseria suficiente? (Por exemplo, Languagepropriedade do FrameworkElement)
Culture and UICulture
Os valores são pares de cadeias de caracteres de duas letras, o primeiro é para definir o idioma e o segundo para definir a região. Exemplo:
en-GBaqui enrepresenta Englishe GBrepresentaGreat Briton
en-USaqui enrepresenta Englishe USrepresentaUnited States
Use Culturepara funções dependentes da cultura, como data, hora. e UICultureé para o carregamento correto do arquivo de recursos.
Apenas uma pequena questão a considerar, além da explicação impressionante do @ Vache: Você pode definir UICulture e Culture em (nível da página e nível do aplicativo).
Para defini-los no nível do aplicativo, basta adicionar a sessão de globalização no web.config
por exemplo <globalization uiCulture="es" culture="es-MX" />
E para defini-los no nível da página, o que é bom adicionar em uma página específica (individual), defina os atributos Culture e UICulture na diretiva @ page
por exemplo <%@ Page UICulture="es" Culture="es-MX" %>
A propriedade UICulture pode mudar para cada navegador da Web, enquanto a Cultura permanece constante.
O valor da cultura pode ser definido apenas para culturas específicas, como en-US ou en-GB. Isso evita o requisito de identificar o símbolo de moeda correto a ser usado para en, onde en-US e en-GB têm símbolos de moeda diferentes. Os usuários podem definir a cultura da interface do usuário e a cultura em seus navegadores.