Daar wordt ook gemeld dat accept-language een last line of defense is, waar aparte url's voor verschillende talen de voorkeur hebben. Immers; ik kan prima in de VS zitten maar Nederlands of desnoods Frans willen zien. Dat is niet IP gebonden, dat is gebruiker gebonden. Zelfde geldt voor accept-language. Veel gebruikers weten niet dat ze dit kunnen aanpassen, laat staan hoe.
Implementatie van ip2geo gaat mij boven de pet.
Vraag mij ook af dit voor het welkoms bericht van die paar talen zinvol is.
Of alles maar gewoon in het Engels doen??
Wat jij wilt, als jij het leuk vindt om iedereen in alle talen te begroeten. Dan doe je dat toch ;-)
Flickr doet dat ook. Maar ik was even in de veronderstelling dat je alles van je site wou vertalen.
Voor een enkel stukje vertaling voldoet deze implementatie van de array wel.
accept-language is in zo'n geval ook best bruikbaar, zolang je dit op een correcte manier doet. Je zou dit bijvoorbeeld kunnen doen met Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']). Wel even een default aangeven voor als HTTP_ACCEPT_LANGUAGE niet wordt meegestuurd, zoals vaker voorkomt achter strenge firewalls/proxy servers.
Schrijf eerst je code eens zoals hij hoort te zijn. Dus niet $_SESSION[language] maar $_SESSION['language']. Hoe vaak is dit ondertussen al gezegd eigenlijk?
Daarna kun je gaan kijken naar de juiste charsets. Hier ben je van afhankelijk.
Schrijf eerst je code eens zoals hij hoort te zijn. Dus niet $_SESSION[language] maar $_SESSION['language']. Hoe vaak is dit ondertussen al gezegd eigenlijk?
Daarna kun je gaan kijken naar de juiste charsets. Hier ben je van afhankelijk.
Nu nog één probleem, ik wil controleren of een waarde in de array voorkomt andere moet een default ingesteld worden.
De array's
$_SESSION['language'] = "we";
date_default_timezone_set(Europe/Amsterdam');
$_SESSION['client-UNIX'] = time();
$_greetings = array( "nl" => "Hallo #USER# Welkom, <BR /> uw laatste bezoek was op #DATE# om #TIME#",
"de" => "Hallo #USER# Wilkommen,<br/>Ihr letzter Besuch war auf #DATE# at #TIME#",
"en" => "Hello #USER# Welcome,<br/>Your last visit was on #DATE# at #TIME#");
Nu wil ik dus controleren of $_SESSION['language'] in de array voorkomt met de in_array functie
if (in_array($_SESSION['language'], $_greetings)) {
echo "this array contains".$_SESSION['language'];
} else {
echo "this array NOT contains ".$_SESSION['language'];
$_SESSION['language'] = 'en'; // default language
}
Dit moet je ook gewoon met isset of array_key_exists controleren. in_array() kijkt naar de waarde, niet naar de key. Vul je ondertussen de variabele al op een correcte manier?