我在这里发布了一个关于多语言数据库设计的问题,左[] What are best practices for multi-language database design?我喜欢Martin的建议,但现在我有一个问题是什么是创建业务对象的最佳方法?如果我将创建包含ProductTranslation对象的产品,则在UI中绑定和工作将是复杂的,如果只有本地化对象,我将不得不为CMS创建不同的对象。非常感谢!
答案 0 :(得分:2)
很难回答,因为这取决于您的确切需求。我们在一个地方拥有的是这个(基于另一个问题中描述的数据库模型):
一个非常简单的例子(仅显示相关部分):
class ProductTranslation
{
public string Description;
}
public class Product
{
private List<ProductTranslation> _translations;
private ProductTranslation GetTranslation(string language)
{
// return translation for specified language
// or return translation for default language
}
public string Description
{
get
{
return GetTranslation(GetCurrentLanguage()).Description;
}
}
}
我们为ASP.NET Web应用程序选择了这种方法。每个用户的CurrentLanguage可能不同(用户可以为UI和数据选择他们的首选语言)。这种方法允许我们为所有用户全局缓存数据。
根据您的需要,这种方法可能不是最好的。例如。将Product和ProductTranslation表建模为一个业务对象(Product)然后为特定语言加载(例如,如果数据是只读的并且不需要在应用程序范围内缓存它)可能会更好。