¿Cuál es la mejor manera de admitir varios idiomas para la interfaz en una aplicación ASP.NET MVC? He visto personas usar archivos de recursos para otras aplicaciones. ¿Sigue siendo esta la mejor manera?Múltiples idiomas en una aplicación ASP.NET MVC?
Respuesta
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 piensas porque los recursos locales son locales para una página aspx y en el controlador, ni siquiera has seleccionado tu vista.
¿Esto también funcionará en el motor de vista de maquinilla de afeitar? –
Sí, esto tiene sentido para los controladores. ¿Pero qué hay de View Models? Son (a menudo) específicos para la vista y tendría sentido hacer referencia a los recursos específicos de la vista en el código del modelo de vista. Me pregunto si existe un mecanismo para hacer que un archivo de recursos sea local para una vista y su modelo de vista ... –
@Haacked, hola, tenemos un sitio web de compras en asp mvc, así que cuando el usuario selecciona el idioma árabe, queremos hacer el todo el sitio árabe, ¿podemos usar Microsoft Bing Bing [traductor] (https://www.bing.com/translator/) o microsoft [traductor API] (http://www.microsoft.com/en-us/translator/products .aspx) o debería comprar [localize.js] (https://localizejs.com/features) para lograr esto rápido? – stom
Sí, los recursos siguen siendo la mejor manera de admitir varios idiomas en el entorno .NET. Porque son fáciles de referencia e incluso más fáciles de agregar nuevos idiomas.
Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...
Así que usted todavía tiene que utilizar los archivos de recursos.
¿Cómo se deben colocar para que esto funcione? –
He encontrado this resource a ser muy útil
Es una envoltura alrededor de la HttpContext.Current.GetGlobalResourceString y HttpContext.Current.GetLocalResourceString que le permite llamar a los recursos así ...
// 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.
Algunas de las otras soluciones mencionadas como respuesta no funcionan para la versión de lanzamiento de MVC (funcionaban con versiones anteriores de alfa/beta).
Aquí es un buen artículo que describe una forma de implementar la localización que será inflexible y no rompa la unidad de pruebas de controladores y vistas: localization guide for MVC v1
proyecto The Orchard utiliza un método de acceso directo llamado "T" para hacer todas las traducciones de cadenas in-page. Entonces verás etiquetas con @T ("A String to Translate").
Tengo la intención de ver cómo esto se implementa detrás de las escenas y potencialmente utilizarlo 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 (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 otra ubicación para decodificar aquí.
Ver http://orchardproject.net para obtener más información.
Hay casos en los que la cadena de origen "A String to Translate", que es exactamente idéntica, debería traducirse de manera diferente en función del contexto circundante. Esto ocurre especialmente con cadenas de una sola palabra. – springy76
Esta es otra opción, y usted tendrá acceso a la CurrentUICulture en el controlador:
Comprobar MVC3-multi-language
- 1. Múltiples idiomas (inglés, francés) en ASP.NET Página
- 2. Cómo enrutar una URL de múltiples idiomas con un MVC
- 3. ¿Cómo localizar la aplicación ASP.NET MVC?
- 4. múltiples formas en ASP.NET MVC
- 5. Aplicación multilingüe en ASP.NET MVC: ¿mejores prácticas?
- 6. Múltiples proyectos de ASP.NET MVC que se crean como aplicación ASP.NET MVC única
- 7. ¿Aloja múltiples dominios con la misma aplicación ASP.NET MVC?
- 8. MVC asp.net: Enviar formularios múltiples
- 9. Aplicación expreso en varios idiomas
- 10. Múltiples entornos en ASP.Net MVC 2
- 11. ¿Cuánto tiempo durará una aplicación ASP.NET MVC?
- 12. portadas múltiples en varios idiomas
- 13. ¿Qué se debe tener en cuenta al desarrollar una aplicación MVC asp.net de múltiples usuarios?
- 14. Índices de múltiples propietarios en RavenDB en asp.net MVC
- 15. ASP.NET MVC Múltiples casillas de verificación
- 16. clase estática en Asp.NET MVC aplicación
- 17. ASP.Net MVC - Maneje múltiples casillas de verificación
- 18. ASP.NET MVC Aplicación web vs Aplicación web ASP.NET
- 19. Enrutamiento con múltiples parámetros usando ASP.NET MVC
- 20. Aplicación web ASP.NET MVC en tiempo real
- 21. Múltiples idiomas en una base de datos - SQL Server 2005
- 22. ASP.NET MVC - Ver con múltiples modelos
- 23. ASP.Net MVC Pasar parámetros múltiples a una vista
- 24. ASP.NET MVC HTML.AntiForgeryToken() con múltiples solicitudes AJAX desde una página
- 25. ¿Qué establece User.Identity.IsAuthenticated en una aplicación ASP.NET MVC?
- 26. ¿Cómo trabajo con Ninject en una aplicación web ASP.NET MVC?
- 27. jQuery en una aplicación ASP.net MVC utilizando páginas maestras
- 28. ¿Cómo calentar una aplicación ASP.NET MVC en IIS 7.5?
- 29. ¿Cómo visualizo AppSettings en una aplicación web ASP.NET MVC?
- 30. asp.net mvc aplicación modular howto/recommendations
posible duplicado de [Cómo localizar la aplicación ASP.NET MVC?] (Http: // stackoverflow.com/questions/192465/how-to-localize-asp-net-mvc-application) – Marijn
sitio web multilingüe con el parámetro out passing, consulte este [sitio web multilingüe en MVC 4 C#] (http: //lesson8.blogspot .in/2013/03/multi-language-website-in-mvc-4-c.html) – Sender