Hola a todos,hace poco un cliente me encargó mi primera página web y en ella el quería que se permitiera cambiar de idioma.Pues bien, yo le dije que sin problema ya que esto ya lo había hecho antes.Y cual es mi sorpresa? que le entrego la página web ya completa y me dice que el cambio de idioma no le funciona cuando en mi ordenador si.Por lo visto funciona en Opera y Chrome (que es donde lo había probado) pero no en Explorer y Firefox debido a que no se puede recuperar nada a través del $_Request.
Mi código es el siguiente:
Formulario del index.php:
Código PHP:
include "FuncionIdioma.php";
session_start();
if (!(isset($_SESSION['idioma']))) $_SESSION['idioma']="GALEGO";
$textos = idioma(0, $_SESSION['idioma']);
<form class="idioma" action="CambioIdioma.php" method="get">
<input type="image" name="idioma" value="GALEGO" src="img/galego.png" class="icoidioma3"/>
<input type="image" name="idioma" value="ESPANHOL" src="img/español.png" class="icoidioma"/>
<input type="image" name="idioma" value="INGLES" src="img/ingles.png" class="icoidioma2"/>
</form>
<div> echo $textos[6];</div> //ejemplo de texto
CambioIdioma.php
Código PHP:
// CambioIdioma.php
// Esta pagina es invocada por los enlaces de cambio de idioma
// Trae el idioma nuevo a poner en la aplicacion en la variable $idioma
// Recogemos la variable de idioma
$idioma = $_REQUEST['idioma'];
// iniciamos la sesion
session_start();
// Sustituimos la variable de sesion de idioma por el nuevo valor
$_SESSION['idioma'] = $idioma;
// invocamos la pagina desde donde se llamo a esta
header("location: index.php");
FuncionIdioma.php
Código PHP:
<?php
//******************************************************************
// Read from a file de language texts for a page
// Parameters:
// $codpag : code of page to translate
// $idioma : code of language to use (ESPANHOL, ENGLISH)
// returns an array with all texts of the page in $idioma language
//******************************************************************
function idioma($codpag, $idioma){
// initialize the lang array
$lang = array();
// define the name of file of language
$fichero = $idioma.".LANG";
// open file in read mode
$FileLang = fopen($fichero,"r");
// initialize $finish var for detect that language is totally obtained before eof file
$finish = false;
// read the first line of file
$line = fgets($FileLang);
// until eof or language obtained
// while doesnt find end of file or flag $finish be true
while (!feof($FileLang) && !$finish ){
// if the six firts characters are CodPag and the CodPag value be correct
if ((substr($line,0,6)=="CodPag") && (substr($line,6)==$codpag)){
$line = fgets($FileLang);
$line = trim($line);
// while doesnt find end of file or other CodTexto
while (!feof($FileLang) && (substr($line,0,8)=="CodTexto"))
{
// store de number of codtext
$codtext = substr($line, 8);
$endcodetextlang = false;
$text = "";
While ( !feof($FileLang) && !$endcodetextlang)
{
// read all lines of codtext of language
// initialization of $endcodetextlang to false, will take true value when doesn't find
// more CodText for this page lang
// read the value of language for the codtext
$line = fgets($FileLang);
while (!feof($FileLang) && (!$endcodetextlang))
{
if (!(substr($line,0,3)=="Cod") && !(substr($line,0,1)=="#") && !feof($FileLang))
{
// delete special characters of the line
$line = trim($line);
$text .= $line;
$line = fgets($FileLang);
}
else
$endcodetextlang = true;
}
// puts the text language in $codtext position of the array
}
$lang[intval($codtext)] = $text;
// read for next codtext or end of codtext
// read for next line of the same codtext of find other codtext, codpag of eof
//$line = fgets($FileLang);
}
// all information of language for this codpage has been obtained
// $finish = true;
$finish = true;
}
else
{
$line = fgets($FileLang);
}
}
return $lang;
}
?>
Y ya por último un trozo de fichero de lenguaje Galego.lang
Código PHP:
#
# CodPag 0 || index.php
#
CodPag0
CodTexto1
Inicio
CodTexto2
Materias
CodTexto3
No se si se entiende la idea y mi problema pero básicamente es que en Chrome si hago un print_r($_REQUEST['idioma']) me sale el idioma escogido pero en Firefox sale vacío y no se muy bien a que se debe, he probado de todo incluso cambiando las preferencias del propio navegador.
Espero que alguien me pueda ayudar,muchas gracias.