【发布时间】:2012-06-21 21:27:30
【问题描述】:
我需要为我的(可扩展的)Web 应用程序中的静态文本设计一种翻译机制/策略——这些应用程序基于加载动态数据的 ASP.NET 环境(但没有服务器端控件)中的 HTML、JQuery/JavaScript从异步 jQuery 调用到 http 处理程序。
我已经成功地使用Globalize 本地化了数字、日期等,但是现在需要整理文本翻译。
翻译的文本被适当地存储在数据库中(由本地合作伙伴在另一个应用程序中维护),因此,我不想使用基于 ResX 等效的文件,例如 jQuery Localisation/jQuery Localize/jQuery-i18n-properties 方法,相反,我正在寻求类似于 extending the Resource-Provider Model 的解决方案,它本地化 ASP.NET 控件(我没有),以从数据库中获取翻译。
客户端方法:我只是偶然发现了i18next's dynamic (non-static) resouce route,我正在尝试确定是否可以从 http 处理程序返回类似的内容(并缓存在JStorage/LawnChair)使用the jQuery function 填充占位符/标签或使用Moustache 或hogan.js 模板采取类似的方法。
服务器端方法: 在提供之前修改 HTML,例如this answer 建议使用HttpResponse.Filter 来修改响应服务器端(参见this article)。由于缓冲区被分块,我必须按照here 的建议捕获整个流,这确实会导致性能下降,但是,我希望我可以通过页面的caching each (language) version 来缓解这种情况。
或者使用 HTTP 处理程序 like this 看起来更简单的方法,虽然我不太确定如何在这种情况下缓存页面的多个版本。
是否有其他人对这些方法有经验或知道任何类似的或“最佳实践”可以满足要求,尤其是在性能、可扩展性和可维护性方面的要求?
如果有任何不清楚的地方,请告诉我,我是 Web 开发的新手。 :)
注意:这适用于在平板电脑/手持设备上运行以获取数据的 Web 应用程序,它不是 CMS 或静态站点(之前的版本用于在 .Net Compact Framework 上运行约 5 年,并且是时候进行更新了,这样用户就可以使用非 Windows 设备,例如 android 和 iPad)。
【问题讨论】:
-
如果它是一个静态站点,在客户端入侵语言层似乎比将其转换为 CMS 并在服务器端进行攻击更麻烦。
-
@Diodeus(更新的问题)这听起来像是一种需要考虑的方法,(但这不是 CMS),你能详细说明一下答案吗? (注意 HttpResponse.Filter 方法)。
-
你真的需要把它全部吸进某种数据库,你如何提供它是另一回事。修补到原始软件中也是一种选择。
-
@Diodeus 翻译已经在数据库中,问题是关于提供它。
标签: html localization translation client-side