У меня есть приложение, которое должно поддерживать многоязычный интерфейс, а точнее пять языков. Для основной части интерфейса можно использовать стандартный подход ResourceBundle.
Однако база данных содержит множество таблиц, элементы которых содержат удобочитаемые имена, описания, рефераты и т. Д. Необходимо иметь возможность вводить каждое из них на всех пяти языках.
Хотя я полагаю, у меня могут быть поля в каждой таблице, например
NameLang1
NameLang2
...
Мне кажется, что это приводит к значительному объему идентичного кода при написании bean-компонентов, представляющих каждую таблицу.
С чисто объектно-ориентированной точки зрения решение, однако, простое. Каждый класс просто имеет объект Text, который содержит соответствующий текст на каждом из языков. Это также полезно в том смысле, что только один из языков является обязательным, у других есть запасные правила (например, если в языке 4 отсутствует язык возврата, который возвращается к языку 1, который является обязательным).
К сожалению, сопоставление этого с реляционной базой данных означает, что я получаю одну таблицу, в которую входят около 10-12 других таблиц FK (в действительности некоторые таблицы имеют более одного FK).
Этот подход, похоже, работает, и я смог отобразить данные в POJO с помощью Hibernate. Единственное, что вы не можете сделать, это сопоставить объект Text с его родительским объектом (поскольку у вас нет возможности узнать, на какую таблицу вы должны ссылаться), но тогда вряд ли это нужно делать.
Итак, в целом это работает, но кажется неправильным иметь несколько таблиц, ссылающихся на одну таблицу, подобную этой. У кого-нибудь есть идея получше?
Если это имеет значение, я использую MySQL ...