У меня возникла проблема с получением данных из моей базы данных, которые я создал, чтобы быть полностью многоязычными, и я надеюсь, что кто-то здесь может мне помочь.
Ive разделил все мои таблицы на 2 части; "универсальная" таблица (не содержит текст, который необходимо перевести), и таблицу, содержащую все поля, которые необходимо перевести с их переводами.
Примеры таблиц:
base_material
id
picture
base_material_i18n
base_material_id
localization_id
name
description
review_status
review_notes
localization
id
language_name
Запрос для получения переводов (используя английский (en) в качестве языка возврата, если перевод отсутствует):
SELECT o.id
, o.type
, o.code
, o.position
, ifnull(t.name,d.name) name
, ifnull(t.description,d.description) description
FROM base_material o
INNER JOIN base_material_i18n d
ON ( o.id=d.base_material_id)
LEFT OUTER JOIN base_material_i18n t
ON ( d.base_material_id=t.base_material_id AND t.localization_id='nl' )
WHERE d.localization_id='en'
Мой вопрос заключается в том, как я могу автоматически получить эти переводы (с исходным языком, как в этом запросе), прикрепленным к моей модели в Yii, когда Im ищет объекты base_material? (Это только 1 таблица примеров, но почти все мои таблицы (20+) построены таким образом, поэтому, если возможно, мне будет нужно что-то гибкое)
Примером существующей системы, использующей то, что мне нужно, является Propel: http://propel.posterous.com/propel-gets-i18n-behavior-and-why-it-matters
Любые идеи, как это сделать? Ive проверил существующие расширения Yii в отношении многоязычных сайтов (например, Многоязычная активная запись), но все они используют другой дизайн базы данных (общая информация + откат язык в главной таблице, переводы в таблице i18n), и я не уверен, как изменить эти расширения для использования моей модели БД.
Если кто-то знает способ изменить существующее расширение, чтобы он мог использовать мою схему БД, тогда это было бы абсолютно блестящим и, вероятно, лучшим способом сделать это.
Изменить: я добавил щедрость, потому что я все еще не могу найти что-либо о том, как заставить Propel работать с Yii (существует расширение для Doctrine, но Doctrine не поддерживает такую модель DB с переводами либо), а также больше информации о том, как справиться с этим, используя существующее расширение Yii или с областями.
Изменить: просмотрено 98 раз, но только 3 upvotes и 1 комментарий. Я не могу не чувствовать, что я делаю что-то не так, будь то в моем вопросе или проекте приложения/базы данных; либо это, либо моя проблема просто уникальна (что меня удивило бы, так как я не думаю, что мой многоязычный дизайн базы данных абсурден;-). Итак, если кто-нибудь знает о более широком решении для многоязычных сайтов с Yii и/или Propel (помимо текущих расширений, которые мне действительно не нравятся из-за дублирования текстовых полей) или что-то подобное, сообщите мне также.
Спасибо заранее!