客户希望能够将任何语言添加到我正在构建的基于MVC的多语言网站。
他们将负责提供翻译本身,虽然不需要通过GUI启用该过程,但它需要足够简单,因此重新编译项目是不行的。编辑文本文件(可能是XML)是可以的。
在Web.config
文件中使用以分号分隔的语言代码列表(例如:en-US;de-GE
等)并使用RESX
文件夹中的App_GlobalResources
文件我能够满足条件......至少只要资源在Razor页面或MVC控制器中使用。
但是有一个问题 - 在MVC视图模型类中使用资源的任何尝试(例如Display
属性或Compare
属性)都会引发错误:
已经在StackOverflow上处理此问题的System.InvalidOperationException:无法检索属性“名称”,因为本地化失败。类型“[此处的资源类型]”不是公共的,或者不包含名称为“[资源名称此处]”的公共静态字符串属性。
There are several,但所有问题都围绕将内容文件中的资源文件转换为嵌入资源。虽然这可能使代码功能对我不利,因为客户端无法再编辑资源!
在这种情况下我还能做些什么?
答案 0 :(得分:0)
最后,我使用了MVC的自动机制,使用Razor文件中的@Resources.MyResource.DisplayName
以及添加的data-val-required
等属性进行了报废,这些属性也可以提供资源。