У меня проблемы с получением данных из базы данных, которую я создал, чтобы она была полностью многоязычной, и я надеюсь, что кто-то здесь может мне помочь.
Я разделил все свои таблицы на 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-matters
Есть идеи, как это сделать? Я проверил существующие расширения Yii для многоязычных сайтов (например, Multilingual Active Record ), но все они используют разный дизайн базы данных (общая информация + запасной язык в основной таблице, переводы в таблице i18n). ), и я не уверен, как изменить эти расширения для использования моего типа модели БД.
Если кто-то знает способ изменить это существующее расширение, чтобы он мог использовать мой тип схемы БД, то это было бы совершенно блестящим и, вероятно, лучшим способом сделать это.
Edit: я добавил награду, потому что я до сих пор не могу найти что-нибудь о том, как позволить Propel работать с Yii (существует расширение для Doctrine, но Doctrine также не поддерживает такого рода модель DB с переводами). ), а также никакой дополнительной информации о том, как с этим справиться, используя существующее расширение Yii или области действия.
Редактировать : 98 просмотров, но только 3 отзыва и 1 комментарий. Я не могу не чувствовать, что я делаю что-то не так, будь то в моем вопросе или в проекте приложения / базы данных; Либо это, либо моя проблема просто очень уникальна (что удивило бы меня, так как я не думаю, что моя многоязычная база данных настолько абсурдна ;-). Итак, если кто-нибудь знает о лучшем универсальном решении для многоязычных сайтов с Yii и / или Propel (кроме текущих расширений, которые мне действительно не нравятся из-за дублирования текстовых полей) или о чем-то подобном, пожалуйста, дайте мне знать а также.
Заранее спасибо!