Flags

Door Gerard Nijboer, 14 jaar geleden, 2.663x bekeken

Met dit script kan je (via de instellingen van de browser van de bezoeker) achterhalen welke voorkeurstaal de gebruiker heeft. Het script kijkt welke twee letters als eerste voorkomen in de waarde die terugkomt na de functie $_SERVER['HTTP_ACCEPT_LANGUAGE'] en zoekt vervolgens het bijbehorende plaatje op. Dit plaatje laat hij vervolgens zien en er wordt een leeg plaatje getoond wanneer de functie $_SERVER['HTTP_ACCEPT_LANGUAGE'] een slechte respons gaf.

Downloads:
Volledig bestand met afbeeldingen

Voorbeeld: http://server.monstagames.nl:81/Flags/

Gesponsorde koppelingen

PHP script bestanden

  1. flags

 

Er zijn 17 reacties op 'Flags'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Gerard Nijboer
Gerard Nijboer
14 jaar geleden
 
0 +1 -0 -1
Ik kwam er tijdens het plaatsen van het bericht achter dat het script helemaal niet checkt of het plaatje wel bestaat!
Dit kan je niet doen via de functie file_exists($filename) omdat we hier te maken hebben met een externe volledige link (http://...) en dat gaat niet met die functie.
De oplossing die voor mij lekker eenvoudig is, is het gebruiken van een array waar alle toegestane waarden in staan, even checken of ze overeenkomen en klaar is Kees.
Ik pas het script aan en maak hier melding van zodra ik dit gedaan heb.

EDIT: Het script is aangepast op de volgende wijze:
Het bestandje flags bevat een lijst met op iedere regel de bestandsnaam van de 'ondersteunde' vlaggen.
Deze wordt geladen naar de array $flags_array die vervolgens wordt getrimt om ongewenste tekens weg te halen.
Net voordat de afbeelding zal worden getoond wordt er gekeken of de taal ook een vlag heeft.
Zo niet, dan laat het script empty.gif zien.

Betere suggesties? Ik hoor het graag.
Jens V
Jens V
14 jaar geleden
 
0 +1 -0 -1
Ik ben niet van Nederland, maar krijg wel de Nederlandse vlag;)
Wat nu? :p

Mvg,
Jens
Gerard Nijboer
Gerard Nijboer
14 jaar geleden
 
0 +1 -0 -1
Dat noemen ze een Nederlandse allochtoon X-D

Als je serieus wilt weten hoe je dit kunt beïnvloeden:
Via IE7:
Extra -> Internetopties -> Talen

Via het register:
Start -> Uitvoeren -> 'regedit' -> HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International -> AcceptLanguage
Robert Deiman
Robert Deiman
14 jaar geleden
 
0 +1 -0 -1
@Jens

Hij controleerd niet waar je vandaan komt, maar welke taal je hebt ingesteld in de browser.. Niet echt een script, meer een snippet overigens.
Gerard Nijboer
Gerard Nijboer
14 jaar geleden
 
0 +1 -0 -1
Oh, daar heb je best gelijk in :-P
Maar om een script te maken dat werkelijk checkt waar je vandaan komt via ?je ip-adres? lijkt me een stuk lastiger dan op deze manier.
Pieter van Linschoten
Pieter van Linschoten
14 jaar geleden
 
0 +1 -0 -1
Dit lijkt me wel handig om te gebruiken bij mijn toekomstige script. Het is zelf al af, maar is dermate ingewikkeld dat ik nog een gebruiksaanwijzing moet schrijven. Het heeft in iedergeval betrekking op dit scriptje.
Gerard Nijboer
Gerard Nijboer
14 jaar geleden
 
0 +1 -0 -1
Dan kan er ik ten minste nog IEMAND mee gelukkig maken X-D
Marien xD
Marien xD
14 jaar geleden
 
0 +1 -0 -1
Dit is vooral handig als je enkele talen op je website heb. Zo kan je automatisch de taal op de gebruiker instellen.

Ik zelf zou het dan met een zekere vorm van failover bouwen. Dus eerst deze methode, dan de methode op ip controleren, en daarna de standaard taal laten zien. En natuurlijk altijd de optie behouden om handmatig van taal te wisselen.
Elwin - Fratsloos
Elwin - Fratsloos
14 jaar geleden
 
