Sto utilizzando CodeIgniter per creare un'applicazione web multilingue. Ho inglese e altre lingue nella cartella /system/languages/
e ho creato un modello responsabile della modifica della lingua di lavoro in fase di esecuzione.La convalida del modulo ignora la lingua quando viene modificata durante l'esecuzione
Per impostazione predefinita CodeIgniter sta lavorando in francese come definito nella /application/config/config.php
$config['language'] = 'french';
In seguito, in base a un segmento URI il modello cambia la lingua di conseguenza, ad esempio semplificato muggito:
class multilang extends CI_Model {
public function __construct() {
parent::__construct();
if ($this->uri->segment(1) == 'en') {
$this->config->set_item('language', 'english');
}
}
}
Questo il modello è il primo modello elencato nelle impostazioni di caricamento automatico in /application/config/autoload.php
e posso confermare che la lingua è effettivamente cambiata in modo dinamico chiamando:
echo $this->config->item('language');
Tuttavia il costruito in libreria di validazione dei form non prende in considerazione la lingua cambiato, invece mostra solo i messaggi di errore dal linguaggio hard coded nelle impostazioni del file /application/config/config.php
in questo caso francese.
In un primo momento ho assunto questo perché la convalida del modulo è stata caricata prima del modello multilang
. Per assicurarsi che il modello è stato caricato prima, ho modificato il costruttore validazione dei form per caricare il modello prima di ogni altra cosa in questo modo:
public function __construct($rules = array())
{
$this->CI =& get_instance();
$this->CI->load->model('multilang');
// normal code after....
}
Questo fatto che il modello caricato prima della validazione dei form. Sfortunatamente ciò non è stato sufficiente e la convalida del modulo ignora ancora la lingua quando viene modificata durante l'esecuzione. Qualcuno sa perché questo succede?
Grazie.