5

我们正在构建一个尚未本地化的 ASP.NET MVC 应用程序,其中包含大量的数据注释DisplayAttribute,其中包含硬编码字符串和遍布代码的硬编码消息字符串。

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

到目前为止,我正在考虑使用RESX带有自定义IResourceProvider. Rick Strahl 写了一篇很好的文章。在这种方法中,应用程序是使用标准RESX文件开发的,但在运行时,当应用程序需要字符串时,自定义提供程序将查询数据库以查找自定义项,并在找到时使用它们。

尽管这似乎是一个很好的解决方案,但它似乎并不自然。我想知道是否有更好的选择。

这有什么标准吗?

4

1 回答 1

1

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

你总是可以用不同的方式来做,只使用基于 db 的文本,而不用担心更改代码中的默认值和数据库中的翻译,因为当资源在少数地方时很容易错过一些东西。大约 2 年前,当我检查nopCommerce的代码时,我看到他们仅使用数据库中的资源进行本地化。我不确定它现在是如何完成的,但是您可以下载源代码并检查它。

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

您可以在此博客文章中阅读有关此主题的更多信息。

于 2013-02-04T13:11:01.293 回答