Pergunta

Eu estou trabalhando em uma solução web ASP.NET 2.0, que atualmente dirige EN-GB e zh-HK línguas como as 2 línguas atuais para o site. Outros serão adicionados em uma data posterior.

Um dos requisitos é que o usuário pode optar por substituir o idioma exibido para um outro idioma. Portanto usuários em Hong Kong pode visualizar o site em Inglês e vice-versa.

As minhas 2 arquivos de recursos são

  • Resources.resx (para Inglês - traduções padrão)
  • Resources.zh-HK.resx (para o chinês)

Os executa local esta lógica

  1. detalhes do usuário Carregar
  2. Verifique se o usuário tiver substituído o idioma preferido
  3. Se eles têm, defina o Thread.CurrentThread.CurrentUICulture a essa linguagem.
  4. Se não tiverem, use o padrão browsers.

Isso é implementado no código a seguir:

//This method is written in a base page, which all pages in the site derive from
protected override void InitializeCulture()
{ 
    User user = /*Load custom user object...*/;
    string threadLanguage = Thread.CurrentThread.CurrentUICulture.IetfLanguageTag;

    //If the browser is using a different language, 
    //but the has chosen a preferred language, 
    //change the CurrentUICulture over.
    if (!threadLanguage.Equals(user.Language, StringComparison.OrdinalIgnoreCase))
    {
        CultureInfo userLanguageCulture = CultureInfo.CreateSpecificCulture(user.Language);
        Thread.CurrentThread.CurrentUICulture = userLanguageCulture;
    }

    base.InitializeCulture();
}

Eu também ter configurado o web.config para pegar o uiCulture automaticamente com

<globalization uiCulture="auto"/>

Por alguma razão muito, muito estranho, alguns usuários (mesmo en-GB usuários) estão descobrindo a linguagem é comutação a zh-HK por qualquer razão - às vezes entre as páginas! Eu adicionei um código de depuração a estas páginas, que deve revelar mais informações nos próximos dias. Tudo o que tem revelado até agora é que os usuários não são necessariamente de zh-HK, alguns são de zh-CN ou zh-TW. Embora isso pode ajudar, porque os usuários en-GB estão vendo zh-HK eu acho que é apenas um arenque vermelho.

O que tenho notado é que o switch over ocorre no conteúdo da página (aqueles herdando da página de base, que existe o método IntializeCulture ()). Os controles de usuário personalizadas que escrevi não enfrentar esse problema e aparecem no idioma correto configurado pelo usuário. Portanto uma página teria combinações de Inglês e de conteúdo chinês - eek

Can orientação ninguém dar como para se estou codificação isso corretamente, ou uma forma alternativa de abordar os requisitos.

Agradecemos antecipadamente,

Dominic

P.S. Este é um problema intermitente e não uma permanente. Não parece haver nenhuma ação comum que replica esta questão. Ele só -. Acontece

P.P.S Aqui está uma imagem do problema em ação:

página da Web mostrando problema Chinês / Inglês


Atualização de 23 de setembro 09:

Depois de tentar mudá-lo para Page.Culture, ainda estou tendo problemas mais intermitentes.

Eu tenho um par de ideias em porque isso poderia estar ocorrendo, mas sou incapaz de justificar a minha 'hipótese':

  • Nós estamos usando o IIS 5.0 Isolation Mode, que significa que apenas aspnet_wp.exe está em execução e não w3wp.exe para cada IIS instância.
  • Reporting Services também está em execução no servidor, gerando relatórios para Hong Kong.
  • a avaria ocorrer com mais freqüência quando o local estava sob carga pesada - eu assumo devido a grandes relatórios sendo gerados
  • .

Além disso, eu não sei mais o que poderia causar o problema. Eu iria mostrar outra imagem, mas o problema é idêntico e que aparecem no mesmo lugar que a imagem anterior mostrou.

Atualização de 25 de setembro 09:

Eu acho que eu poderia ter resolvido isso. Em nossa Web.config, há uma tag que foi configurada da seguinte forma:

<globalization uiCulture="auto" culture="auto"/>

Depois de retirar que, após o teste inicial, ele ainda tem que aparecer!

Atualização de 13 de outubro 09:

O problema tornou-se mais uma vez: - (

Atualização de 26 de outubro 09:

Parece que se outro usuário do site muda seu idioma preferido, afeta todos os outros usuários no site! Embora seu idioma preferido é definido, mudança de idioma alguma forma de outra pessoa afeta os outros usuários do site!

Foi útil?

Solução 2

Depois de um longo, longo tempo eu finalmente funcionou por que esse problema ocorreu.

O site começou como um frameset.asp, hospedagem 3 quadros .NET - superior, médio, inferior. O que eu notei, é que o .NET gerado 3 sessões, e, portanto, quaisquer mudanças afetaram apenas um quadro.

De certa forma, ela não explica completamente porque apenas partes da página foram trabalhar, mas tem resolvido algumas questões relacionadas com alguns dos Repsonse.Redirects ímpares estávamos indo.

Em resumo, o frameset.asp, foi replated com um frameset.aspx, o que gera um único cookie / sessão ID para todos os quadros.

Outras dicas

que não deveria estar usando Page.Culture, não Passe?

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