Mobiele Host
Voor mijn site dacht ik dat het leuk zou zijn om zowel engels als nederlands te ondersteunen. Natuurlijk moet de site dan automatisch de juiste taal selecteren.
Dus eventjes
En daarmee aan de slag. Lekker makkelijk, en het lijkt nog te werken ook.
Wat is nu het probleem?
Op mijn mobiele telefoon gaat hij naar het engels, dus ik kijk wat gethostbyaddr terug geeft op het IP van min mobiel...
---iets---.dsl.sl-laajakaista.fi
Waarom wijst mijn mobiel naar Finland... en hoe kan ik erachter komen uit welk land mijn mobiel (of pc) nu écht komt?
Dus eventjes
Code (php)
1
2
3
4
2
3
4
<?php
$extensie = end(explode(".",gethostbyaddr($_SERVER['REMOTE_ADDR'])));
$taal = in_array($extensie, array("nl", "be")) ? "nl" : "en";
?>
$extensie = end(explode(".",gethostbyaddr($_SERVER['REMOTE_ADDR'])));
$taal = in_array($extensie, array("nl", "be")) ? "nl" : "en";
?>
En daarmee aan de slag. Lekker makkelijk, en het lijkt nog te werken ook.
Wat is nu het probleem?
Op mijn mobiele telefoon gaat hij naar het engels, dus ik kijk wat gethostbyaddr terug geeft op het IP van min mobiel...
---iets---.dsl.sl-laajakaista.fi
Waarom wijst mijn mobiel naar Finland... en hoe kan ik erachter komen uit welk land mijn mobiel (of pc) nu écht komt?
Waarom kijk je niet naar de taal van de browser?
taal van de browser: $_SERVER["HTTP_ACCEPT_LANGUAGE"]
Omdat veel browsers worden geïnstalleerd onder de Engelse taal.
je kan dit er mischien als extra bij hebben
je maakt een knopje als mensen erop klikken maakt hij een cookie aan en dat ze dan op de nederlandse site komen
je maakt een knopje als mensen erop klikken maakt hij een cookie aan en dat ze dan op de nederlandse site komen
Johan Dam op 24/12/2010 10:44:49:
Dit is een aanname die niet juist is. 80% van internettend nederland werkt met IE en is netjes in NL geinstalleerd. Firefox installeert op een WIN-NL ook net automatisch in nederlands en het lijkt me dat dat voor andere landen analoog werkt. De overige browsers ken ik niet maar dat is sowieso een kleiner marktaandeel. De mobiele browsers zijn nog wel een moeilijk punt, daarvan zou ik aannemen: is je doelgroep NL dan default NL anders default UK taal.Omdat veel browsers worden geïnstalleerd onder de Engelse taal.
Gewijzigd op 24/12/2010 11:20:52 door John D
John D op 24/12/2010 11:19:19:
Johan Dam op 24/12/2010 10:44:49:
Dit is een aanname die niet juist is. 80% van internettend nederland werkt met IE en is netjes in NL geinstalleerd. Firefox installeert op een WIN-NL ook net automatisch in nederlands en het lijkt me dat dat voor andere landen analoog werkt. De overige browsers ken ik niet maar dat is sowieso een kleiner marktaandeel. De mobiele browsers zijn nog wel een moeilijk punt, daarvan zou ik aannemen: is je doelgroep NL dan default NL anders default UK taal.Omdat veel browsers worden geïnstalleerd onder de Engelse taal.
Dat hangt van de doelgroep af. Van de doelgroep die ik wil bereiken zal een minderheid IE gebruiken.
Ook is het niet belangrijk hoe groot de marktaandeel van een browser is. Ten eerste kunnen die makkelijk veranderen, ten tweede jaag je bezoekers weg als je alleen rekening houd met bepaalde browsers.
Ik denk inderdaad dat beide checks een goede oplossing zal zijn. Eerst naar de HTTP_ACCEPT_LANGUAGE kijken, als die niet op Nederlands staat met gethostbyaddr nog eens kijken.
Voor de huidige situatie lijkt mij dit erg effectief en efficient, uitbreiding naar een paar andere talen zal dan ook nog mogelijk zijn.
Als het een .nl domein is gewoon Nederlandse taal tonen.. Is de domein .de? Duitse taal laten zien. Is de domein .fr? Franse taal laten zien. En dan met vlaggetjes of dergelijke gaan werken.
En wat is de je doelgroep?? En waar gaat de website over?
En wat is de je doelgroep?? En waar gaat de website over?
@Oetzie
Het is een .com domein, er is geen andere. Dus dat zal niet werken. Bovendien is het dan nog steeds de vraag naar welk domein een gebruiker doorgestuurd moet worden wanneer het de .net, .org, .com of wat dan ook bezoekt. (Dit kan wenselijk zijn afhangend van server-locatie per domein)
Doelgroep en onderwerp van de websites maken niet uit. Het is sowieso belangrijk om goeie default taal instellingen te hebben, je moet het gebruikers zo makkelijk mogelijk maken.
Ik heb het nu zo gedaan.
even 2 puntjes.
1. Dit script is geschikt voor 2 talige ondersteuning. Niet meer. (Hier heb ik (nog) geen behoefte aan)
2. Ik weet dat België 3-talig is en de aanname dat het maar Nederlands moet zijn niet perse juist is. Dit staat nog ter discussie
Het is een .com domein, er is geen andere. Dus dat zal niet werken. Bovendien is het dan nog steeds de vraag naar welk domein een gebruiker doorgestuurd moet worden wanneer het de .net, .org, .com of wat dan ook bezoekt. (Dit kan wenselijk zijn afhangend van server-locatie per domein)
Doelgroep en onderwerp van de websites maken niet uit. Het is sowieso belangrijk om goeie default taal instellingen te hebben, je moet het gebruikers zo makkelijk mogelijk maken.
Ik heb het nu zo gedaan.
even 2 puntjes.
1. Dit script is geschikt voor 2 talige ondersteuning. Niet meer. (Hier heb ik (nog) geen behoefte aan)
2. Ik weet dat België 3-talig is en de aanname dat het maar Nederlands moet zijn niet perse juist is. Dit staat nog ter discussie
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Haal de taal op als deze niet in de sessie staat.
if(empty($_SESSION['taal'])){
$nederlands = array("nl", "be", "lu");
// Als de browser NIET meegeeft dat het in het Nederlands is, dan bepalen we de taal aan de hand van de hostnaam dmv het IP.
if(strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], "nl-NL") === false){
// Als de extensie van de host in de array $nederlands voorkomt, dan word de taal nederlands, anders is het engels.
$taal = in_array(end(explode(".", gethostbyaddr($_SERVER['REMOTE_ADDR']))), $nederlands) ? "nl" : "en";
}
// Is de browser in het Nederlands, dan is het nederlands.
else
$taal = "nl";
$_SESSION['taal'] = $taal;
}
else
$taal = $_SESSION['taal'];
if(empty($_SESSION['taal'])){
$nederlands = array("nl", "be", "lu");
// Als de browser NIET meegeeft dat het in het Nederlands is, dan bepalen we de taal aan de hand van de hostnaam dmv het IP.
if(strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], "nl-NL") === false){
// Als de extensie van de host in de array $nederlands voorkomt, dan word de taal nederlands, anders is het engels.
$taal = in_array(end(explode(".", gethostbyaddr($_SERVER['REMOTE_ADDR']))), $nederlands) ? "nl" : "en";
}
// Is de browser in het Nederlands, dan is het nederlands.
else
$taal = "nl";
$_SESSION['taal'] = $taal;
}
else
$taal = $_SESSION['taal'];




