2010-06-04 3 views
24

J'ai travaillé sur ma première application MVC, et j'aimerais la localiser. Je sais comment utiliser App_GlobalResources mais je préfère utiliser App_LocalResources.Comment fonctionne App_LocalResources avec MVC?

Dans une application WebForms classique, vous placez le dossier App_LocalResources dans le même répertoire que le fichier ASPX ... est-ce la même chose dans MVC (IE: les place-t-on dans les sous-dossiers respectifs du répertoire "views") ?

En outre, lors de l'accès à l'App_GlobalResources dans votre vue, vous pouvez le faire comme si <%=Html.Encode(Resources.Index.Title)%> mais je ne peux pas le faire avec App_LocalResources. Je ne veux pas avoir à faire mon <label runat="server" afin de tirer profit de la meta:resourcekey


EDIT:

J'ai découvert une méthode pour ce faire, mais je ne suis pas sûr si cela est la meilleure méthode. Voici l'idée

  1. Vous mettez le dossier App_LocalResources comme un sous-dossier de votre dossier respectif Voir
  2. Vous créez resx qui correspondent à vos vues ... IE: Index.resx ou About.resx
  3. Vous définissez le Resx les propriétés des fichiers doivent être «Public» (PublicResXFileCodeGenerator), «Embeded Resource», espace de noms «Views. [viewname]»
  4. Créez un nouveau nom de ressource appelé «Title» et placez ce que vous voulez dans la valeur.

Maintenant, je peux faire référence aux ressources locales en utilisant quelque chose comme ça

<%= MyProj.Views.Home.Index.Title%>

Le seul problème que je vois cela est le fait que les ressources sont intégrées et je ne peux pas ajouter de nouveaux lieux sans re- compiler le projet.

Here is my reference on this method.

Répondre

16

Vous ne devriez pas utiliser App_GlobalResources ou App_LocalResources avec MVC. C'est à cause de la façon dont ces ressources fonctionnent. Ces ressources ne sont pas incorporées dans votre projet, mais sont compilées à la place par le runtime ASP.NET. Cela signifie que vos ressources ne seront pas disponibles si elles ne sont pas exécutées dans l'environnement d'exécution ASP.NET, ce qui signifie que vous ne pourrez plus tester vos vues et contrôleurs si vous utilisez des ressources.

This post donne plus de détails à ce sujet. Au lieu de cela, vous devriez utiliser l'approche que vous mentionnez vous-même dans votre question. Placez votre ressource où vous voulez, et réglez-la sur 'Embedded resource' et l'outil personnalisé devrait être 'PublicResXFileCodeGenerator'.

1

Je sais que cela ne répond pas directement à la question, mais ce que je pense que vous êtes vraiment à la recherche est « Comment puis-je faire avec la localisation ASP.NET MVC ».

Vous pouvez vérifier les réponses à cette question stackoverflow.com et voir si elles aident à répondre au problème que vous voulez résoudre: how-to-localize-asp-net-mvc-application

Questions connexes