Foros del Web » Programando para Internet » PHP » CodeIgniter »

[APORTE] Multi lenguaje Codeigniter

Estas en el tema de [APORTE] Multi lenguaje Codeigniter en el foro de CodeIgniter en Foros del Web. 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 @import ...
  #1 (permalink)  
Antiguo 05/10/2014, 17:54
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 10 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
  #2 (permalink)  
Antiguo 12/10/2014, 16:25
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: [APORTE] Multi lenguaje Codeigniter

entiendo que codeigniter trae la misma funcionalidad por natuleza
  #3 (permalink)  
Antiguo 12/10/2014, 19:17
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 10 meses
Puntos: 177
Respuesta: [APORTE] Multi lenguaje Codeigniter

Cita:
Iniciado por Patriarka Ver Mensaje
entiendo que codeigniter trae la misma funcionalidad por natuleza
Si,de eso se trata.
Esta solo es una manera de implementarlo en el sitio para alternar los idiomas.
__________________
la la la
  #4 (permalink)  
Antiguo 16/02/2015, 06:48
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 10 meses
Puntos: 177
Respuesta: [APORTE] Multi lenguaje Codeigniter

Me falto cargar el helper de lenguage

application/config/autoload.php
Código PHP:
Ver original
  1. $autoload['helper'] = array('language');

Etiquetas: lenguaje, multi
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:08.