2010-06-04 19 views
24

He estado trabajando con mi primera aplicación MVC y me gustaría localizarla. Sé cómo usar App_GlobalResources pero prefiero usar App_LocalResources.¿Cómo funciona App_LocalResources con MVC?

En una aplicación típica de WebForms, coloca la carpeta App_LocalResources en el mismo directorio que el archivo ASPX ... ¿es esto lo mismo en MVC (IE: los pongo en las respectivas subcarpetas en el directorio "views") ?

Además, al acceder a App_GlobalResources en su vista, puede hacerlo como <%=Html.Encode(Resources.Index.Title)%>, pero no puedo hacer eso con App_LocalResources. Yo no quiero tener que hacer mi <label runat="server" con el fin de aprovechar el meta:resourcekey


EDIT:

he descubierto un método para hacer esto, pero no estoy seguro si esto es el mejor método. Aquí está la idea

  1. Se pone la carpeta App_LocalResources como una subcarpeta dentro de su respectiva Ver carpeta
  2. Se crea archivos resx que se corresponden con sus ... Vistas IE: Index.resx o About.resx
  3. Se establece el Resx propiedades de archivos para ser "Public" (PublicResXFileCodeGenerator), "Embeded Resource", "Views. [viewname]" namespace
  4. Cree un nuevo nombre de recurso llamado "Título" y coloque lo que desee en el valor.

Ahora puede hacer referencia a los recursos locales utilizando algo como esto

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

El único problema que veo con esto es el hecho de que están incrustados los recursos y no puedo añadir nuevos lugares sin re- compilando el proyecto

Here is my reference on this method.

Respuesta

16

No use App_GlobalResources o App_LocalResources con MVC. Eso es por la forma en que funcionan estos recursos. Estos recursos no están integrados en su proyecto, sino que son compilados por el tiempo de ejecución de ASP.NET. Esto significa que sus recursos no estarán disponibles cuando no se ejecutan dentro del tiempo de ejecución de ASP.NET, lo que significa que usted perderá la capacidad de probar sus puntos de vista y controladores si usa recursos en ellos.

This post da más detalles al respecto.

En su lugar, debe usar el enfoque que menciona en su pregunta. Coloque su recurso donde quiera y configúrelo como 'Recurso incrustado' y la herramienta personalizada debería ser 'PublicResXFileCodeGenerator'.

1

Sé que esto no responde directamente a la pregunta, pero lo que creo que realmente está buscando es "¿cómo lo hago localización con ASP.NET MVC".

debes revisar las respuestas a esta pregunta stackoverflow.com y ver si ayudan a responder al problema que desea resolver: how-to-localize-asp-net-mvc-application

Cuestiones relacionadas