Gå til innhold

[Løst] Redirect avhengig av språk


Anbefalte innlegg

Heisann, jeg prøver og finne et script som redirecter deg til en spesiell url avhengig av språket på pcen.

 

Fant en .htaccess måte og gjøre dette på, men den satt bare chrome i en loop, og sendte deg til /en uansett hvilket språk du hadde.

 

Noen som har en enkel måte og fikse dette på?

 

Eksempel:

 

Norsk OS, sender besøkende til http://eksempel.org/no

En_gb OS, sender besøkende til http://eksempel.org/en

En_US OS, sender besøkende til http://eksempel.org/us

 

 

osv osv..

 

 

Noen som har noen råd?

Endret av Luraguttn
Lenke til kommentar
Videoannonse
Annonse

Eg skreiv noko heilt pleint no. Du kan lage fleire "cases" hvis du vil det selvfølgeleg.

Sikkert fleire måter å gjere det på, men eg tykkjer dette er enklast med PHP.

 

<?php
$lang = explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ;
switch ($lang[0]) {
   case "nn-no":
       $sprak = "nynorsk";
       break;
   case "nb-no":
       $sprak = "bokmal";
       break;
   default:
       $sprak = "english";
       break;
}

header("Location: index.php?lang=$sprak");
?>

 

Redigert: Dette går på nettleser språk, du kan jo naturlegvis sjekke dette opp mot IP, men det krever jo ein del meir kode. Med det sagt, la brukeren få velge sjølve óg. Hugs å ta med nokre flag på nettstaden slik at dei kan overstyre automatikken.

Kan jo vere at nokon norske nytter ein anna nettlesar til dømes.

Lukke til, håper eg forstod deg rett :)

Endret av steffenz
Lenke til kommentar

Eg skreiv noko heilt pleint no. Du kan lage fleire "cases" hvis du vil det selvfølgeleg.

Sikkert fleire måter å gjere det på, men eg tykkjer dette er enklast med PHP.

 

<?php
$lang = explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ;
switch ($lang[0]) {
   case "nn-no":
       $sprak = "nynorsk";
       break;
   case "nb-no":
       $sprak = "bokmal";
       break;
   default:
       $sprak = "english";
       break;
}

header("Location: index.php?lang=$sprak");
?>

 

Redigert: Dette går på nettleser språk, du kan jo naturlegvis sjekke dette opp mot IP, men det krever jo ein del meir kode. Med det sagt, la brukeren få velge sjølve óg. Hugs å ta med nokre flag på nettstaden slik at dei kan overstyre automatikken.

Kan jo vere at nokon norske nytter ein anna nettlesar til dømes.

Lukke til, håper eg forstod deg rett :)

 

Så for at brukerene skal havne i mapper, så må jeg bare endre location: til /$språk for at de skal komme til mapper ?

 

 

Edit:

 

Endret litt på koden nå slikt den skal passe mitt format, men når jeg laster filen opp skjer ingenting.

 

Koden er:

 

<?php
$lang = explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ;
switch ($lang[0]) {
   case "nb-no":
       $sprak = "no";
       break;
   case "en-gb":
       $sprak = "en";
       break;
   default:
case "en-us":
       $sprak = "us";
       break;
}

header("Location: /$sprak/");
?>

 

Ser du noen feil?

Endret av Luraguttn
Lenke til kommentar

Nei ikkje egentleg.

Er dette det einste du har i fila? Hvis du har noko som helst som printes ut, vil ikkje header fungere :)

 

Fikk hjelp av en via MSN vil og fikse koden litt.

 

Nye koden ble:

 

<?php
ob_start();
$lang = explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ;
switch ($lang[0]) {
   case "nb-NO":
       $sprak = "no";
       break;
   case "en-GB":
       $sprak = "en";
       break;
default:
       $sprak = "us";
       break;
}

header("Location: /".$sprak."/");
?>

 

 

Takk for hjelpen :)

Lenke til kommentar

Åja, mogleg det er forskjellig frå versjon til versjon. Koden fungerte iallefall hos meg sånn som du skreiv tidlegare.

Berre hyggeleg å hjelpe. Hugs at dette berre er ein "prototype", og høyr på kva Ernie sa tidligare i tråden. Noko som ser innlysande lett ut, kan vise seg å vere vanskeleg nokre gongar.

 

Lukke til, å berre spørr om eg kan hjelpe med noko meir :)

Lenke til kommentar
Gjest Slettet+9871234

Ser at oppgaven er løst og koden er enkel.

 

Jeg trenger samme løsning på en av mine siter og lurer på om det er den beste og profesjonelle måten å gjøre det på?

 

