如何在数据库中存储用户输入数据的本地化版本?
我正在为需要3种语言(英语和其他2种语言)本地化的网络应用程序客户端工作。我了解如何使用ASP.NET应用程序中的资源来显示静态数据的本地化版本。但是,我不确定如何处理本地化用户输入数据的问题。例如,管理员可能想要在应用程序中添加一些新的元数据(例如新产品类别)。这最终需要翻译成所有3种语言,但最初将以管理员知道的任何语言输入。由于这种数据不是静态的,我们将其存储在数据库中。我们是否应该为主键添加文化代码以区分同一数据的不同本地化版本?有没有一种“最佳实践”或模式,我不知道这种问题?如何在数据库中存储用户输入数据的本地化版本?
使用MainItemID和LanguageCode(EN,DE,FR等)的组合PK让子表成为您的实体。此子表存储您的语言特定文本。
如果你总是有英语,或者它是一个后备,那么你可以有DE,FR等子表和英语主表。 LEFT JOIN和ISNULL会照顾到这一点。
无论哪种方式是确定的,这取决于您确切的需求,我怀疑是第一个。当然,你需要确保你至少有一个子行的数据输入,例如,一个新的产品类别
我建议你制作一张表来跟踪Language
,然后在另一个表中使用languageID作为外键而不是语言代码。
Language(LanguageID, Name)
然后在其他表中使用该LanguageID
作为外键。
例如您正在本地存储本地化文字
LocalizedTextTable(ID,text,LanguageID)
如果语言代码已经是唯一的,是否有理由将这个额外连接添加到'Language'表中? – dnc253 2012-07-30 15:22:56
感谢您的建议! – 2011-05-23 06:41:45