Qual é a diferença entre CurrentCulture e CurrentUICulture propriedades de CultureInfo em .NET?

StackOverflow https://stackoverflow.com/questions/329033

  •  11-07-2019
  •  | 
  •  

Pergunta

No .NET existe a classe CultureInfo no namespace System.Globalization. Ele tem duas propriedades semelhantes ambos os valores de retorno do tipo CultureInfo:. CurrentCulture e CurrentUICulture

Qual é a diferença entre eles?

Qual deles devo usar quando e por quê?

Foi útil?

Solução

CurrentCulture é a representação .NET da localidade do usuário padrão do sistema. Este número de controles padrão e data formatação e similares.

CurrentUICulture refere-se ao idioma da interface de usuário padrão, uma configuração introduzido no Windows 2000. Isso é principalmente sobre o / part tradução localização UI de seu aplicativo.

Whatever opções regionais o sistema está configurado para ter serão os valores "atual" em seu aplicativo .NET.

Muitas vezes eles são a mesma coisa. Mas no meu sistema que seria diferente:. Eu prefiro meus números e datas no formato alemão, de modo que o CurrentCulture seria alemão, mas eu também prefiro todos os meus aplicativos em Inglês, para que o CurrentUICulture seria Inglês

Há um artigo bom sobre o tema: Classificando tudo Out: Por que ter tanto CurrentCulture e CurrentUICulture

Outras dicas

Este é um truque simples que eu uso para lembrar qual usar:

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture

Diferenças:

  1. CurrentCulture é para formatação de datas e moeda enquanto CurrentUICulture vai com linguagem / traduções. Ele será usado por ResourceManager para procurar recursos por cultura.
  2. Namespace de CurrentCulture classe está em System.Globalization enquanto CurrentUICulture vem de System.Threading.
  3. CurrentCulture é mantido através de diferentes pedidos na sessão enquanto CurrentUICulture precisa ser definido com cada pedido.

Semelhança:

Ambos são System.Globalization.CultureInfo casos.

Uma boa maneira de fazer a diferença para além das explicações agradáveis ??feitas por outros usuários, e um aspecto importante no desenvolvimento de aplicações web é o seguinte:

  • CurrentCulture representa a configuração do servidor web. Por exemplo, se a sua aplicação web ASP.NET está hospedado na Alemanha, o valor de CutlureInfo.CurrentCulture seria provavelmente de-DE. Assim, o .ToString() formatação padrão para tipos IFormattable usaria as formatações alemão padrão, ou aqueles que foram criadas no sistema operacional de servidor como padrão.

  • CurrentUICulture pode ser capturado a partir do agente do usuário, e pode representar a cultura interface do usuário do cliente conectar ao site. Por exemplo, se você carregar o website da Rússia, suas configurações locais são definidas para usar língua russa, e seu agente usuário envia suas definições de locale para o servidor (Opera e IE fazer isso automaticamente, não tenho certeza para o Chrome e Firefox), o CurrenUICulture representaria ru-RU. Isso fará com que todos os recursos como cadeias localizadas recuperados através de expressões ResourceManager ou de localização em ASP.NET aspx / arquivos ascx ser em russo (se as traduções estão disponíveis).

É interessante notar que os CurrentUICulture apoios específicos não-country locais como 'en' (culturas neutros), enquanto CurrentCulture suporta apenas específico país locales tais como 'en-GB'. Definir CurrentCulture para uma cultura neutra irá lançar uma ArgumentException.

Eu suponho que isso é porque formatos como datas e moeda são mais fortemente ligados ao próprio país, mas o idioma apresentado é muitas vezes intercambiáveis ??entre países.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top