Qual é a diferença entre CurrentCulture e CurrentUICulture propriedades de CultureInfo em .NET?
-
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ê?
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:
-
CurrentCulture
é para formatação de datas e moeda enquantoCurrentUICulture
vai com linguagem / traduções. Ele será usado porResourceManager
para procurar recursos por cultura. - Namespace de
CurrentCulture
classe está emSystem.Globalization
enquantoCurrentUICulture
vem deSystem.Threading
. -
CurrentCulture
é mantido através de diferentes pedidos na sessão enquantoCurrentUICulture
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 deCutlureInfo.CurrentCulture
seria provavelmentede-DE
. Assim, o.ToString()
formatação padrão para tiposIFormattable
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), oCurrenUICulture
representariaru-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.