如何检索多语言域模型?

时间:2016-03-29 10:09:52

标签: domain-driven-design multilingual ddd-repositories

我有很多具有3种语言列的实体:DescriptionNL,DescriptionFR和DescriptionDE(描述,信息,文章,...全部使用3种语言)。

我的想法是创建一个第四个属性Description,它根据Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName返回正确的值。

但缺点是,当您的存储库中有一个GetAll()方法用于下拉列表或其他内容时,您将3个值返回到应用程序层。额外的网络流量。

向域服务添加参数语言以检索数据也未完成"据DDD专家介绍。原因是语言是UI的一部分,而不是域。那么用正确的描述检索模型的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

您说正确的语言与域模型无关,这是正确的。如果您需要操作对象或数据,则需要使用该数据的某些规范形式。这仅适用于值在您的域中具有任何含义的情况。任何仅用于分类的东西可能对您的模型不感兴趣,但仍然可以使用规范值。

规范值的附加好处是,您可以知道甚至跨系统的值代表什么,因为您可以进行映射。

我之前的一个项目中使用的规范方法包含各种语言描述的数据集,但每个值的键都相同。例如,Mr是键1,而Mrs是键2.现在法语M.将是键1,Mme将是键2.这些值是您的组织值。现在让我们假设你有系统A和系统B.在系统A Mr是值67而在系统B Mr是值22.现在你可以通过规范值映射到这些值。

您不一定将这些实体存储在存储库中,但它们应该位于可以轻松查询的某些读取模型中。数据库之旅不应该太大,因为您可以将结果与版本号或有效期一起缓存。