Como obter preferência de localidade atual do navegador usando javascript?

Alguém sabe como obter a cultura do navegador do Firefox e Google Chrome usando javascript? Nota: Este é um aplicativo da web do asp.net 3.5.

O requisito é tentar definir a cultura de exibição do aplicativo com base na cultura do navegador. Eu encontrei muito poucos bits e pedaços de informação para os outros navegadores, mas eles não parecem funcionar.

Eu posso obtê-lo no IE com o seguinte trecho de código:

var browserCulture = this.clientInformation.browserLanguage; 

Qualquer informação seria ótima!

As seguintes propriedades existem no object navigator (que também pode ser conhecido como clientInformation no IE, mas não há razão para usar esse nome):

  • language (não-IE, idioma de instalação do navegador)
  • browserLanguage (IE, idioma de instalação do navegador)
  • userLanguage (IE, configuração de idioma em todo o sistema no nível do usuário)
  • systemLanguage (IE, idioma de instalação do SO)

Mas! Você nunca deve usar nenhuma dessas propriedades! Eles serão o idioma errado em muitos casos.

Nenhum deles reflete as configurações de idioma que o usuário realmente configura na interface de usuário de ‘idiomas preferidos’ do navegador, e é difícil para os usuários mudarem. Você causará grande frustração usando qualquer um desses valores sem uma maneira manual fácil adicional de alternar idiomas.

O local correto que você deve farejar para decidir qual idioma usar por padrão, conforme configurado pela interface do usuário do navegador normal, é o header Accept-Language passado para o seu servidor na solicitação HTTP. Esta é uma lista ordenada de idiomas preferidos a partir do qual você pode escolher, e é o que o ASP.NET usa para adivinhar uma cultura automática do cliente, se você usar isso.

Infelizmente, esta propriedade não está disponível no JavaScript!

O que você normalmente faz é usar o servidor para analisar o header Accept-Language e escolher um único idioma apropriado para usar a partir dele. No ASP.NET, você pode obter uma lista pré-ordenada de HttpRequest.UserLanguages e escolher a primeira que desejar.

Em seguida, você cuspa o nome desse idioma em um elemento para passar as informações do idioma para o lado do cliente.

Tente isto:

 var l_lang; if (navigator.userLanguage) // Explorer l_lang = navigator.userLanguage; else if (navigator.language) // FF l_lang = navigator.language; else l_lang = "en"; 

Fonte: http://forums.digitalpoint.com/showthread.php?t=631706

navigator.languages é uma matriz e contém todos os idiomas selecionados em ordem. E só funciona para o Chrome e o Firefox.

Não é o mesmo que navigator.language e com isto quero dizer que navigator.language não corresponde necessariamente a navigator.languages[0] .

Apenas para ficar claro.

Para obter o código de idioma no IE, você precisa escrever o código do lado do servidor. Eu tentei com servlet e peguei o idioma de aceitação do IE. Ele mostra os idiomas que são selecionados pelo usuário.Chame o servlet no seu lado do cliente e obtenha o código do idioma.

 String name=request.getHeader("accept-language"); AcceptClass ac=new AcceptClass(); ac.setAccLang(name); Gson gs=new Gson(); String json = gs.toJson(ac); response.setContentType("application/json"); response.getWriter().write(json); 
    Intereting Posts