¿Cómo localizar la aplicación ASP.NET MVC?

121

¿Cuál sería la mejor práctica para localizar su aplicación ASP.NET MVC?

Me gustaría cubrir dos situaciones:

  • Una implementación de aplicación en IIS que manejaría múltiples idiomas
  • implementación de un idioma / aplicación.

En la primera situación, ¿debería ir con algún tipo de vista basada en algo como ~ / View / EN, ~ / View / FI, ~ / View / SWE o algo diferente?

¿Qué pasa con el segundo caso, solo la configuración basada en la aplicación a través de Web.config y señalar estos diferentes idiomas a diferentes URL?

pirho
fuente
Como alternativa a las vistas duplicadas, puede usar archivos ResX estándar para almacenar cadenas específicas de cultura. Desafortunadamente, administrar y editar estos archivos, especialmente por traductores, es un poco incómodo y difícil. Se puede simplificar almacenando recursos en la base de datos y utilizando alguna herramienta de localización externa. Puede consultar esta biblioteca gratuita que ofrece el proveedor de recursos de la base de datos: globsite.net/GlobsiteGlobalizationLibrary
Kryszal

Respuestas:

72

También puede echar un vistazo aquí ASP.NET MVC 2 Localización guía completa y ASP.NET MVC 2 Validación del Modelo con la localización de estos entires le ayudará si se trabaja con ASP.NET MVC 2.

fyasar
fuente
¡Gracias por esta respuesta actualizada! Hace un año, utilicé el enfoque de Matt Hawley, pero me encontré con serios problemas con las pruebas de la Unidad. Intenté burlarme del contexto del controlador, pero todavía faltaba algo más y me di por vencido. Voy a seguir este camino MVC2, y espero que hayan resuelto esto.
Lauri Larjo
Solía ​​usar este enfoque en mis proyectos, debería decir que este enfoque es mejor.
fyasar
@fyasar hola, tenemos un sitio web de compras en asp mvc, por lo que cuando el usuario selecciona el idioma árabe, queremos que todo el sitio sea árabe, ¿podemos usar el traductor de microsoft bing o la API del traductor de microsoft o debería comprar localize.js para lograr esto rápidamente? ?
shaijut
22

Localizaría su aplicación ASP.NET MVC de la misma manera que lo haría con una aplicación clásica de formulario web ASP.NET.

No usaría diferentes páginas / vistas para cada idioma, pero cada página admitiría múltiples idiomas usando ensambles satelitales.

Puede consultar la entrada del blog de Matt Hawley para obtener más explicaciones y ejemplos.

Elijah Manor
fuente
2

Nunca me he convencido de manejar la localización dentro de un formulario, como sugiere Elijah: las diferentes longitudes y direcciones pueden conducir a formas muy complejas o de aspecto poco convincente.

Solo estoy comenzando con MVC, pero tomando el método de desacoplamiento, querrías usar el mismo controlador independientemente del idioma (tratando el idioma solo como una vista); esto te daría / Controlador / Acción / idioma / formulario

Ian T
fuente
2

Hay un buen tutorial con una actualización reciente sobre cómo localizar la aplicación asp.net mvc que cubre todos los aspectos, incluida la localización de DisplayName, la validación, el uso de enrutamiento (almacenamiento del nombre de la cultura en la URL), problemas con la caché de salida y así sucesivamente ... Alex Adamyan Blog - Mientras mi teclado llora suavemente

usuario405803
fuente
1

De hecho, fuimos completamente diferentes al anular el DataAnnotationsMetadaDataProvider . Allí puede asegurarse de que los valores DisplayNameAttribute se resuelvan en el idioma correcto. En realidad, incluso podría deshacerse de ese atributo y resolverlo por los nombres de campo solo si eso fuera de ayuda.

Michael Sander
fuente
0

Escribí este artículo hace un tiempo. Utiliza un motor de vista personalizado. http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/

Vlad
fuente
1
Si bien su artículo puede responder la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia. Stack Overflow solo es tan útil como sus preguntas y respuestas, y si el host de su blog deja de funcionar o sus URL se mueven, esta respuesta se vuelve inútil. ¡Gracias!
sarnold