Hola, estoy programando un sitio web con CodeIgniter y implementé la opción de agregar idiomas y quiero que el sitio sea en varios idiomas, ya tengo implementado la lógica y funciona bien con el route que hice pero es a mano y quiero hacerlo que funcione para cualquier idioma sin yo tener que modificar ningún código:
Mi route actualmente:
$route['en'] = "content/home";
$route['es'] = "content/home";
$route['rs'] = "content/home";
$route['en/(:any)/listar'] = "content/listar";
$route['en/(:any)/(:any)'] = "content/ver";
$route['es/(:any)/listar'] = "content/listar";
$route['es/(:any)/(:any)'] = "content/ver";
$route['rs/(:any)/listar'] = "content/listar";
$route['rs/(:any)/(:any)'] = "content/ver";
las siglas en,es y rs son las abreviaturas de los idiomas que serían english, español y ruso. quiero que mi sitio sea lo más genérico posible con el fin de convertirlo en un CMS en un futuro no muy lejano.
Aquí el código de prueba:
el Código de mi index en el Controllador es este:
===================================
public function home(){/*
======================
= Home del Sitio Web =
======================
*/
$idioma = $this->uri->segment(1);
$this->load->model(array('session_model','noticias_model'));
$data['idioma'] = $idioma;
$data['idiomas'] = get_idiomas();
$data['secciones_existentes'] = $this->session_model->get_seccion_activas($idioma);
$this->load->view('head');
$this->load->view('home',$data);
$this->load->view('foot');
}
el código de mi view en home es:
========================
<body>
<div class="container">
<?php
foreach ($idiomas as $__idioma__) {
echo '<a href="'.base_url().$__idioma__->abre.'">'.$__idioma__->nombre.'</a> ';
}
?>
<h2>Secciones Activas</h2>
<table class="table">
<tr>
<th>Nombre a Mostrar</th>
<th>Url del Icono</th>
<th>Idioma</th>
</tr>
<?php
foreach ($secciones_existentes->result() as $seccionActiva) {
?>
<tr>
<td><a href="<?php echo '/'.$idioma.'/'.get_uri($seccionActiva->nombre_mostrar).'/listar';?>" title=""><?php echo $seccionActiva->nombre_mostrar;?></a></td>
<td><?php echo $seccionActiva->url_icono;?></td>
<td><?php echo $seccionActiva->idioma;?></td>
<?php }?>
</tr>
</table>
<h2>TimeLine</h2>
<div id="timeline">
<?php
$timeline = get_TimeLine($idioma);
foreach ($timeline as $_tnews) {
?>
<div class="content_timeline">
<img src="<?php echo $_tnews->foto_portada;?>" alt="">
<div>
<span><p class="seccion"><?php echo $_tnews->seccion_nombre;?></p>
<p class="tiempo"><?php echo ago($_tnews->momento_publicada, ''); ?></p></span>
<a href="<?php echo '/'.$idioma.'/'.get_uri($_tnews->seccion_nombre).'/'.$_tnews->url_noticia;?>" title=""> <h4><?php echo $_tnews->titulo_noticia;?></h4></a>
</div>
</div>
<?php } ?>
</div>
<p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p>
</div>
</body>
Como verás es una prueva lo que hago aquí, es solamente para probar como va funcionando lo que estoy programando. Saludos Dairon
Aquí un PrintScreen. las secciones Activas no tiene actualizado el código así que no carga nada ;) y le queité el ruso:
PrintScreen:
=========
Saludos Atentamente Dairon.