2010-12-16 62 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