Yii Framework Forum: Gestione Delle Lingue Per Utente - Yii Framework Forum

Jump to content

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

Gestione Delle Lingue Per Utente Rate Topic: -----

#1 User is offline   dragonWeb 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 16-February 13

Posted 17 February 2013 - 06:27 AM

Buon giorno,

sono nuovo sia di questo forum, sia di Yii quindi scusatemi in anticipo per la domanda forse semplice.
Ho fatto un po' di ricerche ma non sono riuscito a trovare la risposta.

Avrei un problema di questo tipo, io ho nel database una tabella utenti con un campo chiamato lang dove ho specificato il codice della lingua e vorrei che dopo che hanno effettuato l'accesso il sistema prenda la lingua dell'utente.
Ho letto la guida e ho trovato questi due metodi:
public string getLanguage()
public void setLanguage(string $language)

così ho provato a mettere nel SiteController nel login il seguente codice:

$user = new User(Yii::app()->user->getId());
Yii::app()->setLanguage( $user->lang );

ma non funziona funziona solo se lo metto nel controller quando genera l'index, ma così facendo funziona solo per quella pagina e non per tutta l'app.

Spero di essermi spiegato, vi ringrazio in anticipo per la pazienza e l'eventuale risposta.

Ciao!
0

#2 User is offline   sensorario 

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

Posted 17 February 2013 - 06:52 AM

Ad ogni richiesta devi eseguire il comando:
Yii::app()->setLanguage( $user->lang );


Che però ti consiglio di recuperare dalla sessione per non appesantire il carico del database:
Yii::app()->setLanguage( Yii::app()->session['_lang'] );


Poi devi preoccuparti di come recuperare il linguaggio quando non è in sessione:
$user = new User(Yii::app()->user->getId());
Yii::app()->setLanguage( $user->lang );


Quindi imposti sempre la lingua con questa priorità: se non c'è la sessione, la recuperi dall'utente corrente, altrimenti dalla sessione:
if(isset(Yii::app()->session['_lang'])) {
    Yii::app()->setLanguage( Yii::app()->session['_lang'] );
} else {
    $user = new User(Yii::app()->user->getId());
    Yii::app()->setLanguage( $user->lang );
}


Ho scritto questo codice "a sentimento" senza provarlo. Facci sapere se funziona correttamente.
0

#3 User is offline   dragonWeb 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 16-February 13

Posted 19 February 2013 - 05:23 PM

Ho incluso il tuo codice nel metodo init() di controller.php così non ho dovuto specificarlo per ogni controller e sembra funzionare benissimo.

Grazie!
0

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