CDbMessageSource?

Una volta ho visto una estensione o un post a proposito di url localizzati, ma si tratta di un anno fa.

Prova a cercare nel forum, c’era la possiblita di creare url in base alla lingua tipo:

contatti => contacts + italiano

kontakt=> contacts + tetesco

eccetera eccetera.

Eccoli qua: il thread e il coockbook, by Y!!

Ragazzi forse ho fatto un gigaaccrocchio o forse sono stato proprio bravo. Se avete seguito i miei ultimi post, sto facendo un sito multilingua. Ho aggiunto a questo sito il modulo delle news. Una volta creata la tabella, model, crud attraverso Gii, mi sono reso conto che non avevo il supporto multilingua delle news.

Così ho pensato. Bene…: quando salvo una news, prendo il suo id e creo per ogni campo di testo un corrispondente campo SourceMessage. Quindi i relativi campi in tutte le lingue del mio sistema.


  /**

   * Creates a new model.

   * If creation is successful, the browser will be redirected to the 'view' page.

   */

  public function actionCreate() {

    $model = new News;


    // Uncomment the following line if AJAX validation is needed

    // $this->performAjaxValidation($model);


    if (isset($_POST['News'])) {

      $model->attributes = $_POST['News'];

      if ($model->save()) {


        foreach (array('titolo', 'corpo', 'abstract') as $itemFields) {

          /* Creo il SourceMessaggio */

          $sm = new SourceMessage;

          $sm->category = 'news-' . ($itemFields);

          $sm->message = $model->id;

          $sm->save();


          /* Ricopio l'italiano in tutte le lingue che sono state impostate */

          foreach (Yii::app()->params['languages'] as $item) {

            $m = new Message;

            $m->id = $sm->id;

            $m->language = $item;

            $m->translation = $model->$itemFields;

            $m->save();

          }

        }


        $this->redirect(array('view', 'id' => $model->id));

      }

    }


    $this->render('create', array(

        'model' => $model,

    ));

  }

Che ne pensate? Ho osato troppo?

Mi sembra che stai mischiando diverse cose.

I message sono usati per le traduzioni dei messaggi di sistema, che sono di solito pochi e infatti io non uso dbMessageSource, ma semplicemente i message in php.

Le news e’ contenuto gestito dagli utenti o dagli amministriatori del sito, non fa certo parte dei messaggi di sistema. Io in questo caso vedrei meglio una form completa in cui chiedi all’utente/amministratore:

Titolo della notizia italiano - titolo della notizia inglese - titolo della notiza turco

Testo della notizia italiano - testo della notizia inglese - testo della notiza turco

Cosi’ l’utente che inserisce una notizia la inserisce gia’ in tutte le lingue, e non sara’ certo il programmatore che ha fatto il sito 2 anni fa a tradurre le notizie in turco, o no?

Diciamo che data la lingua corrente del sito, posso inserire una news.

In automatico questa viene ricopiata in tutte le lingue così com’è (come dire … non c’è la lingua che mi richiedi… ti mostro la lingua con cui hai creato la news).

Il vantaggio che mi ha spinto a fare questo, è stato il fatto che cambiando la lingua mi assicuro una traduzione di ogni contenuto (anche se non disponibile nel momento corrente). Poi, predisporrò l’interfaccia in modo tale che si possa variare la lingua e dunque la traduzione di quella news in quella lingua.

Ora però ho un problemino con l’Update. Se io ho un Id di un record… posso fare qualche cosa tipo:




$modello = Modello::loadModel(33);

$modello->attributo = 'valore';

$modello->save();



In sostanza, come lo aggiorno al volo un record?

MMmmm trovato:

http://www.dawancha.net/archives/142.html

updateByPk(…,…,…,…)