Como localizar o aplicativo ASP.NET MVC?

121

Qual seria a melhor prática para localizar seu aplicativo ASP.NET MVC?

Eu gostaria de cobrir duas situações:

  • implantação de um aplicativo no IIS que manipularia vários idiomas
  • implantação de um idioma / aplicativo.

Na primeira situação, você deve usar algum tipo de visão, como ~ / View / PT, ~ / View / FI, ~ / View / SWE ou algo diferente?

E o segundo caso, apenas a configuração baseada em aplicativos via Web.config e apontar esses diferentes idiomas para diferentes URLs?

pirho
fonte
Como alternativa às visualizações duplicadas, você pode usar arquivos ResX padrão para armazenar seqüências específicas de cultura. Infelizmente, gerenciar e editar esses arquivos, principalmente pelos tradutores, é um pouco desconfortável e difícil. Isso pode ser simplificado armazenando recursos no banco de dados e usando alguma ferramenta de localização externa. Você pode olhar para esta biblioteca gratuita fornecendo provedor de recursos de banco de dados: globsite.net/GlobsiteGlobalizationLibrary
Kryszal

Respostas:

72

Você também pode dar uma olhada aqui ASP.NET MVC 2 Localização guia completo e ASP.NET MVC 2 Validação do Modelo com localização destes entires irá ajudá-lo se você trabalhar com ASP.NET MVC 2.

fyasar
fonte
Obrigado por esta resposta atualizada! Há um ano, usei a abordagem de Matt Hawley, mas tive sérios problemas com os testes de unidade. Tentei zombar do contexto do controlador, mas ainda faltava algo e desisti. Vou seguir esse caminho do MVC2 e espero que eles tenham entendido isso.
Lauri Larjo
Eu costumava usar essa abordagem em meus projetos, devo dizer que essa abordagem é melhor.
Fyasar 25/08/10
@fyasar oi, temos um site de compras em asp mvc, portanto, quando o usuário seleciona o idioma árabe, queremos tornar todo o site árabe, podemos usar o tradutor microsoft bing ou a API do tradutor microsoft ou devo comprar o localize.js para obter esse rápido ?
shaijut
22

Você localizaria seu aplicativo ASP.NET MVC da mesma maneira que faria com um aplicativo ASP.NET Web Form clássico.

Você não usaria páginas / visualizações diferentes para cada idioma, mas cada página suportaria vários idiomas usando assemblies de satélite.

Você pode consultar a entrada do blog de Matt Hawley para obter mais explicações e exemplos.

Elijah Manor
fonte
3

Dê uma olhada no projeto MvcStore de Rob Connery. Ele faz um screencast mostrando uma maneira de resolver o problema da globalização.

http://wekeroad.com/2008/04/24/mvcstore-part-5

Joel Cunningham
fonte
2

Nunca me convenci de lidar com a localização de uma forma, como sugere Elijah - os diferentes comprimentos e direções podem levar a formas muito complexas ou diferentes.

Estou apenas começando com o MVC, mas, usando o método de dissociação, você desejaria usar o mesmo controlador independentemente do idioma (tratando o idioma apenas como uma exibição) - isso forneceria / Controller / Action / language / form

Ian T
fonte
2

Há um bom tutorial com atualização recente sobre Como localizar o aplicativo asp.net mvc, cobrindo todos os aspectos, incluindo a localização DisplayName, Validação, usando o roteamento (armazenando o nome da cultura no URL), problemas com o cache de saída e assim por diante ... Alex Adamyan Blog - While meu teclado chora suavemente

user405803
fonte
1

Na verdade, fomos totalmente diferentes ao substituir o DataAnnotationsMetadaDataProvider . Lá, você pode garantir que os valores DisplayNameAttribute sejam resolvidos no idioma correto. Na verdade, você pode até se livrar desse atributo e resolver por nomes de campo apenas se isso for de alguma ajuda.

Michael Sander
fonte
0

Eu escrevi este artigo há um tempo atrás. Ele usa um mecanismo de exibição personalizado. http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/

Vlad
fonte
1
Embora seu artigo possa de fato responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência. O Stack Overflow é tão útil quanto suas perguntas e respostas, e se o host do seu blog ficar inoperante ou os seus URLs forem movidos, essa resposta se tornará inútil. Obrigado!
sarnold