Localisation d'entités et JPA
Antoine DESSAIGNE <[email protected]>
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <[email protected]> |
Bonjour à tous,
Voilà je suis à la recherche de "Best Practices" pour le stockage de
traductions d'entités dans une base de données. La traduction se doit d'être
obligatoirement en base de données car ces entités sont créees, modifiées et
traduites par les utilisateurs.
Si on prend le petit exemple suivant (faut m'excuser, ch'uis pas très doués
pour les exemples):
public class AnimalClass {
public int id;
public String name;
public Set<Animal> animals;
}
public class Animal {
public int id;
public String name;
public String sound;
}
Si maintenant on considère que l'utilisateur a saisi:
AnimalClass {
id: 10,
name: 'Compagnie',
animals: [
Animal { id: 11, name: 'Chien', sound: 'Ouaf ouaf' },
Animal { id: 12, name: 'Chat', sound: 'Miaou' }
]
}
AnimalClass {
id: 20,
name: 'Ferme',
animals: [
Animal { id: 21, name: 'Vache', sound: 'Meuh' }
]
}
Imaginons qu'un autre utilisateur ait tout traduit en Anglais. L'objet avec
l'identifiant 11 aura donc comme nom "Dog" et comme son "Woof woof".
(interdiction formelle de se moquer le l'exemple [?])
L'idée est que si un utilisateur anglais se connecte il voit les traductions
anglaises et si un utilisateur français se connecte il voit les traductions
françaises.
J'ai pensé/essayé plusieurs techniques:
- Appliquer les traductions après avoir récupérer les objets, mais là ou
cela devient complexe c'est si on récupère toutes les classes d'animaux avec
tous les animaux.
- Changer le type String par une Map<Locale, String> qui contient les
traductions, mais comment récupérer qu'une seule locale (et éventuellement
une chaine par défaut) et éviter de récupérer les 15 traductions.
Ma question toute simple est: quel est le moyen le plus efficace pour
stocker cela et y accéder via JPA ?
Merci beaucoup de votre aide.
Antoine.
330.gif
(image/gif, 96 B) - not displayed