¿Sabéis alguna forma de hacer esto mismo pero con el framework Codeigniter? Si lo pongo tal cual me da error.
$_SERVER['HTTP_ACCEPT_LANGUAGE']
Gracias
Puedes usar la clase UserAgent (http://codeigniter.com/user_guide/libraries/user_agent.html).
Con el método $this->agent->accept_lang().
if ($this->agent->accept_lang('en'))
{
echo 'You accept English!';
}
Gracias por tu respuesta. He visto que podía usar esta sentencia, pero no he llegado a mirármela detenidamente proque creo que no me serviría para lo que quiero hacer.
Lo que quiero es capturar el idioma del navegador para hacer que al entrar en la página se dirija directamente a ese idioma, en lugar de poner uno por defecto.
Te puede servir perfectamente para lo que tu quieres.
En el constructor del controlador, lo usas así:
if ($this->agent->accept_lang('en'))
{
redirect('site/english');
}else if ($this->agent->accept_lang('es')
{
redirect('site/spanish');
}
Claro está que el controlador debe tener los métodos english y spanish.
No lo consigo.
He cargado la clase $this->load->library('user_agent'); en el controlador home.php y creo que con esto ha dejado de darme error, pero ahora no sé cómo hacerlo para redireccionar, porque la forma como llamo a la página de inicio es la siguiente, y no sé cómo diferenciarlo por idiomas:
$this->load->view('index', $data);
Así es como diferencio los idiomas por URL, no sé si os puede servir:
ES: http://www.dominio.com
EN: http://www.dominio.com/index.php/en/home/index/
Otra cosa que he probado es modificando el archivo system\application\libraries\langsystem.php. Aquí tengo este código que me permite cambiar el idioma por defecto.
if($CI->uri->segment(1))
$this->lang_code = $this->get_language($CI->uri->segment(1));
else
$this->lang_code = 'es';
He intentado hacer esto
if($CI->uri->segment(1))
$this->lang_code = $this->get_language($CI->uri->segment(1));
else {
if ($this->agent->accept_lang('en')){
$this->lang_code = 'en';
}else{
$this->lang_code = 'es';
}
}
pero me da error otra vez :-\
Haciéndolo como propuso madpitbull_99 y redireccionándolo, por ejemplo, a www.google.es me funciona. Sin embargo, si lo redirecciono tal cual pero a la URL de mi web, el navegador me da el error de que no se está redireccionando correctamente. ¿Alguna idea?
Esto es lo que he añadido al controlador home.php
$this->load->library('user_agent');
if ($this->agent->accept_lang('en'))
{
redirect("http://www.midominio.com");
}
Cita de: KateLibby en 23 Noviembre 2011, 10:29 AM
Haciéndolo como propuso madpitbull_99 y redireccionándolo, por ejemplo, a www.google.es me funciona. Sin embargo, si lo redirecciono tal cual pero a la URL de mi web, el navegador me da el error de que no se está redireccionando correctamente. ¿Alguna idea?
Creo que no se añade parametro, es como utilizar
base_url(), sino corrijanme.
$this->load->library('user_agent');
if ($this->agent->accept_lang('en'))
{
redirect();
}
>:( Nada, tampoco me funciona así.
También intenté hacer una chapuza. Me fui a views/index.php y allí redireccioné hacia el idioma, de esta manera:
<script>
location.href="URL";
</script>
El resultado que obtuve es que parecía que hacía un bucle redireccionándose todo el rato.