абстракция мультиязычных полей

Представим, что есть таблица, в которой существует мультиязычное поле. Мультиязычное поле - поле, имеющее разные значения для разных языков. К примеру, таблица book в ней поля title_en,title_ru,title_de Как лучше сделать абстракцию при работе с моделью, чтобы при обращении к $Book->title на самом деле я обращался бы к title_en, title_ru или title_de, в зависимости от выбранного языка? Это касается максимально возможного количества случаев (чтение, запись, обновление, подгрузка через findAll, в построителе запросов и т.п.) К примеру, у нас 16 языков. Если каждый раз делать выборку всех полей, то будет неэкономично. Т.е., если унас стоит язык ru, то при выборке * нужно выбираеть, к примеру, только поля: id, title_ru. А не всё сразу id, title_ru, title_en, title_de и т.п…

Очевидно, что помимо мультиязычных полей есть и обычные, а мультиязычных полей может быть несколько. Вариант с созданием таблиц book_en book_ru, book_de не подходит, совсем не тот случай. Не тот случай, потому что, если в books будет 1млн записей, 100 полей и лишь одно - мультиязычное, то будет очень нерационально.

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

Вообще, из этого получился бы очень удобный и нужный многим экстеншн.

По-моему, такие расширения уже есть в этой категории: http://www.yiiframework.com/extensions/?category=4&page=2,

Сам не пользовался, но идей там можно набраться, если существующие решения не устривают.

P.S. А почему такой вариант не рассмотрели: есть главная таблица, где информация хранится на "родном языке", а есть таблицы с суффиксами "_en", "_de" и т.д., где хранятся переводы только нужных полей. Связь HAS_ONE.