如何使用本地化(i18n)属性正确建模对象

时间:2011-09-29 09:38:53

标签: oop data-structures localization internationalization

我有一个具有ID和标题的实体。 id始终相同,但给定区域设置标题值更改。我找到了三种模拟方法:

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()

我倾向于选择第一个,因为它不会破坏您对实体进行建模的方式,它只是您对象的一种视图。第二个是对我来说最糟糕的情况。

哪一个更好?还有另一种方式吗?

1 个答案:

答案 0 :(得分:0)

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

我们在几年前的日常工作中构建了一个本地化引擎,这就是我们使用的模型,其中Locale对象使用三个属性(ISO 639-1 α-2语言代码,{{{ 3}}脚本代码和ISO 15924 α-4区域代码,共同构成ISO 3166 α-2,如en-Latn-GBzh-Hans-CNsr-Cyrl-RS等等。

我希望这有帮助,不过我猜你可能在去年做出了你的决定,考虑到你的问题的日期。