我正在考虑开发以下内容,但想知道它是否已经存在:
我需要一个基于SQL的解决方案来为asp.net站点分配和管理本地化文本值,而不是使用RESX文件。这有助于维护站点上的文本,而无需在需要更新时将其用于部署。
感谢。
答案 0 :(得分:3)
我们实际上走了这条道路,最终得到了一个非常慢的网站 - 剥离基于SQL的翻译机制并使用ASP.NET资源为我们带来了显着的性能提升。所以我不能真的建议你做同样的事情....(是的 - 我们正在缓存和优化吞吐量和一切 - 而基于SQL的东西仍然明显变慢)。
你得到你付出的代价 - 基于SQL的方法在动态“翻译”和修复拼写错误和东西方面更灵活。但最后,在我们的应用程序(当时的Webforms,.NET 2.0)中,使用资源被证明是唯一可行的方法。
答案 1 :(得分:1)
我们这样做了(基于SQL的翻译),我们对结果非常满意!我们为翻译机构开发了一个界面,以便在线执行页面更新。作为副作用,该解决方案开始作为内容管理系统。如果缓存数据,性能不是问题。缺点是,我们在我们的解决方案中投入了数百小时。 (我猜想,大约600个小时,但我可以检查一下。)
答案 2 :(得分:0)
我们最终得到了一个混合解决方案,用户可以将内容编辑到数据库中,然后应用程序创建了一个手动部署的.resx。
您也可以完全绕过服务器翻译并在客户端上使用jQuery进行翻译,这是我成功使用的方法。
答案 3 :(得分:0)
我不确定网站重启,但至少使用.NET MVC非常方便,我没有注意到重启问题,如果发生,你需要多久更新一次resx文件?对于更大的项目,我用来创建一个包含多个项目的解决方案,一个用于本地化,如下所示:
然后在Web项目中添加对Localization项目的引用,并像
一样使用它@ MyApp.Localization.Model.Customer.CustomerName
@ MyApp.Localization.Page.About.PageTitle
@ MyApp.Localization.File1.Paragraph1
每次我更改翻译文本时,我都会上传更新的.dll或复制.resx文件。
注意:您需要将resx文件设置为PUBLIC,因此可以强类型访问。
答案 4 :(得分:0)
我创建了一个基于SQL的翻译方案。但是我只在请求时加载给定页面所需的翻译,而只加载该特定页面的翻译。
在会话期间重新加载和缓存页面时,会将这些内容加载到字典对象中。然后就是根据对它的查找进行文本替换。
几乎所有这些都是动态生成的,包括必须翻译的用户定义内容,因此灵活性是关键。
性能非常快,用于检索所有数据的SQL查询需要更长时间(相对而言)。