Pergunta

Qual é a melhor forma de oferecer suporte a vários idiomas para a interface em um ASP.NET aplicativo MVC?Eu vi as pessoas usam arquivos de recursos para outras aplicações.Isso ainda é o melhor caminho?

Foi útil?

Solução

Se você estiver usando o modo de exibição padrão motores, em seguida, os recursos locais de trabalho nas vistas.No entanto, se você precisa pegar cadeias de recursos dentro de uma ação de um controller, você não pode ficar de recursos locais, e têm para utilizar 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ê ainda não tiver selecionado o modo de exibição.

Outras dicas

Eu encontrei este recurso para ser muito útil

Um wrapper rodada o HttpContext.Atual.GetGlobalResourceString e HttpContext.Atual.GetLocalResourceString que permite que você chamar a 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 ao local com o recurso de cadeias de caracteres.

Sim recursos ainda são a melhor forma de oferecer suporte a vários idiomas no .NET ambiente.Porque eles são fáceis de referência e ainda mais fácil adicionar novos idiomas.

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

Assim que você estiver certo ainda utilizar o recurso de arquivos.

O Pomar projeto utiliza um método de atalho chamado de "T" para fazer todas as página cadeia de traduções.Então, você vai ver tags, com um @T("Uma String para Traduzir").

Pretendo observar como isso é implementado por trás das cenas e, potencialmente, a utilizar em futuros projectos.O nome curto mantém o código mais limpo, pois será utilizado um monte.

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

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

Algumas das outras soluções mencionado como resposta não funcionam para a versão lançada do MVC (eles trabalharam com versões anteriores do alfa/beta).

Aqui está um bom artigo descrevendo uma forma de implementar a localização que será fortemente tipados e não vai quebrar o teste de unidade de controllers e views: localização guia para MVC v1

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

Seleção MVC3-multi-idioma

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