Pregunta

¿Cuál es la mejor manera de admitir varios idiomas para la interfaz en una aplicación ASP.NET MVC?He visto gente usar archivos de recursos para otras aplicaciones.¿Sigue siendo esta la mejor manera?

¿Fue útil?

Solución

Si está utilizando los motores de visualización predeterminados, los recursos locales funcionan en las vistas.Sin embargo, si necesita obtener cadenas de recursos dentro de una acción del controlador, no podrá obtener recursos locales y tendrá que utilizar recursos globales.

Esto tiene sentido si lo piensas porque los recursos locales son locales para una página aspx y en el controlador ni siquiera has seleccionado tu vista.

Otros consejos

encontré este recurso ser muy útil

Es una envoltura alrededor del HttpContext.Current.GetGlobalResourceString y HttpContext.Current.GetLocalResourceString eso te permite llamar a los recursos de esta manera...

// 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")

El único problema que encontré es que los controladores no tienen acceso a las cadenas de recursos locales.

Sí, los recursos siguen siendo la mejor manera de admitir varios idiomas en el entorno .NET.Porque son fáciles de consultar y aún más fáciles de agregar nuevos idiomas.

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

Entonces tienes razón, sigue usando los archivos de recursos.

El proyecto Orchard utiliza un método abreviado llamado "T" para realizar todas las traducciones de cadenas en la página.Entonces verás etiquetas con @T("Una cadena para traducir").

Tengo la intención de ver cómo se implementa esto entre bastidores y potencialmente usarlo en proyectos futuros.El nombre corto mantiene el código más limpio ya que se utilizará. mucho.

Lo que me gusta de este enfoque es que la cadena original (inglés, en este caso) todavía es fácilmente visible en el código y no requiere una búsqueda en una herramienta de recursos o en alguna otra ubicación para decodificar cuál debería ser la cadena real aquí.

Ver http://orchardproject.net para más información.

Algunas de las otras soluciones mencionadas como respuesta no funcionan para la versión lanzada de MVC (funcionaron con versiones anteriores de alfa/beta).

Aquí hay un buen artículo que describe una forma de implementar una localización que estará fuertemente tipada y no interrumpirá las pruebas unitarias de controladores y vistas: guía de localización para MVC v1

Esta es otra opción y tendrá acceso a CurrentUICulture en el controlador:

Controlar MVC3-multilenguaje

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top