ASP.NET:更好地在资源或数据库中存储可本地化的UI文本?

时间:2009-04-08 10:46:16

标签: asp.net localization resources multilingual

似乎有两种不同的方法。 ASP.NET框架为我们提供了一种通过将UI字符串放在资源中来简化页面本地化的方法,如UserProfile.en.resx,UserProfile.fr.resx等。

另一种方法是将所有字符串放在数据库中的单独表中,然后使用一些自定义机制来检索它们,以符合当前活动的语言/文化设置。

据我所知,数据库方法对于大型项目(如企业软件)更为典型。它还有一个好处,即您可以向该翻译公司提供对该数据库的外部访问权限。有了资源,就很难了。

另一方面,从数据库中检索所有静态字符串是额外的流量和负载开销。我认为相对较小的网站没有任何好处。 “小”意味着不是流量,而是页面的数量和复杂性。

我个人更喜欢为我的私人项目使用资源。这是一个绝对糟糕的主意吗?

顺便说一下,我还可以在ASP.NET MVC中使用资源吗?

任何想法都表示赞赏。

编辑:只有一个答案,不能相信这个问题对任何人都没有兴趣。没有人想分享他们的意见?

2 个答案:

答案 0 :(得分:3)

将两者结合起来。您可以编写一个使用数据库而不是资源文件的自定义资源提供程序,这样您就不必自己大量绑定文本(即,让我们面对它,容易出错),您只需使用ASP。 NET的本地化功能。 MSDN有一个很好的walkthrough作者Michelle Leroux Bustamante

答案 1 :(得分:2)

我更喜欢在数据库中保存所有这些信息,而不是依赖于asp.net资源文件。

我所做的是将我的常用控件(如label)子类化并覆盖render方法。此方法查找当前文化,并通过查看我的数据结构来相应地设置相应的标题

关于将它们保存在数据库中时的性能 - 这就是我所做的:在我的application_start事件中,我只是将我的所有特定于文化的描述加载到自定义对象中并将其缓存很长时间。这样我就不必点击数据库,直到我的缓存过期或我强制它过期

到目前为止,我们从未遇到任何与此方法相关的性能问题。说了这一切 - 请注意我并不是说使用资源文件是一个不好的选择

但如果给我一个选择,我宁愿选择数据库方法而不是资源文件方法