我正在为需要3种语言(英语和2种其他语言)本地化的Web应用程序上的客户服务。我了解如何使用ASP.NET应用程序中的资源来显示静态数据的本地化版本。但是,我不确定如何处理本地化的用户输入数据的问题。例如,管理员可能希望向应用程序添加一些新的元数据(例如新产品类别)。最终将需要将其翻译成所有3种语言,但是最初将以管理员知道的任何语言输入。由于这种数据不是静态的,因此我们将其存储在数据库中。我们是否应该在主键上添加区域性代码以区分同一数据的不同本地化版本?对于这种问题,我是否不知道有“最佳实践”或模式?
最佳答案
有一个子表,您的实体,带有MainItemID和LanguageCode(EN,DE,FR等)的组合PK。该子表存储您的语言特定文本。
如果您始终使用英语,或者这是一个后备选项,则可以使用DE,FR等子表和英语主表。 LEFT JOIN和ISNULL将解决此问题。
哪种方法都可以,取决于您的确切需求,我怀疑这是第一个。当然,您需要确保在输入新产品类别的数据时至少有一个子行