2

我需要为我的(可扩展的)Web 应用程序中的静态文本设计一种翻译机制/策略——这些应用程序基于 ASP.NET 环境(但没有服务器端控件)中的 HTML、JQuery/JavaScript,并从异步 jQuery 加载动态数据调用 http 处理程序。

我已经使用Globalize成功本地化了数字、日期等,但是现在需要整理文本翻译。

翻译的文本被适当地存储在数据库中(由本地合作伙伴在另一个应用程序中维护),因此,我不想使用基于文件的ResX等价物,如jQuery Localization / jQuery Localize / jQuery-i18n-properties方法,而是我追求一种类似于扩展本地化 ASP.NET 控件(我没有)的资源提供者模型的解决方案,以从数据库中获取翻译。

客户端方法:我只是偶然发现了i18next 的动态(非静态)资源路由,并试图弄清楚我是否可以从 http 处理程序(并缓存在JStorage / LawnChair中)返回类似的东西来填写占位符/标签使用jQuery 函数或对Mustachehogan.js模板采取类似的方法。

服务器端方法: 在提供 HTML 之前修改它,例如这个答案建议使用HttpResponse.Filter来修改响应服务器端(参见这篇文章)。由于缓冲区被分块,我必须按照此处的建议捕获整个流,这确实会导致性能下降,但是,我希望我可以通过缓存页面的每个(语言)版本来缓解这种情况。

或者像这样使用 HTTP 处理程序看起来更简单,尽管我不太确定如何在这种情况下缓存页面的多个版本。

是否有其他人对这些方法有经验,或者知道任何满足要求的类似或“最佳实践”,尤其是在性能、可伸缩性和可维护性方面?

如果有任何不清楚的地方,请告诉我,我是 Web 开发的新手。:)

注意:这适用于在平板电脑/手持设备上运行以获取数据的 Web 应用程序,它不是 CMS 或静态站点(之前的版本用于在 .Net Compact Framework 上运行大约 5 年,现在是时候更新,以便用户可以使用非 Windows 设备,例如 android 和 iPad)。

4

2 回答 2

0

这就是我们在数据库中处理文本翻译的方式(听起来很明显,但至少这是高度可扩展的):

  1. 假设您有一个表 tbl_Content,其中只有一种语言的列 [id]、[title] 和 [description]。

  2. 我们要做的是首先创建一个 tbl_Content_Translation 列:[id]、[languageId]、[title] 和 [description]

  3. 将标题/描述列上的所有内容复制到翻译表中,以确保不会丢失任何内容

  4. 删除原表中的title和description列

  5. 更改查询此表的所有 SP 以添加 [languageId] 参数。

  6. 我们将 SP 附加到 BLL 上。

  7. 最后,无论是从网页还是网络方法,我们调用 BLL 来访问我们的数据。

同样,这似乎很明显,但由于它对我们有用(ajax 调用和英语、法语和越南语的普通网页),我认为这可能很有用。

于 2012-06-20T01:36:56.337 回答
0

服务器端翻译结果相当复杂。

我认为最简单的方法是使用jQuery 本地化来获取从数据库生成的语言脚本,但这并没有增加任何价值,所以我只是使用 ajax 请求手动从服务器获取脚本(每种语言都有不同的生成脚本)。

我从服务器获得的脚本包含用于翻译的变量(变量与控件 ID 同名),我将其作为对象数组传递{id:'controlid', val:controlid}给应用翻译的方法,因此当调用脚本时,页面被翻译。

很遗憾,似乎没有一个好的最佳实践,我所做的并不复杂,但如果有一个库或插件可以做到这一切,那就太好了。

类似于这个答案

于 2012-06-20T12:22:55.167 回答