2010-12-16 83 views
4

我正在寻求在我的网站上本地化动态(用户生成)内容的最佳方式。我正在使用spring-mvc,我发现它非常好,但现在我需要使用多种语言提供几个实体。 我发现,对于静态文本i18n是我同意的最好方式,但如果我理解它正确的话,它不能用于本地化存储在数据库中的东西。实体本地化在Java春季web应用程序的最佳实践

那里我必须存储在数据库中集中型和原创内容,现在我需要知道的是,比如我有实体做 的最佳方式:

@Entity 
public class Article { 

    private Long id; 

    private String title; 

    private String body; 

} 

究竟应该如何看,如果我希望它支持本地化?

@Entity 
public class Article { 

    private Long id; 

    @OneToMany 
    private Set<LocalizedTitle> localizedTitles; 

    private String body; 

} 

我不喜欢这个解决方案TBH,但我不能想出一个更好的办法,这就是为什么我来这个地方......可能有建在JPA的东西/休眠,我可以使用?

谢谢您的帮助

+0

考虑一个Map localizedTitles。与您当前的localizedTitles没有多大区别,但是可以从ServletRequest获取Locale。 – DwB 2010-12-16 13:39:15

+1

@dwb只有你不能坚持与JPA – 2010-12-16 14:06:53

回答

6

我会使整个文章本地化:

文章容器:

@Entity 
public class Article{ 

    @Id 
    private Long id; 

    @OneToMany(mappedBy="container") 
    private Set<LocalizedArticle> localizedArticles; 

} 

本地化版本:

@Entity 
public class LocalizedArticle{ 

    @ManyToOne 
    private Article container; 

    @Id 
    private Long id; 

    private String body; 

    private String title; 

    private String locale; 

} 

而在你的查询,您将通过语言环境查找本地化版本。

+0

好主意的地图!非常感谢 :) – Schyzotrop 2010-12-16 14:50:21