Avatar billede learner Praktikant
10. december 2004 - 17:28 Der er 15 kommentarer og
1 løsning

hvorfor virker HTTP_ACCEPT_LANGUAGE ikke i mozilla

hvorfor virker HTTP_ACCEPT_LANGUAGE ikke i mozilla
det virker fint i IE

her er det:

if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "da"){
    $languageid    = "1";
} else if($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "no"){
    $languageid    = "1";
} else if($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "en"){
    $languageid    = "2";
}

Hvorfor dælan virker det kun i IE
Avatar billede neocron Nybegynder
10. december 2004 - 17:38 #1
Hej.
Simpelthen fordi ingen af dem passer.
Mozilla Firefox producerer nemlig outputtet: en-us,en;q=0.5

Det kan du tjekke ved simpelthen at sige:

<?php
echo $_SERVER["HTTP_ACCEPT_LANGUAGE"];
?>
Avatar billede jakoba Nybegynder
10. december 2004 - 17:40 #2
Det gør det da også.
prøv at udskrive værdien oran den der if
echo "accpt language er " .$_SERVER['HTTP_ACCEPT_LANGUAGE'] ."<br>";

Jeg gætter på du får noget i retning af "en-US". Det er lovlige værdier for language, men du tager ikke højde for dem. Og IE "hjælper" så ved at lade somom kun første 2 bogstaver eksisterer.
Avatar billede learner Praktikant
10. december 2004 - 17:47 #3
kender i en løsning?
Avatar billede jakoba Nybegynder
10. december 2004 - 17:58 #4
if ( substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 ) == "en" ) {
    // i denne situation er jeg kun interreseret i de første 2 bogstaver
}
Avatar billede learner Praktikant
10. december 2004 - 18:00 #5
ok, det var en smart måde...
er den så lige glad om det er store bogstaver DA ell da
Avatar billede learner Praktikant
10. december 2004 - 18:03 #6
jeg sad og rodede med dette:
if ( stristr($_SERVER['HTTP_ACCEPT_LANGUAGE'], "da" )===FALSE) {

er det bedre end:
if ( substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 ) == "en" ) {

ps smid lige som svar...
Avatar billede jakoba Nybegynder
10. december 2004 - 18:19 #7
næe, den sammenligning er ikke ligeglad med store/små bogstaver.
såvidt jeg kender praksis er det altid små bogstaver, men kan ikke garantere, hverken for reglerne eller for at de bliver overholdt ;-)

standardiseringen er desværre noget rodet :(
    http://www.w3.org/WAI/ER/IG/ert/iso639.htm
så hver producent laver mere eller mindre sine egne regler:
    http://msdn.microsoft.com/workshop/author/dhtml/reference/language_codes.asp

den sikreste løsning er at undgå at programmet stoler på noget.

if ( strtolower( substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 ) ) == "en" )

stristr ville jeg ikke bruge, det er at stole på de 2 bogstaver ikke står et andet sted i strengen end forrest (og måske betyder noget andet der)

mvh JakobA
Avatar billede learner Praktikant
10. december 2004 - 18:30 #8
okay jeg bruger din så :o)

Takker for hjælpen :O}
Avatar billede learner Praktikant
10. december 2004 - 18:46 #9
Hey, det er wierd!
men det eneste der virker i mozilla er min metode:
if ( strtolower( substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 ) ) == "da" )

med din metode:
if ( substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 ) == "da" ) {
der åbner den min engelske side???????
Hvordan kan det ske?

ps skal der ik stå '0, 1' i stedet for '0, 2' ???

Sorry jeg blir ved :o)
Avatar billede jakoba Nybegynder
10. december 2004 - 19:46 #10
det skal være et 2-tal.
brug en debug linie for at hitte ud af hvad der foregår. fx:
    echo "<!-- HTTP_ACCEPT_LANGUAGE indeholder: " .$_SERVER['HTTP_ACCEPT_LANGUAGE'] ," -->";

nu bliver indholdet den servervariabel skrevet som HTML-kommentar så du kan lave en 'vis kilde' i browseren og se hvad der faktisk står. Det er det der er alfa og omega, det der bestemmer hvad der virker.

mvh JakobA
Avatar billede learner Praktikant
10. december 2004 - 20:21 #11
okay, det er rigtigt... Jeg troede nok bare lige at nogen vidste det.. Er lidt doven nogen gange :o)

Men mange tak for det hele :o)
Avatar billede learner Praktikant
10. december 2004 - 20:24 #12
den skriver:
en-us,en;q=0.5

underligt det ikke virker så...
Avatar billede jakoba Nybegynder
10. december 2004 - 20:39 #13
og husk at det du ser i din browser ikke nødvendigvis er det sammen andre vil se med en anden maskine/browser.
Avatar billede learner Praktikant
10. december 2004 - 20:47 #14
åhh, halooo, jeg er da mega dum nu :o)
Det virker jo som det skal :o)
den skal jo vise på engelsk !!...
(lidt kavt med mozilla, at den er sat til engelsk!)

husk at det du ser i din browser ikke nødvendigvis er det samme andre vil se med en anden maskine/browser.

det er noget værre rod med det sprog :o)
Avatar billede Mik2000 Professor
18. november 2008 - 01:16 #15
Ville man med http://techpatterns.com/downloads/scripts/php_language_detection.txt få t mere præcist resultat eller er det det samme?
Avatar billede olebole Juniormester
18. november 2008 - 10:00 #16
<ole>

Odds for at vælge forkert sprog i forhold til brugerens modersmål er meget store, når man bruger denne fremgangsmåde. Langt bedre er denne løsning:
    http://www.eksperten.dk/artikler/568

/mvh
</bole>
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