Pergunta

Eu estou apenas começando a localizar um aplicativo ASP.NET MVC. A maioria das cordas serão definidos em arquivos de recursos e recuperados através de Matt Localização Helpers . Outras cordas devem ser armazenados em um banco de dados.

Minha pergunta: Devo definir CurrentUICulture no início do pipeline de solicitação e da utilização que toda a aplicação, ou o uso diretamente Request.UserLanguages[0] sempre que necessário?

Agora eu estou pensando que eu deveria definir CurrentUICulture em Application_BeginRequest . A implementação seria algo parecido com isto:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var cultureName = HttpContext.Current.Request.UserLanguages[0];
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}

Este é o melhor lugar para conjunto CurrentUICulture e é Request.UserLanguages[0] o melhor lugar para obter essa informação?


Update:

post mostra de Ariel isso pode ser definido sem código, usando web.config

<system.web>
  <!--If enableClientBasedCulture is true, ASP.NET can set the UI culture and culture for a Web page automatically, based on the values that are sent by a browser.-->
  <globalization enableClientBasedCulture="true" culture="auto:en-US" uiCulture="auto:en"/>
Foi útil?

Solução

Aqui está um exemplo usando um HttpModule:

http: //weblogs.manas .com.ar / smedina / 2008/12/17 / internacionalização-in-aspnet-mvc /

Outras opções, criar uma base de classe Controller e implementar a lógica de localização lá. Ou usar um atributo de filtro de ação, mas você tem que lembrar de adicioná-lo em todos os controladores ou combinar esta aproximação com a base de classe Controller.

Outras dicas

Request.UserLanguages ??[0] só pode ser um indício de que idioma os usuários deseja ver. A maioria dos usuários não sabe onde alterar o idioma do navegador.

Outro ponto: Não ter certeza de que Request.UserLanguages ??[0] é uma linguagem válido. Ele pode até mesmo ser nulo. (Não sei o que bots têm lá)

Você geralmente tem um seletor de idioma na página. Uma vez que um usuário tenha selecionado uma linguagem lá, ele é armazenado em um cookie, a sessão ou url. Eu gosto de usar url porque eu acho que parece muito.

Se um usuário vê sua página sem ter definido uma linguagem em sua página, você deve verificar se Request.UserLanguages ??[0] é uma linguagem-lhe apoio e conjunto Thread.CurrentThread.CurrentUICulture.

Eu uso um filtro para set Thread.CurrentThread.CurrentUICulture. Thats ok, desde que nenhum outro filtro está usando Thread.CurrentThread.CurrentUICulture. Caso contrário, você precisará definir a ordem de execução certa para filtros.

Eu também uso Matts ajudante e funcionou muito bem até agora.

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