Estoy construyendo una aplicación web multilingüe usando el patrón MVC como la posición inicial. La aplicación tiene una serie de formularios con los que los usuarios interactuarán y muchos de estos formularios tendrán campos que hacen una búsqueda de una tabla de base de datos, por ejemplo, "Provincia".¿Dónde encaja la traducción de idiomas en el patrón MVC?
Si necesito las opciones en estas listas que se mostrarán en el idioma de los usuarios en la pantalla, puedo ver un par de maneras de hacer esto:
- En el modelo. Al consultar el modelo, puedo proporcionar el idioma en el que deseo que se devuelvan los resultados. Esto permitiría que las traducciones se utilicen en cualquier lugar donde se muestren los datos del modelo sin cambios. Sin embargo, esto también significa que el modelo de la Provincia en mi ejemplo (además de todos los demás modelos de aplicaciones) ahora necesita saber cómo hacer traducciones de idiomas.
- En el controlador. Puedo consultar el modelo en la acción del controlador como de costumbre y luego crear un objeto 'Traductor' en el que puedo pasar los resultados antes de completar la acción. Esto implicaría que cada acción del controlador podría estar duplicando el mismo código de traducción, violando el principio DRY.
- En la vista. Como generalmente se espera que exista la presentación de la aplicación en las vistas, y el idioma del usuario no afecta la lógica de negocios del sistema, se podría argumentar que las traducciones de idiomas pertenecen aquí. Especialmente si se considera que una página también puede contener contenido estático que deberá traducirse. La desventaja de esto es que complicaría un poco las vistas, especialmente para los diseñadores de aplicaciones para el usuario que tendrán que trabajar con el nuevo código de traducción.
¿Existe una mejor práctica aceptada para las traducciones de texto en el patrón MCV para aplicaciones web? ¿Esto cambia para nada si estuviera cargando las opciones de la lista de selección a través de una llamada AJAX en lugar de al momento de cargar la página?
¡Gracias por la ayuda!
Supongo que esto abriría el debate entre los modelos gordos/controladores delgados y los modelos delgados/controladores de grasa. ¿Estoy en lo cierto al decir que tu lógica de negocios estaría en los controladores? –
@WallyLawless Nunca escuché a nadie argumentar a favor de los controladores de grasa. Los controladores son una capa delgada que se traduce desde la vista hasta el modelo y modelo para ver. Los controladores generalmente no se reutilizan, solo son pegamento, no llenen su código con pegamento. –