【问题标题】:What advantages are the of using .resx localization for an ASP.NET MVC app?为 ASP.NET MVC 应用程序使用 .resx 本地化有哪些优势?
【发布时间】:2009-03-04 05:19:19
【问题描述】:

此站点上有许多与 ASP.NET MVC 应用程序中的 how to access RESX 文件有关的问题,以及 best practices 使用它们的问题。

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

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

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

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

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

【问题讨论】:

    标签: asp.net-mvc localization resx


    【解决方案1】:

    RESX 基础架构有几个优点:

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

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

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

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

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

    编辑:我忘了提到这些考虑因素与 ASP.NET 框架选择(MVC 或 WebForms)是正交的。

    【讨论】:

      【解决方案2】:

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

      使用资源的好处是

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

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

      【讨论】:

      • 谢谢伊恩。这就是我倾向于的方向。我以前不需要本地化任何东西。事实上,我还不需要本地化任何东西,但我想做好准备。我只是发现自己跳过了大部分不相关的内容,这让我很好奇我应该做什么
      • 我们现在正在经历本地化网站的痛苦。对我们来说,这是一组协同工作并且已经存在了几年的应用程序。这不是一个小任务:)。绝对至少在承诺你将如何处理事情之前考虑这一点。我希望这可以帮助您并节省您的工作:)
      • 我也想知道是否有任何资源抽象层,例如,我可以在每个字符串的开头添加一个 * ,然后知道我拥有和未本地化的内容。显然,使用 HtmlHelper 我可以很容易地自己做到这一点 - 但也许还有其他一些东西需要学习
      • 我认为非常有用的一个建议是在您的代码中使用 FXCop 来指出无法正确本地化的内容。我还没有看到诸如在文本前加上 * 的标准,但我确实看到了那里的好处。也许将 resx 换成另一个明显错误的数据,例如“mmmmm”
      【解决方案3】:

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

      例如 ''

      或 ''

      只是一个想法。

      使用 resx 文本管理网站的全球化也容易得多。

      【讨论】:

        猜你喜欢
        • 2020-02-02
        • 2016-08-04
        • 1970-01-01
        • 2011-03-06
        • 2011-01-13
        • 2018-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多