Avatar billede leif Seniormester
09. juni 2007 - 19:15 Der er 23 kommentarer og
1 løsning

Kig på _SERVER["HTTP_ACCEPT_LANGUAGE"]

Hej,

Hvordan kan jeg tage:
$_SERVER["HTTP_ACCEPT_LANGUAGE"] og kigge på om den indeholder da for Dansk, hvis den gør det skal den udskrive Dansk ellers skal den udskrive Engelsk

På forhånd tak

/Leif
Avatar billede hmortensen Nybegynder
09. juni 2007 - 19:36 #1
Sådan her du mener?
if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "da")
{
  echo "Dansk";
}
else
{
  echo "Engelsk";
}
Avatar billede erikjacobsen Ekspert
09. juni 2007 - 19:41 #2
Jeg kan godt fortælle dig at det ikke vil virke. Min sprogstreng ser sådan her ud

    da,en-us;q=0.8,en;q=0.5,te;q=0.3

Har man en side på dansk og engelsk bør man respektere rækkefølgen, og tage det af sprogene, der står først. Iøvrigt er der ikke ret mange brugere der indstiller deres browser korrekt. Det sprog der i givet fald vælges automatisk, bør kunne vælges om.
Avatar billede leif Seniormester
09. juni 2007 - 20:14 #3
Jeg tjeckede lige min på den ene maskine den er:
en-us,da;q=0.7

Men ville det egentlig være muligt at lave det til et array, fjerne alt fra ; til det næste , og tjecke på det ?
Avatar billede erikjacobsen Ekspert
09. juni 2007 - 20:16 #4
http://php.net/split kan bruges til meget
Avatar billede hmortensen Nybegynder
09. juni 2007 - 20:29 #5
Måske explode() er nok til denne opgave, kombineret med in_array().
Avatar billede leif Seniormester
09. juni 2007 - 23:08 #6
<?
$lang  = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$lang1 = explode(",", $lang);

if (in_array("da", $lang1))
{
  echo "Dansk<br>";
  print_r($lang1);
}
else
{
  echo "Engelsk<br>";
  print_r($lang1);
}
?>

Giver mig fint Dansk hvis Dansk står først i listen, men ikke hvis den som på min anden maskine står som nr. 2
Avatar billede erikjacobsen Ekspert
09. juni 2007 - 23:11 #7
Hvis dansk er nummer står der nok "da;q=0.8" (sådan ca.) - det er ikke det samme som "da", men http://php.net/explode kan bruges til meget
Avatar billede hmortensen Nybegynder
09. juni 2007 - 23:47 #8
Du kan lave et knæk på ";" først, og så på ",".
Avatar billede leif Seniormester
10. juni 2007 - 09:33 #9
Kan du give et ekspempel ? Det kan jeg ikke lige se hvordan jeg kan gøre ?
Avatar billede hmortensen Nybegynder
10. juni 2007 - 09:38 #10
$t1 = explode(";", $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$t2 = explode(",", $t1[0]);
Avatar billede leif Seniormester
10. juni 2007 - 10:52 #11
Ja, det er fint, men det er jo kun hvis den da så står som nummer 2, men ikke hvis den står som 3, 4 eller 5 !
Avatar billede showsource Seniormester
10. juni 2007 - 11:09 #12
$lang_str = strpos(strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), "da");

if(false === $lang_str) {
echo"Engelsk";
}else{
echo"Dansk";
}
Avatar billede leif Seniormester
10. juni 2007 - 11:50 #13
showsource -> Smid et svar, tænk at det kan gøre så simpelt !
Avatar billede showsource Seniormester
10. juni 2007 - 11:57 #14
ingen point, ellers tak.

Og så har erik jo fat i en "halv" pointe, med at "respektere" rækkefølgen, selvom de fleste nok ikke indstiller deres browser "korrekt"
Avatar billede erikjacobsen Ekspert
10. juni 2007 - 12:07 #15
Forslaget fra showsource er simpelt, men forkert. Ja, det vil virker i langt de fleste tilfælde, men man kan jo spekulere på hvorfor man har valgt et præcist format - måske fordi det er nødvendigt. Ku' da være ...

1) Som showsource siger, respekterer den ikke rækkefølgen
2) Der er i gængse lister ikke nogen konflikt med at tjekke på "da" alene, forstået som at der ikke er andre sprogforkortelser, der indeholder "da". Men muligvis har jeg ikke de seneste lister, og måske kommer der nye til. Vi har Klingon, "tlh", Øvre Sorbisk, "hsb" - ikke utænkeligt, der en dag kommer "pda", "dav", "da-bo" (dansk med borholmsk accent)

Men er du glad for løsningen, leif, så skal jeg ikke blande mig yderligere ... *g*
Avatar billede showsource Seniormester
10. juni 2007 - 12:18 #16
borholmsk :O)

Men jeg ville nu også hellere bruge cookies, og så lade et sprog være default, med mulighed for at vælge andre.

Ovenstående har jeg brugt tidligere til tjek for wml support
Avatar billede erikjacobsen Ekspert
10. juni 2007 - 12:38 #17
Vel li'så godt som "en-jm"

Ja, showsource, hvis der ikke er konfliktmuligheder behøver man ikke gøre andet. Bare det holder til man når pensionsalderen...
Avatar billede leif Seniormester
10. juni 2007 - 13:04 #18
Folk har skam mulighed for at vælge anderledes, det er kun et spm. om at man ønskede at forsøge at vælge det bedste sprog for folk
Avatar billede leif Seniormester
10. juni 2007 - 13:07 #19
Nu var det ikke til mig selv, men personen som skal bruge det er vist tilfreds ellers må det laves om på et senere tidspunkt :-)
Avatar billede hmortensen Nybegynder
10. juni 2007 - 14:08 #20
Det skulle da gerne virke efter hensigten med de to explodes, efterfuldt af in_array(), ligegyldigt hvor mange sprog der fremgår.
Avatar billede erikjacobsen Ekspert
10. juni 2007 - 14:14 #21
"personen som skal bruge" ... du har vel forklaret ham, at det bryder sammen den dag man får sat et nyt sprog ind der indeholder "da". Og du har vel også forklaret ham, at det sagtens kan laves, så det ikke bryder sammen. Nå, ved du hvad, jeg er ligeglad ... ;)
Avatar billede leif Seniormester
10. juni 2007 - 14:37 #22
hmortensen -> Hvis "da" står som nr. 2 så er det fint, men står den som nr. 3 eller længere nede så får jeg Engelsk og ikke Dansk.

http://www.ljnet.dk/exp/782430/testlang.php
Avatar billede leif Seniormester
10. juni 2007 - 14:49 #23
Avatar billede leif Seniormester
18. juli 2007 - 21:43 #24
Efter at showsource ikke ønsker point "lukker" jeg tråden her og tager dem tilbage
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