Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/10/2014, 17:54
Avatar de truman_truman
truman_truman
 
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
[APORTE] Multi lenguaje Codeigniter

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
  1. //Cuidado llamar primero a la libreria session, sino no funcionará
  2.  
  3.  $autoload['libraries'] = array('session','set_language');


application/config/config.php
Código PHP:
Ver original
  1. $config['country_languages'] = array(
  2.     'en' => 'english',
  3. 'es' => 'spanish'
  4.  );

application/config/routes.php
Código PHP:
Ver original
  1. $route['^en/(.+)$'] = "$1";
  2. $route['^es/(.+)$'] = "$1";
  3.  
  4. $route['^en$'] = $route['default_controller'];
  5. $route['^es$'] = $route['default_controller'];



application/language/english/home_lang.php
Código PHP:
Ver original
  1. $lang['home_hello'] = "Hello";


application/language/spanish/home_lang.php
Código PHP:
Ver original
  1. $lang['home_hello'] = "Hola";


application/libraries/Set_language.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (!defined('BASEPATH'))
  4.   exit('No direct script access allowed');
  5.  
  6. class Set_language {
  7.  
  8.   public function __construct() {
  9.     $this->CI = & get_instance();
  10.  
  11.     /*
  12.      * ES: capturar el lenguaje y guardarlo en session
  13.      *
  14.      */
  15.     if ($lang = $this->CI->uri->segment(1)) {
  16.       /*
  17.        * ES: si tiene solo dos caracteres
  18.        *
  19.        */
  20.       if (strlen($lang) == 2) {
  21.         /*
  22.          * array config.php
  23.          */
  24.         $languages = $this->CI->config->item('country_languages');
  25.         if (array_key_exists($lang, $languages)) {
  26.           /*
  27.             * ES: capturar el lenguaje y guardarlo en session
  28.             *
  29.             */
  30.           $this->CI->session->set_userdata('lang', $languages[$lang]);
  31.         }
  32.       }
  33.     }
  34.     /*
  35.      * ES: si no existe la session, la creamos con el lenguaje por defecto
  36.      *
  37.      */
  38.     if (!$this->CI->session->userdata('lang')) {
  39.       //default
  40.       $this->CI->session->set_userdata('lang', 'english');
  41.     }
  42.     //set config language
  43.     $this->CI->config->set_item('language', $this->CI->session->userdata('lang'));
  44.     //load language file
  45.     $this->CI->lang->load('home', $this->CI->session->userdata('lang'));
  46.   }
  47.  
  48. }


application/controllers/home.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. if (!defined('BASEPATH')) exit('No direct script access allowed');
  4.  
  5. class Home extends CI_Controller {
  6.  
  7.   public function __construct() {
  8.     parent::__construct();
  9.   }
  10.  
  11.   public function index() {
  12.     $this->load->view('home');
  13.   }
  14.  
  15. }

application/views/home_view.php
Código PHP:
Ver original
  1. <a href="<?php echo base_url() ?>es">Spanish</a><br/>
  2. <a href="<?php echo base_url() ?>en">English</a><br/>
  3. <?php echo lang('home_hello');?>



Tambien lo puse en github

Saludos
__________________
la la la

Última edición por truman_truman; 05/10/2014 a las 19:29 Razón: title