我们正在构建一个ASP.NET MVC应用程序,该应用程序尚不能通过大量带有整个代码的硬编码字符串和硬编码消息字符串的数据注释DisplayAttribute进行本地化。

现在,我们要求应用程序必须是可本地化的,但仍然需要允许用户自定义字段显示和文本。

到目前为止,我正在考虑将RESX文件与自定义IResourceProvider一起使用。里克·斯特拉尔(Rick Strahl)写了good article about that。用这种方法,使用标准的RESX文件开发应用程序,但是在运行时,当应用程序需要字符串时,定制提供程序将查询数据库以查找定制,并在找到定制时使用它们。

即使这是一个很好的解决方案,也不是很自然。我想知道是否还有更好的选择。

有什么标准吗?

最佳答案

使用静态值作为默认值并检查数据库中的本地化值是不自然的吗?对我来说,这是一个很好的方法,因为如果有人在数据库中弄乱了资源,例如,以某种方式删除了其中的一个,那么您总是会显示默认文本。

您始终可以以不同的方式进行操作,只需使用基于db的文本就不必担心更改代码中的默认值和数据库中的转换,因为在资源很少的情况下很容易错过某些内容。大约2年前,当我检查nopCommerce的代码时,我已经看到,当它们仅使用数据库中的资源进行本地化时。我不确定现在如何完成,但是您可以下载源代码并进行检查。

一年前,我在WinForms应用程序中开发了针对不同语言的XML文件,因为我们的客户希望能够允许非技术人员创建新的语言文件。我创建了内置在应用程序中的本地化工具,但是对于网站而言,最好使用数据库,因为您已经可以访问数据库并且可以轻松地操作数据。

您可以在this blog post中阅读有关此主题的更多信息。

09-26 21:21
查看更多