Вы должны заботиться только об одном языке для любого конкретного запроса. Хотя вы можете выбрать только тот язык, который требуется для запроса страницы, по-прежнему не рекомендуется организовывать ваш контент таким образом.
Что вы должны сделать, это использовать локали и предоставить значения по умолчанию для контента. Потому что, хотя вы можете подумать, что вы всегда создадите две версии фрагмента контента, в менее совершенном мире это не всегда происходит.
Итак, сначала вы должны создать свою модель для отражения этих отношений. Для простоты я буду называть это content
. Но, конечно, ваш контент может быть чем угодно.
`content` (The Table)
id
status
title
content
dataCreated
dateModified
owner
`contentTranslations` (The Table)
id
contentId (FK)
locale
title
content
dateCreated
dateModified
Теперь вам просто нужен способ узнать, какую локаль пользователь хочет использовать. Я предпочитаю использовать Zend_Locale для управления всеми моими локалями и Zend_Translate для short key => переводов значений. (Это не подходит для длинных переводов контента).
Когда вы знаете, какую локаль вы хотите использовать, все, что вам нужно сделать, это выполнить запрос, чтобы выбрать его с помощью объединения.
Красота
Однако прелесть всего этого состоит в том, что если вы не создали свой контент для конкретной языковой версии, то вы все равно можете использовать язык по умолчанию и перейти на базовый язык, на котором была написана оригинальная статья / контент.
SELECT c.id, c.status, c.title, c.content
FROM content as c
LEFT JOIN contentTranslations as t
ON c.id = t.contentId
WHERE c.id = 21231 AND t.locale = X