Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET:最好将可本地化的UI文本存储在资源或数据库中?_Asp.net_Localization_Resources_Multilingual - Fatal编程技术网

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

ASP.NET:最好将可本地化的UI文本存储在资源或数据库中?,asp.net,localization,resources,multilingual,Asp.net,Localization,Resources,Multilingual,似乎有两种不同的方法。NET框架通过将UI字符串放入资源(如UserProfile.en.resx、UserProfile.fr.resx等)中,为我们提供了一种简单的页面本地化方法 另一种方法是将所有字符串放在数据库中单独的表中,然后使用一些自定义机制根据当前活动的语言/区域性设置检索它们 据我所知,数据库方法更适合大型项目,比如企业软件。它还有一个好处,就是你可以让一家翻译公司从外部访问该数据库。有了资源,这将很困难 另一方面,从数据库检索所有静态字符串是额外的流量和负载开销。我看不出一个相

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

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

据我所知,数据库方法更适合大型项目,比如企业软件。它还有一个好处,就是你可以让一家翻译公司从外部访问该数据库。有了资源,这将很困难

另一方面,从数据库检索所有静态字符串是额外的流量和负载开销。我看不出一个相对较小的网站这样做有什么好处。“小”的意思不是流量,而是页面的数量和复杂性

我个人更喜欢将资源用于我的私人项目。这绝对是个坏主意吗

顺便问一下,我还可以使用ASP.NET MVC的资源吗

任何想法都很感激


编辑:只有一个答案,不能相信这个问题没有人感兴趣。没有人想分享他们的观点?

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

我所做的是将我的公共控件(如label)子类化,并覆盖render方法。此方法查找当前区域性,并通过查找“我的数据结构”相应地设置相应的标题

关于将它们保存在数据库中时的性能,我就是这么做的:在我的应用程序启动事件中,我只需将所有特定于区域性的描述加载到自定义对象中,并将其缓存很长时间。这样,在缓存过期或强制过期之前,我不必访问数据库

到目前为止,采用这种方法后,我们从未遇到任何性能问题。说到这里,请注意,我并不是说使用资源文件也是一个坏的选择


但是如果让我选择的话,我更喜欢数据库方法而不是资源文件方法,将两者结合起来。您可以编写一个自定义的资源提供程序,它使用数据库而不是资源文件,这样您就不必自己绑定文本(也就是说,很容易出错),只需使用ASP.NET的本地化功能即可。MSDN有一篇由Michelle Leroux Bustamante撰写的优秀文章,该文章为使用数据库的自定义资源提供程序提供了源代码的工作实现。