Vários idiomas em uma aplicação ASP.NET MVC?

votos
65

Qual é a melhor maneira de suportar vários idiomas para a interface em um aplicativo ASP.NET MVC? Eu vi as pessoas usam arquivos de recursos para outras aplicações. Isto ainda é a melhor maneira?

Publicado 06/08/2008 em 22:43
fonte usuário
Em outras línguas...                            


6 respostas

votos
40

Se você estiver usando os motores de vista padrão, em seguida, os recursos locais trabalhar nas vistas. No entanto, se você precisa pegar seqüências de recursos dentro de uma ação do controlador, você pode não obter os recursos locais, e tem que usar recursos globais.

Isso faz sentido quando você pensa sobre isso, porque os recursos locais são locais para uma página aspx e no controlador, você nem sequer escolhido o seu ponto de vista.

Respondeu 07/08/2008 em 04:04
fonte usuário

votos
21

Eu encontrei este recurso para ser muito útil

Sua um invólucro em torno do HttpContext.Current.GetGlobalResourceString e HttpContext.Current.GetLocalResourceString que lhe permite chamar os recursos como este ...

// default global resource
Html.Resource("GlobalResource, ResourceName")

// global resource with optional arguments for formatting
Html.Resource("GlobalResource, ResourceName", "foo", "bar")

// default local resource
Html.Resource("ResourceName")

// local resource with optional arguments for formatting
Html.Resource("ResourceName", "foo", "bar")

O único problema que eu encontrei é que os controladores não têm acesso às cordas resouce locais.

Respondeu 16/09/2008 em 01:00
fonte usuário

votos
3

Sim recursos ainda são a melhor maneira de suportar vários idiomas no ambiente .NET. Porque eles são fáceis de referência e ainda mais fácil de adicionar novas línguas.

Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...

Então você direita são ainda usam os arquivos de recursos.

Respondeu 06/08/2008 em 22:48
fonte usuário

votos
2

O projeto Orchard usa um método de atalho chamado "T" para fazer todas as traduções cordas em páginas. Então você verá etiquetas com uma @T ( "A String para Traduzir").

Eu pretendo ver como isso é implementado nos bastidores e potencialmente usá-lo em projetos futuros. O nome curto mantém o código mais limpo, uma vez que será usado um monte .

O que eu gosto sobre esta abordagem é a string original (Inglês, neste caso) ainda é facilmente visível no código, e não requer uma pesquisa em uma ferramenta de recurso ou algum outro local para decodificar o que a seqüência real deveria estar aqui.

Veja http://orchardproject.net para mais informações.

Respondeu 13/04/2011 em 19:44
fonte usuário

votos
1

Algumas das outras soluções mencionadas como resposta não funcionam para a versão lançada do MVC (que trabalhou com versões anteriores do alpha / beta).

Aqui está um bom artigo que descreve uma forma de implementar a localização que será fortemente tipado e não vai quebrar o teste de unidade de controladores e exibições: guia de localização para MVC v1

Respondeu 09/10/2009 em 15:24
fonte usuário

votos
0

Esta é outra opção, e você terá acesso ao CurrentUICulture no controlador:

Verifica MVC3-multi-idioma

Respondeu 13/07/2012 em 23:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more