0 +1 -0 -1
Het probleem is dat je slechts de eerste twee tekens van $_SERVER['HTTP_ACCEPT_LANGUAGE'] gebruikt. Terwijl er veel meer informatie in staat.

Zo kan je bijvoorbeeld in België wonen en een Nederlandse browser hebben (nl, of nl-be) óf een Franse (fr of fr-be). Of Engels in Engeland (en-gb) of Amerika (en-us).

Je zou dus bijvoorbeeld de $_SERVER['HTTP_ACCEPT_LANGUAGE'] kunnen splitsen op het koppelteken. Kijken of er een tweede element is in de array en dan die gebruiken. Dat is waarschijnlijk al een veel betere gok als nu.
Hipska BE
Hipska BE
14 jaar geleden
 
0 +1 -0 -1
idd, ook ik vind een vlagje om aan te tonen welke taal gebruikt wordt verwarrend..

zet dan op zijn minst Nederlands en daarna het vlagje van het land
Michael
michael
14 jaar geleden
 
0 +1 -0 -1
Dit moeten ze ook bij google doen.... Ik ben momenteel in Spanje en ze geven altijd resultaten vanuit spanje (n)
Pim Vernooij
Pim Vernooij
14 jaar geleden
 
0 +1 -0 -1
Ik krijg 'empty.gif' te zien, terwijl in de title 'en' staat. Dit plaatje bestaat gewoon niet? Mac OSX 10.4.11, Firefox 2.0, Intel.
Gerard Nijboer
Gerard Nijboer
14 jaar geleden
 
0 +1 -0 -1
@Pim Vernooij
Hmm, dat is wel vaag, blijkbaar dus een bug in het script. :-(

@Hipska
Het vlaggetje is slechts een voorbeeld van een toepassing.
Je zou ook een begroeting in de geselecteerde taal kunnen laten zien, maar daar ben ik niet verder op ingegaan.
De taal wordt nu opgeslagen in een variable, aan jou om de code af te maken zodat hij aan jouw eisen voldoet.

@Elwin
Je hebt inderdaad gelijk, maar omdat ik vlaggetjes had die uit twee tekens bestonden, heb ik het gemak genomen slechts twee tekens van $_SERVER['HTTP_ACCEPT_LANGUAGE'] te gebruiken.
Maar je zou inderdaad er verder op in kunnen gaan door te kijken welke taal de gebruiker als voorkeur heeft, en als die niet bestaat, doorgaan naar de volgende voorkeurstaal of de standaard taal.

@Marien
Weet jij (of iemand anders) hoe je via het IP adres het land kunt achterhalen? Heb je daar iets als WHOIS voor nodig ofzo?
Misschien ken je ook wel het systeem dat je zelfs de woonplaats van mensen kunt achterhalen, dat heb ik wel eens gezien op een website. Dat is pas gaaf!
Hipska BE
Hipska BE
14 jaar geleden
 
0 +1 -0 -1
@gerard: maak dan dat het script in een functie komt, en dat hij de taal returned, de verdere verwerking ervan is dan aan de scripter (bv een vlaggetje)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$lang
= get_lang();

//manier 1
echo $lang; //nl

//manier 2

echo $lang['taal']; // nl
echo $lang['land']; // be

?>
Gerard Nijboer
Gerard Nijboer
14 jaar geleden
 
0 +1 -0 -1
Dat is wel een goed idee, alleen moet ik zelf nog wat meer oefenen met het maken van functies, daar heb ik nog niet genoeg ervaring mee.
Maar een goed idee voor de toekomst ;-)
Wouter K
Wouter K
14 jaar geleden
 
0 +1 -0 -1
Jah ik dacht inderdaad ook al :) Ik nederlander :s :D


Njah , snippet gewoon een kleine mini tool !

Maar het werkt ;)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Koen B
Koen B
14 jaar geleden
 
0 +1 -0 -1
ik heb er een script die kijkt naar het ip adres in welk land bent, hij kijkt ook nog in welke stad/dorp je woont, maar ik heb de gratis database dus klopt dit bijna nooit.

Hij was te vinden op deze site http://www.ip2country.com maar ze zijner mee gestopt, ik post hem wel een andere keer, want ik heb het nu druk

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. flags

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.