Implementacion de múltiples lenguajes en Codeigniter, espero que les guste, es bien simple, solo agregar una librería y configurar un par de cosas:
application/config/autoload.php
Código PHP:
Ver original//Cuidado llamar primero a la libreria session, sino no funcionará
$autoload['libraries'] = array('session','set_language');
application/config/config.php
Código PHP:
Ver original$config['country_languages'] = array( 'en' => 'english',
'es' => 'spanish'
);
application/config/routes.php
Código PHP:
Ver original$route['^en/(.+)$'] = "$1";
$route['^es/(.+)$'] = "$1";
$route['^en$'] = $route['default_controller'];
$route['^es$'] = $route['default_controller'];
application/language/english/home_lang.php
application/language/spanish/home_lang.php
application/libraries/Set_language.php
Código PHP:
Ver original<?php
exit('No direct script access allowed');
class Set_language {
public function __construct() {
$this->CI = & get_instance();
/*
* ES: capturar el lenguaje y guardarlo en session
*
*/
if ($lang = $this->CI->uri->segment(1)) {
/*
* ES: si tiene solo dos caracteres
*
*/
/*
* array config.php
*/
$languages = $this->CI->config->item('country_languages');
/*
* ES: capturar el lenguaje y guardarlo en session
*
*/
$this->CI->session->set_userdata('lang', $languages[$lang]);
}
}
}
/*
* ES: si no existe la session, la creamos con el lenguaje por defecto
*
*/
if (!$this->CI->session->userdata('lang')) {
//default
$this->CI->session->set_userdata('lang', 'english');
}
//set config language
$this->CI->config->set_item('language', $this->CI->session->userdata('lang'));
//load language file
$this->CI->lang->load('home', $this->CI->session->userdata('lang'));
}
}
application/controllers/home.php
Código PHP:
Ver original<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function index() {
$this->load->view('home');
}
}
application/views/home_view.php
Código PHP:
Ver original<a href="<?php echo base_url() ?>es">Spanish</a><br/>
<a href="<?php echo base_url() ?>en">English</a><br/>
<?php echo lang('home_hello');?>
Tambien lo puse en
github
Saludos