【发布时间】:2012-04-22 19:16:09
【问题描述】:
我正在构建一个使用 MVC 模式作为起始位置的多语言 Web 应用程序。该应用程序具有许多用户将与之交互的表单,其中许多表单将具有从数据库表中进行查找的字段,例如“省”。
如果我需要在屏幕上以用户的语言显示这些列表中的选项,我可以看到几种方法:
- 在模型中。 查询模型时,我可以提供我希望返回结果的语言。这将允许在模型数据显示不变的任何地方使用翻译。但是,这也意味着我的示例中的省模型(以及所有其他应用程序模型)现在需要知道如何进行语言翻译。
- 在控制器中。我可以像往常一样在控制器操作中查询模型,然后创建一个“翻译器”对象,我可以在完成操作之前将结果传递给该对象。这意味着每个控制器操作都可能复制相同的翻译代码,违反 DRY 原则。
- 在视图中。 由于应用程序的呈现通常期望存在于视图中,并且用户的语言不会影响系统的业务逻辑,因此可以使用该语言进行论证翻译属于这里。特别是考虑到页面还可能包含需要翻译的静态内容。这样做的缺点是它会使视图有些复杂,尤其是对于必须处理新翻译代码的前端设计人员。
对于文本翻译属于 Web 应用程序的 MCV 模式的位置,是否存在公认的最佳实践?如果我通过 AJAX 调用而不是在页面加载时加载选择列表选项,这种情况是否会发生变化?
感谢您的帮助!
【问题讨论】:
标签: model-view-controller web-applications architecture