Pasos para crear una web multilenguaje (dos o más idiomas) con urls amigables del tipo:
miweb.com/en/about
miweb.com/es/about
miweb.com/de/about
1. Editamos el archivo application/config/config y dejamos el valor de la variable index_page vacio (por defecto viene con valor de «index.php»):
$config['index_page'] = '';
2. Descargar la libreria i18n.
3. Pegamos los 2 archivos (MY_Lang.php, MY_Config.php) dentro de la carpeta: application/core.
4. Abrimos el archivo MY_Lang.php y editamos la variable $languages y editamos el array con los idiomas que vayamos a utilizar, por ejemplo:
var $languages = array( 'en' => 'english', 'es' => 'spanish', 'de' => 'deutsch' );
5. Configuramos las rutas en el archivo application/config/routes.php:
// Ejemplo para 3 idiomas (ampliable al número de idiomas que utilices). Por ejemplo '/en/about' -> usaria el controlador 'about' $route['^(en|es|de)/(.+)$'] = "$2"; // '/en', '/es', '/fr' URIs -> controlador usado por defecto $route['^(en|es|de)$'] = $route['default_controller'];
6. Creamos los archivos php donde almacenaremos las variables con los textos de cada idioma. Estos archivos tienen que cumplir 2 reglas:
– El nombre de los archivos php deben finalizar con el nombre «_lang«.
– Deben guardarse en la carpeta: application/language/[idioma]/ de la siguiente forma:
application/language/english/generales_lang.php
application/language/spanish/generales_lang.php
application/language/deutsch/generales_lang.php
Un ejemplo de archivo, en este caso el archivo de idioma español: spanish/generales_lang.php:
// Textos Globales $lang['global.titulo'] = "Himno de León"; $lang['global.descripcion'] = "Sin León no hubiera España, que antes que Castilla leyes, concilios, fueros y reyes, dieron prestigio a León."; // etc...
7. En el archivo del controlador incluimos las librerias necesarias. Por ejemplo:
public function __construct() { parent:: __construct(); $this->load->helper('language'); // cargo la libreria language (core/MY_Lang.php & core/MY_Config.php) $this->lang->load('generales'); // cargo los archivos del lenguaje creados anteriormente (en mi caso: generales_lang.php) $this->load->helper("url"); }
8. Ya por último solo nos queda ver su modo de uso. En este caso dentro de un archivo de vista:
<p>Ejemplo de texto: <?=lang('global.titulo')?></p> <p>Ejemplo de enlace: <?=anchor('welcome', lang('global.titulo'))?></p>
Para obtener el codigo iso del idioma activo se utiliza la variable:
echo $this->lang->lang(); // Ej: "es"
Otro ejemplo de navegación entre idiomas:
<ul> <li<?php if($this->lang->lang() == 'en') { echo ' class="active"'; } ?>><?php echo anchor($this->lang->switch_uri('en'),'EN'); ?></li> <li<?php if($this->lang->lang() == 'es') { echo ' class="active"'; } ?>><?php echo anchor($this->lang->switch_uri('es'),'ES'); ?></li> <li<?php if($this->lang->lang() == 'de') { echo ' class="active"'; } ?>><?php echo anchor($this->lang->switch_uri('de'),'DE'); ?></li> </ul>
Agradezco tu comentario 🤘