Taal van de PC; PHP variable

Status
Niet open voor verdere reacties.

mysql

Gebruiker
Lid geworden
28 jan 2012
Berichten
108
Hoi allemaal,

Ik ben met een website bezig met verschillende talen.
Ik wil dus als een ENGELSMAN naar mijn website gaat dat hij wordt doorgestuurd naar index.php?hl=en
Bij een nederlander naar index.php?hl=nl en bij een duitser index.php?hl=de en etc.

Natuurlijk ben ik ook van plan om nog meer talen er in te zetten.
Ik wil dus dat het automatisch gebeurt.

Ik weet dat er de variable $_SERVER["HTTP_ACCEPT_LANGUAGE"] ook iets doet, maar daar staat meer dan alleen nl, en, de, etc.

Hoe moet ik dit doen?

Alvast heeeel erg bedankt

Mysql
 
Wat is de vraag? hoe kan ik het doen zonder "http-accept-language"? of "hoe interpreteer ik "http-accept-language" zodat ik het beste resultaat krijg?
 
Ik wil dat het script kijkt naar de taal van de PC / BROWSER (wat het handigst is).
Als het een nederlandse pc / browser is, geeft hij $PCLANG de waarde nl.
Zo dus.
PHP:
<?php
$PCLANG = "nl";
?>

Maar stel dat ik CHINEES nergens heb ingevoerd en het is een chinees-talige pc / browser moet hij gewoon dit doen:
PHP:
<?php
$PCLANG = "cn";
?>

Mysql
 
Dan kun je inderdaad beste http_accept_language gebruiken, rekening houdend met de qualifier.

Gejat van een voorbeeld:

PHP:
function getAcceptedLanguage() {
   $languages = split(",", $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
   $lang_q = Array();
   foreach( $languages as $aLang ) {
       $lang_array = split(";q=", trim( $aLang ) );
       $lang = trim( $lang_array[0] );
       if( !isset( $lang_array[1] ) )
           $q = 1;
       else
           $q = trim($lang_array[1]);
       $lang_q["$lang"] = (float)$q;
   }
   arsort($lang_q);
   //extra code for making the languages key indexed
   $i = 0;
   $lang_index = Array();
   foreach($lang_q as $lang => $q) {
       $lang_index[$i] = $lang; //add to a new array the index key/language
       $i++;
   }

   return $lang_index;
}
 
Hoe werkt het precies?

Ik heb het in het bestand langtest.php gezet en opgeroepen via de browser maar ik zie niks.
 
PHP:
$myarray = getacceptedlanguage();
print_r ($myarray);

De functie an sich laat niets zien. De functie maakt een array van opgegeven talen en geeft deze gesorteerd terug op preferentie van taal. Talen met dezelfde preferentie komen op volgorde van aanmelding in de header. In de praktijk zul je door deze talen lopen en als er een taal voorkomt die je ondersteund deze als taal zetten.

Eventueel kun je nog wat meer logica inbouwen om een betere keuze te maken, maar hier kun je mee beginnen.
 
Ik wil dus als een ENGELSMAN naar mijn website gaat dat hij wordt doorgestuurd naar index.php?hl=en

En hoe weet je dat je met een engelsman te maken hebt? :)

Je kunt wel naar de accept-language kijken maar dat is de taal van de browser, het OS, niet van de bezoeker. Niemand neemt namelijk de moeite om zijn voorkeurstalen in te stellen (wie weet uberhaupt dat het kan?)
Over het algemeen kun je beter naar het land van herkomst kijken en dan aan de bezoeker vragen welke taal hij wil zien. Je moet natuurlijk sowieso altijd de bezoeker de keuze geven welke taal hij wil gebruiken want je kunt op geen enkele manier in het hoofd van de bezoeker kijken om te zien welke taal hij wil :)
 
Het laatste ben ik helemaal mee eens. Maar persoonlijk vind ik browser language erg fijn als uitgangspunt. Ik wil het liefst zoveel mogelijk sites in het Engels. Ik heb er persoonlijk een hekel aan al die (slecht) gelocaliseerde services overal. Mijn ervaring is dat Fransen, duitsers en italianen bijvoorbeeld bijna altijd ook de juiste gelokaliseerde browser taal hebben. Nu zit ik meer in de bedrijfssfeer dus in deze wel wat eenvoudiger, maar er zijn meerdere oplossingen en ze zijn naast elkaar te gebruiken.
 
Het script werkt zoals ik wilde.

Dat met het kiezen van talen had ik er al ingebouwd.

De website kijkt naar de taal van de browser en als je dan de site toch in een andere site wil bekijken, kan je gewoon de desbetreffende taal selecteren.

Mysql
 
En hoe weet je dat je met een engelsman te maken hebt? :)

Over het algemeen kun je beter naar het land van herkomst kijken

Dit lijkt mij niet de beste optie.

Wanneer iemand vanuit Luxemburg inlogt, ga je dan in het Duits, Frans of Nederlands ?
Wanneer iemand vanuit Zwitserland inlogt, ga je dan in het Duits, Frans of Italiaans ?

Wanneer ik in Turkye op vakantie ben, daar vandaan inlog, dan kan ik weinig met een site die ik in het Turks te zien krijg.

Ik zou dus zeker gaan voor browsertaal of taal van het besturingssysteem.
 
Dit lijkt mij niet de beste optie.

Dat is het ook niet, maar de overgrote meerderheid van de inwoners van een land spreken de taal van dat land.
En ja dat kunnen meerdere talen zijn en dan moet je alsnog doen wat je toch al moest doen: aan de bezoeker vragen wat hij wil.

Ik zou dus zeker gaan voor browsertaal of taal van het besturingssysteem.

Dat werkt nog slechter dan kijken naar het land, want echt helemaal niemand stelt de taal van zijn OS of browser in. De PC werd ooit zo in een bepaalde taal geleverd en dat wordt nooit meer aangepast.
Sterker; veel mensen kiezen bewust voor Engels omdat ze dan handleidingen kunnen volgen die ook de Engelse versie gebruikten.

Dus nee, geen enkele automatische manier kan in het hoofd van de bezoeker kijken om te zien welke taal hij spreekt, laat staan
om te zien welke taal hij wil gebruiken (want dat ik Nederlands spreek betekent niet dat technische documenten in een slechte googlevertaling wil lezen)
 
plaats een volgende lijn in je code

PHP:
print "<pre>".print_r($_GET,true)."</pre>";
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan