Лучшие практики для локализации объектов в веб-приложениях Java Spring - PullRequest
4 голосов
/ 16 декабря 2010

Я ищу лучший способ локализовать динамический (сгенерированный пользователем) контент в моей сети. Я использую Spring-MVC, который я нашел очень хорошую основу, но теперь мне нужно сделать несколько сущностей доступными на нескольких языках. Я обнаружил, что для статических текстов i18n - лучший способ, с которым я согласен, но если я правильно понял, его нельзя использовать для локализации чего-либо, хранящегося в базе данных.

Там я должен хранить как локализованный, так и оригинальный контент в базе данных, и теперь мне нужно знать, как это лучше всего сделать. например у меня есть сущность:

@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;

}

Мне не нравится это решение, но я не могу придумать лучшего способа, поэтому я прихожу в это место ... может быть, в jpa / hibernate есть что-то, что я могу использовать?

Спасибо за вашу помощь

1 Ответ

6 голосов
/ 16 декабря 2010

Я бы сделал всю статью локализуемой:

Артикул контейнера:

@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;

}

И в ваших запросах вы будете искать локализованные версии по локали.

...