难以回答,因为这取决于您的确切需求。我们有一个地方是这样的(基于其他问题所描述的DB型):
- 的业务对象数据库为蓝本,这意味着我们有一类产品,它具有ProductTranslation对象的集合
- 在产品类中,我们拥有多语言数据的属性,例如说明
- 这些属性的吸气查找正确的翻译对象(基于当前语言),并返回相应的值
一个很简单的例子(只显示相关部分):
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应用程序选择了这种方法。当前语言对于每个用户可能不同(用户可以为UI和数据选择他们的首选语言)。这种方法允许我们为全部用户全局缓存数据。
根据您的需要,这种方法可能不是最好的。例如。将Product和ProductTranslation表建模为一个业务对象(产品),然后为特定语言加载(例如,如果数据是只读的并且不需要在应用程序范围内缓存),可能会更好。
来源
2009-05-30 14:32:17
M4N
感谢您的回答!我不敢相信这个问题的关注度很低。你能写出关于这个主题的结论吗(例如你使用什么方法,利弊等)来评论或回答。将不胜感激。 – 2012-04-27 11:22:54
@krocan我不记得所有的优点和缺点,因为我需要这2年前,但我认为马丁完全适用于这个问题 – 2012-04-27 15:32:41