10

此站点上有许多与如何在 ASP.NET MVC 应用程序中访问 RESX 文件以及使用它们的最佳实践相关的问题。

然而,在阅读了(我可能是第一次添加)关于资源的 MSDN 文章后,我想知道使用 RESX 文件是否有任何优势,因为我不会使用服务器控件。有所有关于“隐式”和“显式”本地化的讨论,但我不会从 MVC 中受益。

最终,我的应用程序将需要用于按钮和菜单项的字符串资源,以及用于更长杂项内容的更长的 HTML 项。我想对较长的项目使用 CMS,因为我很确定我不想将它们粘贴到 RESX 文件中。

是否有任何令人信服的理由在新应用程序中使用或不使用 ASP.NET 资源。我将假设任何未来的 MVC 增强或 RESX 增强将协同工作,但就我所见,现在我只是得到一个美化的 IDictionary。

我应该继续使用 RESX 还是寻找其他地方?我是否应该考虑为 RESX 设计的资源类型使用 CMS?

任何经验教训将不胜感激。

4

3 回答 3

10

RESX 基础架构有几个优点:

  • 您不必加载正确的每种语言资源。一旦建立了线程的语言环境,CLr 就会负责查找适当的程序集并加载资源。
  • 很容易将特定于语言环境的资源移交给第三方进行本地化。
  • 非本地化资源有一个默认的回退机制。

RESX 方法还有一个特别的缺点:

  • 很难支持用户为您翻译资源的翻译模型。

我想详细说明最后一点。以 Facebook 翻译模型为例。Facebook 有相当简单的方法供人们提供各种资源的翻译并对其进行投票。如果这些存储在数据库中,则可以在适当的编辑过程之后使用它们,而无需重新构建和重新部署应用程序。使用 RESX 模型,必须重新构建和重新部署资源组件,这可能具有足够高的成本,具体取决于部署过程。

因此,在决定使用什么本地化过程之前,我会先决定谁将进行本地化,以及在主应用程序已经部署后本地化资源的部署过程是什么。

编辑:我忘了提到这些注意事项与 ASP.NET 框架选择(MVC 或 WebForms)是正交的。

于 2009-03-04T05:53:15.770 回答
4

我会说“是”,resx 文件仍然是新应用程序的不错选择。我不认为 ASP.NET MVC 特别改变了存储字符串的任何内容。

使用资源的好处是

  • 他们很容易管理
  • 本地化您的网站比没有资源要容易得多(而且我强调容易得多)
  • 您可以随时替换资源存储,因为资源使用提供者模型。您可以在不更改站点实现的情况下为 db 条目切换 resx 文件。

我推荐“站点字符串”的资源文件,这些文件不同于您可能经常编辑的大块数据。因此,对于完整的建议,我会说对按钮、标签等使用资源文件(resx 开始),对丰富的内容使用 CMS。

于 2009-03-04T05:25:24.433 回答
3

如果您打算使用 Resx 而不是像在 MVC 中那样使用 Server Controls,为什么不扩展 MVC Helper 方法以便创建本地化标签和文本?然后只需在辅助方法中从资源中调用文本。

例如'<%=Html.CultureLabel("ResouceId") %>'

或 '<%=Html.CultureButton("Name","ResouceId", HtmlButtonType.Button) %>'

只是一个想法。

此外,使用 resx 文本更容易管理站点的全球化。

于 2009-03-04T13:27:08.520 回答