Man ser jo ofte at om man besøker en kjent engelskspråklig site, så havner man automatisk på en side med norsk tekst.

 

Personlig vil jeg foretrekke en php fremfor en JS løsning på grunn av sikkerhet etc.

 

Om man bruker en Apache server er vel også en .htaccess løsning enda sikrere?

Endret av Slettet+9871234
Lenke til kommentar

Ein veg å gå kan jo vere å sjekke opp mot IP, samt sekundærspråk. Som du ser i kodesnutten eg skreiv har eg nytta explode() til å berre få fram første språkval. Sjekk opp to av desse (i min kodesnutt finner du då neste linje ved lang[1].

 

Videre sjekker ein geografisk stad av IP, det ville eg gjort. Kva er då sannsynet for at vedkommende kan vere norsk? Sikkert fleire måter å gjere det på, men personleg tykkjer eg det er nok om ein i tillegg har moglegheit for at brukaren kan velje språk i etterkant (overstyre automatikken). Det kan óg vere hensiktsmessig å lagre ein cookie (eventuelt SESSION om du ikkje vil bruke Javascript) på språkvalet.

 

Redigert: Kommer ikkje på fleire måter i validere språket på. Men kom gjerne med tips her. Det meste kan ein fikse med PHP, eventuelt samen med Javascript til å berekne sannsyn.

Endret av steffenz
Lenke til kommentar

Det var ein lang kode!

Eg tykkjer personleg om når eg kan velje sjølve i tilegg. Mange ganger ynkjer eg å ha sider på engelsk, sjølv om eg er norsk. Diffor tykkjer eg ikkje dette trenger å vere så utruleg "absolutt". Ein må kunne velje, og språkvalet går berre på kva språk ein har foretrukket. Har ein til dømes engelsk språk på nettleseren kan det tyde på fleire ting:

 

- At brukaren ikkje gadd å finne norsk versjon, og er likegyldig.

- At vedkommende er i Noreg, men ikkje foretrekk norsk.

- Eller at vedkommende ikkje er i Noreg (Captain Obvious).

 

Med geografisk lokasjon (utfrå IP) kan ein luke ut den siste, og eventuelt den første. Resten får vere opp til brukaren sjølve. Tykkjer eg då. Berre har ein språkveljar lett tilgjengeleg.

 

No veit eg ikkje kva publikum du henvender deg til, men dei fleste nytter verken proxy, eller er hackere. Så det trur eg ikkje du trenger og bekymre deg for mykje for. Og om dei gjer er det mest sannsynleg ikkje komplett idiotar - noko som tilseier at dei greier å skifte språket sjølve.

 

Det er måten eg ville løyst det på, så ikkje ta det som noko fasitsvar :)

Lenke til kommentar
Gjest Slettet+9871234

Og om dei gjer er det mest sannsynleg ikkje komplett idiotar - noko som tilseier at dei greier å skifte språket sjølve.

 

Det er måten eg ville løyst det på, så ikkje ta det som noko fasitsvar :)

Google translate. Annonyme bruker nok den tjenesten ofte.

 

Har sett (med forbehold om rekkeføge) noen gå via

 

Latin->Engelsk->Annet språk

 

for å finne riktig(e) ord etc.

Lenke til kommentar

Sette førstevalg av språk ut fra geografisk lokalisasjon er vel kanskje greit nok, ment rent ellers er det å sette språk på grunnlag av IP ganske lite hyggelig mot brukerne. Hater å få omdirigering til norske utgaver av nettsider når jeg ikke vil dit, eller på språk jeg ikke kan hvis jeg er i utlandet, til tross for at både nettleseren og operativsystemet bruker engelsk.

 

Når det kommer til implementasjon er vel ikke mod_rewrite så dumt? F.eks. skrive om http://example.com/english/ til http://example.com/index.php?lang=english og bare ta det derfra.

Lenke til kommentar

Ser at oppgaven er løst og koden er enkel.

 

Jeg trenger samme løsning på en av mine siter og lurer på om det er den beste og profesjonelle måten å gjøre det på?

Nei. Det å benytte «Accept-Language»-headeren i HTTP er den korrekte måten å gjøre det på, men parsingen her er ikke avansert nok. Ta en titt på seksjon 14.4 av RFC2616 for mer info. W3C har blant annet den liggende ute her: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

 

Her vil man se at det blant annet finnes en kvalitetsfaktor som angir hvor ønsket et gitt språk faktisk er, og man kan dermed danne en prioritert liste over språk brukeren ønsker tilbake.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...