Detectar idioma en php

  • Autor Autor Sindulfo Santacruz
  • Fecha de inicio Fecha de inicio
S

Sindulfo Santacruz

Zeta
Buscando en internet, he encontrado, modificado y adaptado a mis necesidades algo (relativamente sencillo)

La idea es dejar en el directorio raiz en un archivo index.php el siguiente código:

Insertar CODE, HTML o PHP:
<?php
//Creamos una función que detecte el idioma del navegador del cliente.
function getUserLanguage() {
$idioma =substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
return $idioma;
}
//Almacenamos dicho idioma en una variable
$user_language=getUserLanguage();
if($user_language=='en'){
header( 'Location: http://sitio.com/en' );
}
elseif($user_language=='es'){
header( 'Location: http://sitio.com/es' );
}
else{
header('Location: http://sitio.com/es')
}
?>

Pero me arroja el ya famoso mensaje:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator

Alguna sugerencia?

Agradecido desde ya.
 
Sabés que hace unos días buscaba lo mismo y encontré este mismo código.

Respecto a tu problema, fijate si en tu servidor se subió algún historial de error (generalmente aparece como error_log). Abrilo con un bloc de notas y publicalo acá para poder detectar bien el inconveniente :encouragement:
 
Sabés que hace unos días buscaba lo mismo y encontré este mismo código.

Respecto a tu problema, fijate si en tu servidor se subió algún historial de error (generalmente aparece como error_log). Abrilo con un bloc de notas y publicalo acá para poder detectar bien el inconveniente :encouragement:
 
Sabés que hace unos días buscaba lo mismo y encontré este mismo código.

Respecto a tu problema, fijate si en tu servidor se subió algún historial de error (generalmente aparece como error_log). Abrilo con un bloc de notas y publicalo acá para poder detectar bien el inconveniente :encouragement:
 
pero y entonces los usuario que estén en español nunca podrán ver la versión en ingles?
 
Crea una Sesión/Cookie/condición/etc para saber cuando redirigirlo y cuando no, si no estaras en un ciclo que nuca acabará, lo mas seguro es que por eso te sale el error, se queda redirigiendo todo el tiempo hasta que el server te marca el error.

Saludos.
 
Crea una Sesión/Cookie/condición/etc para saber cuando redirigirlo y cuando no, si no estaras en un ciclo que nuca acabará, lo mas seguro es que por eso te sale el error, se queda redirigiendo todo el tiempo hasta que el server te marca el error.

Saludos.

Encontré esto (con lo de las cookies incluidas)

Con PHP, detectar idioma, redireccionar página y guardar preferencia del lenguaje en una cookie | Solosequenosenada

Capaz que los tiros vayan por esos lares.

- - - Actualizado - - -

De lo que me estoy dando cuenta es que necesito de un debug en php.

En el siglo pasado, cuando todavía programaba en rpg, cobol, c++ o visual basic, siempre tenía a mano la herramienta para ir viendo paso a paso qué hace el código en todo momento.

Esto del php, me tiene de las guirnaldas.

😕
 
Encontré esto (con lo de las cookies incluidas)

Con PHP, detectar idioma, redireccionar página y guardar preferencia del lenguaje en una cookie | Solosequenosenada

Capaz que los tiros vayan por esos lares.

- - - Actualizado - - -

De lo que me estoy dando cuenta es que necesito de un debug en php.

En el siglo pasado, cuando todavía programaba en rpg, cobol, c++ o visual basic, siempre tenía a mano la herramienta para ir viendo paso a paso qué hace el código en todo momento.

Esto del php, me tiene de las guirnaldas.

😕

Si estás en local puedes usar xdebug.
 
y creo que debería de implementar algo así en forma local, para encontrar el error.. con el xdebug.
Sucede que trabajo vía ssh, directamente en los servidores. Poco y nada uso el cPanel.

Vieja escuela que le llaman.

:ambivalence:

- - - Actualizado - - -

Sabés que hace unos días buscaba lo mismo y encontré este mismo código.

Respecto a tu problema, fijate si en tu servidor se subió algún historial de error (generalmente aparece como error_log). Abrilo con un bloc de notas y publicalo acá para poder detectar bien el inconveniente :encouragement:

[Fri Jul 29 10:56:20 2016] [error] [client 181.332.336.33] SoftException in Application.cpp:261: File "/home/site/public_html/www.sitio.com/index.php" is writeable by group

- - - Actualizado - - -

miércoles!
Estaba a la vista y no lo veía... era un simple drama de permisos, solucionable con una simple línea de chmod 644
Ya me estaba sacando canas verdes.

- - - Actualizado - - -

Por cierto, el código original tiene un error:

PHP:
<?php
//Creamos una función que detecte el idioma del navegador del cliente.
function getUserLanguage() {
$idioma =substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
return $idioma;
}
//Almacenamos dicho idioma en una variable
$user_language=getUserLanguage();
if($user_language=='en'){
header( 'Location: http://sitio.com/en' );
}
elseif($user_language=='es'){
header( 'Location: http://sitio.com/es' );
}
else{
header('Location: http://sitio.com/es' );
}
?>

éste es el corregido y queda disponible para el grupo.

:encouragement:
 
Atrás
Arriba