А у меня отдельная таблица с переводами — это таблица связей сущностей на разных языках. Идентификаторы сущностей на разных языках разные, то есть первичный ключ — это просто идентификатор сущности, а не идентификатор плюс язык. Если вдруг пользователь на странице сущности поменяет язык, то происходит клиентский редирект на ту же страницу, но с идентификатором той связанной через таблицу переводов сущности, которая соответствует выбранному языку. Проблем ни разу не возникало. Отдельная таблица ресурсов мне кажется не оптимальным решением, так как она большая и требует отдельного запроса к базе.