1

我在这里发布了一个关于多语言数据库设计的问题,
[]多语言数据库设计的最佳实践是什么?
我喜欢 Martin 的建议,但现在我有一个问题,创建业务对象的最佳方式是什么?如果我将创建包含 ProductTranslation 对象的产品,那么 UI 中的绑定和工作将会很复杂,如果只有本地化的对象,我将不得不为 CMS 创建不同的对象
非常感谢!

4

1 回答 1

2

很难回答,因为这取决于您的确切需求。我们在一个地方拥有的是这个(基于另一个问题中描述的数据库模型):

  • 业务对象是在数据库之后建模的,这意味着我们有一个 Product 类,它有一个 ProductTranslation 对象的集合
  • 在产品类中,我们有多语言数据的属性,例如描述
  • 这些属性的getter查找正确的翻译对象(基于当前语言)并返回相应的值

一个非常简单的示例(仅显示相关部分):

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 表建模为一个业务对象(产品),然后为特定语言加载(例如,如果数据是只读的并且不需要在应用程序范围内缓存它)。

于 2009-05-30T14:32:17.793 回答