Как использовать Yii с многоязычной моделью базы данных?

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

Я разделил все свои таблицы на 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, когда я ищу объекты base_material? (Это только 1 примерная таблица, но почти все мои таблицы (20+) построены таким образом, поэтому, если возможно, мне понадобится что-то гибкое)

Пример существующей системы, использующей то, что мне нужно, - это Propel: http: //propel.posterous.com / propel-gets-i18n-behavior-and-why-it-sizes

Есть идеи, как это сделать? Я проверил существующие расширения Yii, касающиеся многоязычных сайтов (например, Multilingual Active Record ), но все они используют другой дизайн базы данных (общая информация + резервный язык в основной таблице, переводы в таблице i18n ), и я не уверен, как изменить эти расширения, чтобы использовать мою модель БД.

Если кто-то знает способ изменить это существующее расширение, чтобы оно могло использовать мою схему БД, то это было бы абсолютно блестящим и, вероятно, лучшим способом сделать это.

Edit: Я добавил награду, потому что я до сих пор не могу найти ничего о том, как позволить Propel работать с Yii (существует расширение для Doctrine, но Doctrine также не поддерживает такую ​​модель БД с переводами) ), ни какой-либо дополнительной информации о том, как справиться с этим, используя существующее расширение Yii или области.

Редактировать : просмотрено 98 раз, но только 3 голоса и 1 комментарий. Я не могу избавиться от ощущения, что я здесь что-то делаю не так, будь то мой вопрос или дизайн приложения / базы данных; либо это, либо моя проблема просто очень уникальна (что меня удивило бы, поскольку я не думаю, что мой многоязычный дизайн базы данных такой абсурдный ;-). Итак, если кто-то знает лучшее универсальное решение для многоязычных сайтов с Yii и / или Propel (кроме текущих расширений, которые мне действительно не нравятся из-за дублирования текстовых полей) или чего-то подобного, дайте мне знать также.

Заранее спасибо!

11
задан Xuntar 8 November 2011 в 15:07
поделиться