我在网络应用上为客户工作,需要以3种语言进行本地化(英语和其他2种语言)。我了解如何在ASP.NET应用程序中使用资源来显示静态数据的本地化版本。但是,我不确定如何处理本地化用户输入数据的问题。例如,管理员可能想要在应用程序中添加一些新元数据(例如,新产品类别)。这最终需要翻译成所有3种语言,但最初将以管理员知道的任何语言输入。由于这种数据不是静态的,我们将其存储在数据库中。我们是否应该向主键添加区域性代码以区分相同数据的不同本地化版本?对于这类问题,我不知道“最佳实践”或模式吗?
答案 0 :(得分:2)
让您的实体拥有子表,使用MainItemID和LanguageCode(EN,DE,FR等)的复合PK。此子表存储您的语言特定文本。
如果你总是有英语,或者它是一个后备,那么你可以拥有DE,FR等的子表和英语的主表。 LEFT JOIN和ISNULL将负责此事。
无论哪种方式都可以,取决于您的确切需求,我怀疑是第一个。当然,您需要确保在数据输入中至少有一个子行,例如,新产品类别
答案 1 :(得分:1)
我建议您创建一个表来跟踪Language
,然后将languageID用作另一个表中的外键而不是语言代码。
Language(LanguageID, Name)
然后在其他表中使用LanguageID
作为外键。
e.g。您正在表中存储本地化的文本
LocalizedTextTable(ID,text,LanguageID)
答案 2 :(得分:0)
我的解决方案是创建一个字符串列,其中包含所有受支持语言的编码数据。插入和提取数据需要特殊的应用程序逻辑。 支持多语言数据的专业文本编辑器也有很多帮助。