【发布时间】:2010-11-29 02:58:54
【问题描述】:
我有一个 ASP.Net 网站,它使用 MySQL 数据库作为后端。该网站是一个英文电子商务系统,我们正在研究将其翻译成大约五种其他语言(法语、西班牙语等)的可能性。我们将让人工翻译来执行翻译 - 我们已经研究过自动化服务,但这些还不够好。
网站上的静态文本(例如标题、按钮等)可以通过 .Net 的内置本地化功能(resx 文件等)轻松地以多种语言提供。
我不太确定如何最好地在数据库中存储和检索多语言内容。例如,有一个包含这些字段的产品表...
- productId (int)
- categoryId (int)
- 标题(varchar)
- 摘要(varchar)
- 说明(文字)
- 功能(文字)
标题、摘要、描述和功能文本需要以所有不同的语言提供。
这是我想出的两个选项...
为每种语言创建附加字段 例如,我们可以为所有语言设置 titleEn、titleFr、titleEs 等,并对所有文本列重复此操作。然后,我们将根据所选语言调整我们的代码以使用适当的字段。这感觉有点hacky,并且还会导致一些非常大的表。此外,如果我们想在未来添加其他语言,添加更多列将非常耗时。
使用查找表 我们可以创建一个具有以下格式的新表...
textId | languageId | content
-------------------------------
10 | EN | Car
10 | FR | Voiture
10 | ES | Coche
11 | EN | Bike
11 | FR | Vélo
然后,我们将调整我们的产品表以引用标题、摘要、描述和功能的适当 textId,而不是将文本存储在产品表中。这看起来要优雅得多,但我想不出一种简单的方法可以在不使用复杂的 SQL 语句的情况下将这些数据从数据库中取出并放到页面上。当然,与以前的选项相比,将来添加新语言会非常简单。
如果您有任何关于实现这一目标的最佳方法的建议,我将不胜感激!那里有任何“最佳实践”指导吗?以前有人做过吗?
【问题讨论】:
标签: asp.net mysql localization translation multilingual