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