Ver Mensaje Individual
  #14 (permalink)  
Antiguo 09/04/2012, 03:10
KLAYMAN
 
Fecha de Ingreso: febrero-2002
Mensajes: 351
Antigüedad: 22 años, 3 meses
Puntos: 19
Respuesta: ¿Alguien ha hecho alguna vez una web con urls multilenguaje?

gjx2, tengo una pregunta que hacerte, que no me queda del todo claro.

Supongo que en los archivos vista debo llamar a la función privada _remap() del controlador pages.php.
No me queda claro como hacerlo, ni como pasarle los parámetros, si esto hay que hacerlo así me parece que es aquí donde tengo el problema.

Por ejemplo, hasta ahora utilizo en una vista un anchor, tal como este:
Código:
 <?php echo anchor('about','About us'); ?>
Y esto llama al controlador 'about'.

También tengo en la vista una línea que cambia el idioma, que hasta ahora me funciona bien:
Código:
 <?php echo anchor($this->lang->switch_uri('es'),'Cambiar a español'); ?>
Supongo que esta línea quedará igual y no hay que tocarla.


Pego por aquí el código de algunos de los archivos:

routes.php
Código:
$route['default_controller'] = "index";
$route['404_override'] = '';

$route['es/(:any)'] = "pages/es/$1";
$route['es'] = "pages";
 
// '/en' and '/es' -> use default controller
$route['^en$'] = $route['default_controller']; 
$route['^es$'] = $route['default_controller'];

controllers/pages.php
Código:
<?php

class Pages extends CI_Controller {

    function _remap() {
        # Primer argumento le pasas el idioma, Segundo: pasas la pagina solicitada
        $this->getPage($this->uri->segment(1), $this->uri->segment(2));
    }

    function getPage($lang = "es", $page = "home") {
        if (empty($page)) {
            $page = "home";
        }
        # Cargas el lenguaje y el archivo
        $this->lang->load('filename', $lang);

        # Llamas el archivo html
        $this->load->view($page);
    }

}
?>

controllers/about.php
Código:
         public function __construct() {
            parent::__construct();
        }


        public function index()
        {
            $this->lang->load('about');
            if ($this->lang->lang() == "es")
            {
            $data['title'] = 'Acerca de Nosotros';
            $data['main_content'] = '/es/about';
            $this->load->view('template/template',$data);
            }
            else
            {
            $data['title'] = 'About us';
            $data['main_content'] = '/en/about_us';
            $this->load->view('template/template',$data);  
            }
        }
}

views/en/index.php -> Aquí hago llamada a las distintas páginas
Código:
       <?php echo $this->lang->line('message_welcome'); ?>
       <?php echo anchor($this->lang->switch_uri('es'),'Cambiar a español'); ?>
       <?php echo anchor('about','About us'); ?>

Creo que con estos códigos es suficiente. Sigo mientras probando, si lo soluciono actualizo.

Gracias por todo.