2011-09-29 46 views
1

我有一个实体,它具有一个id和一个标题。 id始终是相同的,但给定语言环境的标题值更改。我发现,模型化这三道:如何使用本地化(i18n)属性正确地建模对象

class Entity 
    String getId() 
    String getTitle(Locale) 

class Entity 
    String getId() 
    LocalizedEntity getLocalizedEntity(Locale) 

class LocalizedEntity 
    String getTitle() 

class Entity 
    String getId() 

class LocalizedEntity extends Entity 
    Locale getLocale() 
    String getTitle() 

我倾向于选择第一个,因为它不会破坏您模型化的实体的方式,它只是你的对象的一种观点。第二是对我来说最糟糕的情况。

哪一个更好?有另一种方法吗?

回答

0

在我看来,数据本地化不应该影响您的对象设计,所以我会选择第一个选项。

我们建立了一个本地化引擎在我的日常工作,在几年前,这是其中具有三个属性(ISO 639-1 α-2语言代码,ISO 15924 α-4脚本代码和ISO 3166 α-2地域代码指定了Locale对象,我们使用的模型,一起组成IETF language tag,如en-Latn-GB,zh-Hans-CN,sr-Cyrl-RS等)。

我希望有帮助,尽管我猜你可能在去年提出你的决定,因为你的问题的日期。

+0

谢谢,它有助于我的自我,因为尽管我有所有的论点,我的老板选择了第二种选择。他的主要观点是提供一个没有任何重复数据的模型。所以我想在这里面对我的观点,以便知道我是否正确。一年半之后,我可以说这是该项目和企业最糟糕的选择: -/ – amertum

+0

呃,如果我至少帮助了你的自我,那比帮助别人更好:o) –