Sto costruendo un'applicazione web multilingue utilizzando il pattern MVC come posizione di partenza. L'applicazione ha un numero di moduli con cui gli utenti interagiranno e molti di questi moduli avranno campi che eseguono una ricerca da una tabella di database, ad esempio "Provincia".Dove si adatta la traduzione della lingua nel pattern MVC?
Se ho bisogno le opzioni in questi elenchi da visualizzare nella lingua degli utenti sullo schermo, posso vedere un paio di modi per farlo:
- Nel modello. Quando si esegue una query sul modello, è possibile fornire la lingua in cui desidero restituire i risultati. Ciò consentirebbe di utilizzare le traduzioni ovunque i dati del modello vengano visualizzati senza modifiche. Tuttavia, questo significa anche che il modello Provincia nel mio esempio (più tutti gli altri modelli di applicazione) ora ha bisogno di sapere come fare le traduzioni linguistiche.
- Nel controller. Posso interrogare il modello nell'azione del controller come al solito e quindi creare un oggetto "Translator" in cui posso passare i risultati prima di completare l'azione. Ciò implicherebbe che ogni azione del controllore potrebbe potenzialmente duplicare lo stesso codice di traduzione, violando il principio DRY.
- Nella vista. Poiché la presentazione dell'applicazione è generalmente prevista nelle viste e la lingua dell'utente non ha alcun impatto sulla logica di business del sistema, è possibile fare una discussione sulla presenza di traduzioni linguistiche. Soprattutto considerando che una pagina potrebbe contenere anche contenuto statico che dovrà essere tradotto. Il rovescio della medaglia è che complicherebbe un po 'le viste, specialmente per i progettisti front-end che dovranno aggirare il nuovo codice di traduzione.
Esiste una best practice accettata in cui le traduzioni di testo appartengono al modello MCV per le applicazioni Web? Questo cambia del tutto se dovessi caricare le opzioni dell'elenco di selezione tramite una chiamata AJAX anziché a tempo di caricamento della pagina?
Grazie per l'aiuto!
Suppongo che ciò aprirebbe il dibattito tra modelli grassi/skinny controller e skinny model/fat controller. Ho ragione che avresti la tua logica di business nei controller? –
@WallyLawless Mai sentito nessuno discutere di controller grassi. I controller sono un sottile strato che traduce dalla vista al modello e al modello da visualizzare. I controller non vengono solitamente riutilizzati, sono solo colla, non riempiono il codice con la colla. –