OmgDef / yii2-multilingual-behavior

Yii2 port of the yii-multilingual-behavior.
146 stars 60 forks source link

Отсутсвует перевод #10

Closed loveorigami closed 9 years ago

loveorigami commented 9 years ago

После обновления до второй версии перестал отображаться перевод.

            'ml' => [
                'class' => MultilingualBehavior::className(),
                'languages' => [
                    'ru-RU' => 'Russian',
                    'en-US' => 'English',
                ],
                //'languageField' => 'language',
                //'localizedPrefix' => '',
                //'forceOverwrite' => true, // убрал
                 'requireTranslations' => true, //добавил
                'dynamicLangClass' => false,
                'langClassName' => ArticleLang::className(), // or namespace/for/a/class/PostLang
                'defaultLanguage' => \Yii::$app->params['defaultLanguage'],
                'langForeignKey' => 'article_id',
                'tableName' => "{{%article_lang}}",
                'attributes' => [
                    'title', 'body',
                ]
            ],

все добавляется. в таблице перевод присутствует. на фронте в контроллере при смене языка

$model = Article::find()->published()->localized(\Yii::$app->language)->with('author')->andWhere(['slug'=>$slug])->one();
или даже так
$model = Article::find()->published()->localized('en')->with('author')->andWhere(['slug'=>$slug])->one();

и виде
<div class="content">
    <h1><?= $model->title ?></h1>
    <?= $model->body ?>
</div>

выводится текст на русском без перевода. запросы в дебагере следующие

2   17:18:29.947    1.0 ms  SELECT  SELECT * FROM `mx_article` WHERE ((`status`=1) AND (`mx_article`.`published_at` < UNIX_TIMESTAMP())) AND (`slug`='qwerty')
5   17:18:30.074    0.0 ms  SELECT  SELECT * FROM `mx_article_lang` WHERE (`language`='en') AND (`article_id`=9)

в 1 версии так все работало.

OmgDef commented 9 years ago

@loveorigami думаю после обновления на dev-master вы не удалили колонки из родительской таблицы колонок title и body не досжно быть в mx_article

loveorigami commented 9 years ago

Да, не удалял. А зачем такое нововвежение? Мне как раз таки нравилось то в вашем поведении, что можно было, не перекраивая модели, отключить поведение... При этом сайт работал, как одноязычный...

Если исппользую один и тот же модуль, но без переводов в другом проекте...

Достаточно было просто удалить поведение из модели... а теперь придется еще и добавлять колонки. и прописывать аттрибуты к ним, валидацию...

А где используется поведение - все это удалять...

OmgDef commented 9 years ago

@loveorigami Миграция на вторую версию заключается лишь в том, что нужно удалить дубликаты колонок в родительской таблице. Вот вся и разница. Остальные изменения прозрачны для пользователей. Такое поведение введено чтобы не нарушать принципы реляционных баз данных. Мне на почту написало уже около 10 человек с этой просьбой.

OmgDef commented 9 years ago

@loveorigami Так же вы можете использовать версию 1.* установив в своих проектах сооветствующий флаг в composer.json

loveorigami commented 9 years ago

Понятно... но хочется оставаться на актуальной версии ). При этом - я больше практик и использую Ваше поведение к уже существующим проектам. Например - есть таблица с сотней-другой записями. Просят добавить перевод. Я подключаю Ваше поведение и менеджер спокойно переводит и сайт работает...

А теепрь, вдобавок к тому, что я написал выше, еще и оригинальные записи придется перекидывать в связующую таблицу...

В общем - с точки зрения реляции оно может и правильно, а спрактической точки зрения пока одни сложности... Останусь пока на 1 версии... Спасибо.

OmgDef commented 9 years ago

@loveorigami вернул обратную совместимость с первой версией расширения. прошу вас протестировать

loveorigami commented 9 years ago

Спасибо большое! Потестировал. Все работает теперь, как прежде!