J'ai une application qui doit prendre en charge une interface multilingue, cinq langues pour être exact. Pour la partie principale de l'interface, l'approche ResourceBundle standard peut être utilisée pour gérer cela.Champs multilingues dans les tables DB
Cependant, la base de données contient de nombreux tableaux dont les éléments contiennent des noms lisibles, des descriptions, des résumés, etc. Il doit être possible d'entrer chacun d'entre eux dans les cinq langues.
Bien que je suppose que je ne pouvais tout simplement avoir des champs sur chaque table comme
NameLang1
NameLang2
...
Je pense que cela conduit à une grande partie du code en grande partie identique lors de l'écriture des grains chaque table la représentent. D'un point de vue purement orienté objet, la solution est cependant simple. Chaque classe a simplement un objet Text qui contient le texte correspondant dans chacune des langues. Ceci est d'autant plus utile qu'un seul langage est obligatoire, les autres ont des règles de repli (par exemple, si la langue 4 est manquante, retourner la langue 2 qui revient à la langue 1 qui est obligatoire).
Malheureusement, en mappant ceci à une base de données relationnelle, cela signifie que je finis avec une seule table que 10 à 12 autres tables FK (certaines tables ont en fait plus d'un FK).
Cette approche semble fonctionner et j'ai été en mesure de mapper les données aux POJO avec Hibernate. A propos de la seule chose que vous ne pouvez pas faire est de mapper d'un objet texte à son parent (puisque vous n'avez aucun moyen de savoir à quelle table vous devez vous lier), mais alors il n'y a pratiquement pas besoin de le faire. Donc, dans l'ensemble, cela semble fonctionner, mais il est juste d'avoir tort que plusieurs tables référencent une table comme celle-ci. Quelqu'un a une meilleure idée?
S'il importe que je utilise MySQL ...
Est-ce que l'utilisateur d'entrer les données dans la base de données en plusieurs langues? Ou est-ce strictement pour l'affichage? – Yishai