使用SQL进行本地化而不是ASP.NET中的RESX文件

时间:2010-04-11 17:02:15

标签: asp.net sql resx

我正在考虑开发以下内容,但想知道它是否已经存在:

我需要一个基于SQL的解决方案来为asp.net站点分配和管理本地化文本值,而不是使用RESX文件。这有助于维护站点上的文本,而无需在需要更新时将其用于部署。

感谢。

5 个答案:

答案 0 :(得分:3)

我们实际上走了这条道路,最终得到了一个非常慢的网站 - 剥离基于SQL的翻译机制并使用ASP.NET资源为我们带来了显着的性能提升。所以我不能真的建议你做同样的事情....(是的 - 我们正在缓存和优化吞吐量和一切 - 而基于SQL的东西仍然明显变慢)。

你得到你付出的代价 - 基于SQL的方法在动态“翻译”和修复拼写错误和东西方面更灵活。但最后,在我们的应用程序(当时的Webforms,.NET 2.0)中,使用资源被证明是唯一可行的方法。

答案 1 :(得分:1)

我们这样做了(基于SQL的翻译),我们对结果非常满意!我们为翻译机构开发了一个界面,以便在线执行页面更新。作为副作用,该解决方案开始作为内容管理系统。如果缓存数据,性能不是问题。缺点是,我们在我们的解决方案中投入了数百小时。 (我猜想,大约600个小时,但我可以检查一下。)

答案 2 :(得分:0)

我们最终得到了一个混合解决方案,用户可以将内容编辑到数据库中,然后应用程序创建了一个手动部署的.resx。

您也可以完全绕过服务器翻译并在客户端上使用jQuery进行翻译,这是我成功使用的方法。

答案 3 :(得分:0)

我不确定网站重启,但至少使用.NET MVC非常方便,我没有注意到重启问题,如果发生,你需要多久更新一次resx文件?对于更大的项目,我用来创建一个包含多个项目的解决方案,一个用于本地化,如下所示:

  • MyApp.Localization
    • 模型
    • File1.resx
  • MyApp.Core
  • MyApp.Web

然后在Web项目中添加对Localization项目的引用,并像

一样使用它

@ MyApp.Localization.Model.Customer.CustomerName

@ MyApp.Localization.Page.About.PageTitle

@ MyApp.Localization.File1.Paragraph1

每次我更改翻译文本时,我都会上传更新的.dll或复制.resx文件。

注意:您需要将resx文件设置为PUBLIC,因此可以强类型访问。

答案 4 :(得分:0)

我创建了一个基于SQL的翻译方案。但是我只在请求时加载给定页面所需的翻译,而只加载该特定页面的翻译。

在会话期间重新加载和缓存页面时,会将这些内容加载到字典对象中。然后就是根据对它的查找进行文本替换。

几乎所有这些都是动态生成的,包括必须翻译的用户定义内容,因此灵活性是关键。

性能非常快,用于检索所有数据的SQL查询需要更长时间(相对而言)。