Comment localiser l'application ASP.NET MVC?

121

Quelle serait la meilleure pratique pour localiser votre application ASP.NET MVC?

Je voudrais couvrir deux situations:

  • un déploiement d'application dans IIS qui prendrait en charge plusieurs langues
  • déploiement d'une seule langue / application.

Dans la première situation, devriez-vous opter pour une sorte de chose basée sur la vue comme ~ / View / EN, ~ / View / FI, ~ / View / SWE ou quelque chose de différent?

Qu'en est-il du deuxième cas, juste une configuration basée sur une application via Web.config et pointer ces différentes langues vers différentes URL?

pirho
la source
Alternativement aux vues dupliquées, vous pouvez utiliser des fichiers ResX standard pour stocker des chaînes spécifiques à la culture. Malheureusement, gérer et éditer ces fichiers, en particulier par les traducteurs, est un peu inconfortable et difficile. Il peut être simplifié en stockant les ressources dans la base de données et en utilisant un outil de localisation externe. Vous pouvez consulter cette bibliothèque gratuite fournissant un fournisseur de ressources de base de données: globsite.net/GlobsiteGlobalizationLibrary
Kryszal

Réponses:

72

Vous pouvez également jeter un coup d' oeil ici ASP.NET MVC 2 Localisation Guide complet et ASP.NET MVC 2 Validation du modèle avec la localisation de ces entires vous aider si vous travailler avec ASP.NET MVC 2.

Fyasar
la source
Merci pour cette réponse mise à jour! Il y a un an, j'ai utilisé l'approche de Matt Hawley, mais j'ai rencontré de sérieux problèmes avec les tests unitaires. J'ai essayé de me moquer du contexte du contrôleur, mais il manquait encore quelque chose et j'ai abandonné. Je vais passer par cette voie MVC2, et j'espère qu'ils ont compris cela.
Lauri Larjo
J'avais l'habitude d'utiliser cette approche dans mes projets, je dois dire que cette approche est meilleure.
fyasar
@fyasar salut, nous avons un site Web d'achat en asp mvc, donc lorsque l'utilisateur sélectionne la langue arabe, nous voulons rendre l'ensemble du site arabe, pouvons-nous utiliser Microsoft Bing Translator ou Microsoft Translator API ou devrais-je acheter localize.js pour y parvenir rapidement ?
shaijut
22

Vous localiseriez votre application ASP.NET MVC de la même manière qu'une application de formulaire Web ASP.NET classique.

Vous n'utiliseriez pas différentes pages / vues pour chaque langue, mais chaque page prendrait en charge plusieurs langues en utilisant des assemblys satellites.

Vous pouvez consulter l'entrée de blog de Matt Hawley pour plus d'explications et d'exemples.

Manoir Elijah
la source
2

Je n'ai jamais été convaincu de gérer la localisation dans un formulaire comme le suggère Elijah - les différentes longueurs et directions peuvent conduire à des formes très complexes ou très naffes.

Je ne fais que commencer avec MVC mais en prenant la méthode de découplage, vous voudriez utiliser le même contrôleur quelle que soit la langue (en traitant la langue comme une vue) - cela vous donnerait alors / Controller / Action / language / form

Ian T
la source
2

Il existe un bon tutoriel avec une mise à jour récente sur Comment localiser l'application mvc asp.net couvrant tous les aspects, y compris la localisation DisplayName, la validation, l'utilisation du routage (stockage du nom de la culture dans l'URL), les problèmes avec le cache de sortie, etc. Blog Alex Adamyan - Bien mon clavier pleure doucement

utilisateur405803
la source
1

Nous sommes en fait complètement différents en remplaçant DataAnnotationsMetadaDataProvider . Ici, vous pouvez vous assurer que les valeurs DisplayNameAttribute sont résolues dans la langue correcte. En fait, vous pouvez même vous débarrasser de cet attribut et résoudre par des noms de champs uniquement si cela peut vous aider.

Michael Sander
la source
0

J'ai écrit cet article il y a quelque temps. Il utilise un moteur de visualisation personnalisé. http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/

Vlad
la source
1
Bien que votre article puisse en fait répondre à la question, il serait préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Stack Overflow n'est aussi utile que ses questions et réponses, et si l'hôte de votre blog tombe en panne ou si vos URL sont déplacées, cette réponse devient inutile. Merci!
sarnold