我正在構建一個使用MVC模式作爲開始位置的多語言Web應用程序。該應用程序有許多表單,用戶將與之交互,並且這些表單中的許多表單將具有從數據庫表(例如「省」)進行查找的字段。語言翻譯適合MVC模式在哪裏?
如果我需要在這些列表顯示在用戶的屏幕上的語言選項,我可以看到一對夫婦的方式做到這一點:
- 在模型中。當查詢模型時,我可以提供我希望返回結果的語言。這將允許在模型中顯示數據時無需更改即可使用翻譯。但是,這也意味着我的示例中的Province模型(加上所有其他應用程序模型)現在需要知道如何進行語言翻譯。
- 在控制器中。我可以像往常一樣在控制器操作中查詢模型,然後創建一個'Translator'對象,在完成操作之前可以將結果傳遞給對象。這意味着每個控制器操作可能會重複相同的翻譯代碼,違反了DRY原則。
- 在視圖中。由於通常預期應用程序的表示會存在於視圖中,並且用戶的語言不會影響系統的業務邏輯,因此可能會說語言翻譯屬於此處。特別是考慮到一個頁面還可能包含需要翻譯的靜態內容。這樣做的缺點是它會使觀點複雜化,特別是對於必須解決新翻譯代碼的前端設計人員。
對於Web應用程序的MCV模式中的文本翻譯屬於哪裏,是否有一個公認的最佳做法?如果我要通過AJAX調用而不是在頁面加載時加載選擇列表選項,這是否會改變?
感謝您的幫助!
我想這會打開fat models/skinny controller和skinny models/fat controller之間的爭論。我是對的,你會在控制器中擁有你的業務邏輯? – 2012-04-10 19:56:06
@WallyLawless從來沒有人聽到有人認爲胖控制器。控制器是一個從視圖轉換到模型和模型以查看的薄層。控制器通常不會重複使用,它們只是膠水,不會用膠水填充您的代碼。 – 2012-06-14 19:25:59