Avatar billede mobildata Nybegynder
07. december 2005 - 17:10 Der er 1 kommentar og
1 løsning

problemer med at "huske" brugerens sprog valg

Jeg har et script der kigger på HTTP_ACCEPT_LANGUAGE og "includer" en sprogfil alt efter browserens sprog.

Men når den besøgendes browser returner "noget andet" end
en = engelsk eller da = dansk, sætter den engelsk som default.

men jeg vil gerne have et brugerne selv bagefter kan vælge sporg
via et link.

Jeg har fundet ud af at jeg kan ændre sproget fra f.eks engelsk
til dansk ved at skrive: fil.php?slanguage=da

men når man så browser væk fra forsiden til en af undersiderne og vender tilbage til forsiden via f.eks et tilbage link.

så validerer scriptet igen brugerens sprog.

kan man ikke få den til at huske at brugeren f.eks valgte dansk istedet for, og ikke begynde af tjekke browserens sprog når han browser tilbage til forsiden.

Scriptet:


<?

if ($slanguage == "en" || $slanguage == "da")
  $language = $slanguage;
else if (substr($HTTP_ACCEPT_LANGUAGE, 0, 2) == "en")
  $language = substr($HTTP_ACCEPT_LANGUAGE, 0, 2);
else if (substr($HTTP_ACCEPT_LANGUAGE, 0, 2) == "da")
  $language = substr($HTTP_ACCEPT_LANGUAGE, 0, 2);
else
  $language = "unknown";

if ($language == 'unknown') {
  include "sprog/engelsk.php";
  include "sprog/unknown.php";
}
if ($language == 'en') {
  include "sprog/engelsk.php";
}
if ($language == 'da') {
  include "sprog/dansk.php";
}

?>
Avatar billede well_r Nybegynder
07. december 2005 - 17:16 #1
det er fordi du tjekker HELE tiden hvad brugerens eng er..
derfor bør du enten gemme det i en session eller i en cookie

dette gøres ved at sige:
if ($slanguage == "en" || $slanguage == "da")
  $language = $slanguage;
  setcookie("language",$language);
else if(!$_COOKIE[language]){
  if (substr($HTTP_ACCEPT_LANGUAGE, 0, 2) == "en")
    $language = substr($HTTP_ACCEPT_LANGUAGE, 0, 2);
  else if (substr($HTTP_ACCEPT_LANGUAGE, 0, 2) == "da")
    $language = substr($HTTP_ACCEPT_LANGUAGE, 0, 2);
  else
    $language = "unknown";
} else {
  $language = $_COOKIE["language"];
}
if ($language == 'unknown') {
  include "sprog/engelsk.php";
  include "sprog/unknown.php";
}
if ($language == 'en') {
  include "sprog/engelsk.php";
}
if ($language == 'da') {
  include "sprog/dansk.php";
}
Avatar billede mobildata Nybegynder
07. december 2005 - 17:23 #2
jeg har prøvet session muligheden uden held.

Fordi det bliver gemt i sessionen hvad browseren sprog er.

og hvis brugeren så ændrer sprogvalg ved et link der hedder fil?slanguage=da
Så bliver det ikke gemt i sessionen.

Så når brugeren så vender tilbage til forsiden vil indhlodet af sessionen
stadig være det oprindelige sprog som blev detected via HTTP_ACCEPT_LANGUAGE

Kan man lave et link der ændrer den nuværende session til værdien "da" selvom
browseren sprog er "en" = engelsk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester