asp.net-mvc - route - tag helper asp net core 2
Múltiples idiomas en una aplicación ASP.NET MVC? (6)
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 la localización que será fuertemente tipada y no interrumpirá las pruebas unitarias de controladores y vistas: guía de localización para MVC v1
¿Cuál es la mejor manera de admitir varios idiomas para la interfaz en una aplicación ASP.NET MVC? He visto a personas usar archivos de recursos para otras aplicaciones. ¿Sigue siendo la mejor manera?
El proyecto Orchard utiliza un método de acceso directo llamado "T" para hacer todas las traducciones de cadenas en la página. Por lo tanto, verá etiquetas con una @T ("Una cadena para traducir").
Tengo la intención de ver cómo se implementa esto detrás de escena y potencialmente usarlo en proyectos futuros. El nombre corto mantiene el código más limpio, ya que se usará mucho .
Lo que me gusta de este enfoque es que la cadena original (en 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 u otra ubicación para decodificar cuál debería ser la cadena real aquí.
Ver http://orchardproject.net para más información.
Esta es otra opción, y tendrá acceso a la CurrentUICulture en el controlador:
Compruebe MVC3-multi-language
Sí, los recursos siguen siendo la mejor manera de admitir varios idiomas en el entorno .NET. Porque son fáciles de referencia y aún más fáciles de agregar nuevos idiomas.
Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...
Así que tienes razón, todavía usa los archivos de recursos.
Si está utilizando los motores de vista predeterminados, los recursos locales funcionan en las vistas. Sin embargo, si necesita obtener cadenas de recursos dentro de una acción de controlador, no puede obtener recursos locales y debe usar recursos globales.
Esto tiene sentido cuando lo piensa porque los recursos locales son locales para una página aspx y en el controlador, ni siquiera ha seleccionado su vista.
Este recurso me pareció muy útil
Es un contenedor alrededor de HttpContext.Current.GetGlobalResourceString y HttpContext.Current.GetLocalResourceString que le 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.