资源文件作为 MVC 应用程序中的可编辑内容

Resource files as editable content in a MVC application

一位客户希望能够将任何语言添加到我目前正在构建的基于多语言 MVC 的站点。

他们将负责自己提供翻译,虽然这个过程不需要通过 GUI 启用,但它需要足够简单,所以重新编译项目是不行的。可以编辑文本文件(可能是 XML)。

Web.config 文件中使用分号分隔的语言代码列表(例如:en-US;de-GE 等)并在 App_GlobalResources 中使用 RESX 文件文件夹我能够满足条件...至少只要在 Razor 页面或 MVC 控制器中使用资源。

但是有一个问题 - 任何尝试使用 MVC 视图模型 类 中的资源(例如 Display 属性或 Compare 属性)都会引发错误:

System.InvalidOperationException: Cannot retrieve property 'Name' because localization failed. Type '[Resource Type Here]' is not public or does not contain a public static string property with the name '[Resource Name Here]'.

There are several 问题已经在 Whosebug 上处理这个问题,但所有问题都围绕着将资源文件从 content 文件转换为 嵌入式资源。虽然这可能会使代码正常运行,但这对我不利,因为客户端无法再编辑资源!

在这种情况下我还能做什么?

最后我放弃了使用 MVC 的自动化机制,在 Razor 文件中使用 @Resources.MyResource.DisplayName 以及添加的 data-val-required 等属性,这些属性也可以随资源一起提供。