Yii Framework Forum: Database Multilingua - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Database Multilingua Rate Topic: -----

#1 User is offline   nickyii 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 63
  • Joined: 15-September 12

Posted 19 April 2013 - 04:08 AM

Altro domandone dei miei :P

Ho una tabella del DB facciamo finta cosi:
id
titolo
testo_it
testo_en


ora nella view faccio tutto manualmente...
esempio per accedere al dato faccio:
$testo='testo_'.Yii::app()->language;

echo $data->$testo;


Come posso fare una cosa automatica che aggiunge la lingua al nome della tabella (solo per alcune, perchè non tutte hanno la traduzione)?
1

#2 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 19 April 2013 - 04:28 AM

per il nome tabella puoi gestire la funzione
public function tableName()
	{
		return '{{tabella_'.Yii::app()->language}}';
	}

per il nome campo è più corposa la faccenda...
di primo acchito ti direri di farti delle funzioni get:
poniamo che tu hai i campi
testo_it
testo_en

puoi costruirti due funzioni: una setTesto() e una getTesto()
/** funzione per settare il campo testo_lang */
function setTesto($value){
$campo='testo_'.Yii::app()->language;
$this->$campo=$value;
}
/** funzione per ottenere il campo testo_lang */
function getTesto(){
$campo='testo_'.Yii::app()->language;
return $this->$campo;
}

che richiamerai così:
$this->testo='blabla'; //richiama il setTesto 
echo $this->testo; //richiama il getTesto


Temo però che in fase di form devi passare il valore a mano, e non come model->attributes=...
0

#3 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 19 April 2013 - 04:44 AM

Forse mi sfugge qualche cosa, ma con Yii la localizzazione è già gestita nativamente. La logica è quella di scrivere nel codice nella lingua del programmatore, a rendere la stringa tradotta ci pensa Yii.

Yii::t('messaggio.da.tradurre', 'Messaggio da tradurre');


Tutto quello che devi fare, è cambiare la lingua dell'utente. Pescarla dalla querystring, dalla sessione, dove ti pare. Ci pensa Yii.

Senza contare il fatto che puoi interecettare le traduzioni mancanti:

'components' => array(
        'messages' => array(
            'onMissingTranslation' => array(
                'MyEventHandler',
                'handleMissingTranslation'),
            ),
        )
)


questa può essere la classe del componente:

class MyEventHandler
   {
       static function handleMissingTranslation($event)
       {
           $text = implode("\n", array(
              'Language: '.$event->language,
              'Category:'.$event->category,
              'Message:'.$event->message
));
mail('admin@example.com', 'Missing translation', $text);
} }

0

#4 User is offline   nickyii 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 63
  • Joined: 15-September 12

Posted 19 April 2013 - 05:26 AM

View Postsensorario, on 19 April 2013 - 04:44 AM, said:

Forse mi sfugge qualche cosa, ma con Yii la localizzazione è già gestita nativamente. La logica è quella di scrivere nel codice nella lingua del programmatore, a rendere la stringa tradotta ci pensa Yii.

Yii::t('messaggio.da.tradurre', 'Messaggio da tradurre');


Tutto quello che devi fare, è cambiare la lingua dell'utente. Pescarla dalla querystring, dalla sessione, dove ti pare. Ci pensa Yii.


Si questo lo so e lo uso già, ma è per i testi statici. Io devo pescare i testi dal database
1

#5 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 19 April 2013 - 06:04 PM

Esattamente: leggi quà. Non ho mai usato Yii:t con testi statici.
1

#6 User is offline   nickyii 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 63
  • Joined: 15-September 12

Posted 20 April 2013 - 06:50 AM

grazie ora leggo
1

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users