Bezoekers doorsturen o.b.v. taal

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • eerdepeer
  • Registratie: November 2001
  • Laatst online: 25-09 11:33
Het is een veelgestelde vraag. De topics die ik kan vinden over het filteren van bezoekers o.b.v. taal (Nederlands of overige is voor mij voldoende) zijn ook al vrij oud (ouder dan 2 jaar).

Ook op google vind ik veel sh*t, maar geen duidelijk handleiding over deze scheiding. Is er geen standaard handleiding die actueel is over een scheiding o.b.v. taal?

Wat ik nu heb gevonden is:
- achterhalen welke taal in de browser is ingesteld. Nadeel is dat er Engelse browsers worden gebruikt door Nederlanders. topiclink en topiclink 2
- scheiding op IP range. Klopt dit anno 2008 nog steeds? Er wordt ook beweerd dat de methode soms een wachttijd geeft van langer dan 30 sec. topiclink en topiclink 2 en vorige topiclink
- IP scheiding o.b.v. commerciële databases is geen budget voor. link

Het moet volgens mij niet zo'n probleem zijn om dit te realiseren. Hoe doet Google dit bijv. met www.google.com? :?

Acties:
  • 0 Henk 'm!

  • bomberboy
  • Registratie: Mei 2007
  • Laatst online: 14:26

bomberboy

BOEM!

Kijk eens naar de HTTP_ACCEPT_LANGUAGE-header die je browser al dan niet meestuurt. Dat lijkt me de netste oplossing want dat kan ingesteld worden door de eindgebruiker. Persoonlijk ben ik er niet zo'n fan van als websites iets anders willen gebruiken. (Als Belg krijg je immers nogal eens vaak standaard een franstalige versie van een pagina wat ik doorgaans niet wil)

(is dit niet eerder iets voor het web-dev forum?)

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

De gratis GeoIP van MaxMind werkt alleszins naar behoren hiervoor, moet je alleen wel even zelf uitsplitsen welke talen je bij welke landen vind horen (Belgie is problematisch bijv. ;) )

De HTTP header is overigens Accept-Language en ziet er als volgt uit:
code:
1
Accept-Language: en-us,en;q=0.5

[ Voor 24% gewijzigd door curry684 op 23-10-2008 11:18 ]

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Ik gebruik op m'n site GeoIP van MaxMind om te achterhalen uit welk land de bezoeker komt, zodat zijn land staat voorgeselecteerd in het bestelformulier. Wat ook handig kan zijn is om Zend Framework te gebruiken (indien je in PHP werkt), die heeft een handige klasse Zend_Locale om dat soort dingen vanzelf te bepalen.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Met HuHu :) Zend_Locale gaat zelf kijken naar je browsersettings voor taal. Dit zou je altijd kunnen gebruiken in combinatie met MaxMind zodat je een extra controle doet. Zoals curry al aangeeft: bezoekers uit belgie kun je dan adhv. Zend_Locale de nederlandse of franse versie laten weergeven.

Het leuke aan Zend_Locale is dat je dit makkelijk kunt gebruiken met Zend_Date (daar is t een framework voor natuurlijk) voor het correct weergeven van data en tijden in de specifieke taal. Daar houdt t niet bij op, er zitten ook onderdelen voor correcte weergeven van bedragen bijv. en namen van dagen, maanden etc.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Als het puur alleen om de taal gaat zou ik gewoon de http header accept-language gebruiken. De gebruiker kan er dan zelf voor kiezen welke taal hij wil hebben.
Niet iedereen die vanuit (b.v.) nederland internet is ook nederlandstalig. Als gebruikers hun browser instellingen verkeerd hebben staan dan moeten ze zelf maar handmatig de juiste taal site kiezen door op het juiste vlaggetje te klikken bovenin de site.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom gaan we meteen van PHP uit? :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15:19

Janoz

Moderator Devschuur®

!litemod

Imho is er maar 1 juiste oplossing:

Is er een parameter meegegeven (lang=nl oid), kies dan die taal en zet een cookie
Is er een cookie gezet, neem dan die waarde over
Is er geen cookie, neem dan de http_accept_language.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 15-07 15:35

leuk_he

1. Controleer de kabel!

Janoz schreef op donderdag 23 oktober 2008 @ 14:05:
Imho is er maar 1 juiste oplossing:

Is er een parameter meegegeven (lang=nl oid), kies dan die taal en zet een cookie
Is er een cookie gezet, neem dan die waarde over
Is er geen cookie, neem dan de http_accept_language.
Technisch heb je gelijk, maar je zult dan echt mensen krijgen die het gaan testen en melden "google weet wel mijn taal, en xxxx niet" en die hebben geen idee waar ze dat in de browseer moeten instellen (als ze al een idee hebben wat een browser is....). Ip nummer meenemen is enige alternatief. uiteraard wel een local ip database location oplossing, anders krijg je idd vertraging.

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15:19

Janoz

Moderator Devschuur®

!litemod

In 99% van de gevallen staat die accept language gewoon goed. Sowieso wordt het niet gebaseerd op de taal van je OS, maar op je localization instellingen. Die worden bij elke installatie gevraagd. Ik durf wel te stellen dat het bij al die gebruikers die niet eens weten wat een browser is, gewoon goed staat.

Om dan voor die minuscule groep een ip filter toe te gaan passen en daardoor de standaard geldende selectie methode volledig buiten spel te zetten lijkt me niet de juiste oplossing. Een indier die met zijn laptop hier in Nederland online komt wil je geen Nederlands voorschotelen, puur omdat hij via xs4all online komt? Of alle Aegon medewerkers een duitse/britse pagina voorschotelen omdat daar toevallig hun proxy staat?

(Of had jij al wel een oplossing bedacht hoe je kunt bepalen dat de meegegeven accept_language eigenlijk helemaal niet een geaccepteerde taal van de gebruiker is?)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Janoz schreef op donderdag 23 oktober 2008 @ 14:05:
Imho is er maar 1 juiste oplossing:

Is er een parameter meegegeven (lang=nl oid), kies dan die taal en zet een cookie
Is er een cookie gezet, neem dan die waarde over
Is er geen cookie, neem dan de http_accept_language.
En is er geen http_accept_language, dan GeoIP.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • tc982
  • Registratie: Oktober 2003
  • Laatst online: 08:54
(jarig!)
eerdepeer schreef op donderdag 23 oktober 2008 @ 10:58:
Het moet volgens mij niet zo'n probleem zijn om dit te realiseren. Hoe doet Google dit bijv. met www.google.com? :?
om jouw zelf even te quoten om je eigen vraag te beantwoorden :
IP scheiding o.b.v. commerciële databases is geen budget voor
Bij google wel denk ik

Computers make very fast, very accurate mistakes.


Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 25-09 11:14
Als ik mijn taal op Duits zet en naar Google.com ga, is Google Duits. Ik gok dat zij het dus ook via accept-language doen :)

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

  • eerdepeer
  • Registratie: November 2001
  • Laatst online: 25-09 11:33
Als ik het zo hoor is Accept-Language dus nog steeds / wel een goede methode om het gros mee te filteren. Dat scheelt ook weer dat ik niet hoef te programmeren in php. (html bevalt mij prima :D)

Wel apart om te zien dat er in al die jaren nog geen 'standaard methode' is ontwikkeld voor zoiets.

Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 15-07 15:35

leuk_he

1. Controleer de kabel!

Als ik naar google.com ga wodt ik doorgeleid naar google.be (daar staat de bedrijfproxy) als ik mijn taal verander in firefox (duits voorop) EN ik verwijder de coockies van google krijg ik idd duits.

EN er staat een heel zichtbare optie op de pagina:

Google.be offered in: Nederlands Français Deutsch


(dus ze spreken geen klingon of leet in google.be... jammer) ;)

De standaard methode dat je de taal kunt instellen in de browser bestaat al heel lang. Maar wellciht stond hij tijdn lang verkeerd per default ingesteld. ("je kunt het toch veranderen, in opties -> content -> langugaes, nog 3 knoppen verder)"

[ Voor 24% gewijzigd door leuk_he op 23-10-2008 17:08 ]

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:23
Het is misschien ook een subjectieve vraag wat het beste is. Ik vind het als gebruiker strontvervelend dat het onmogelijk is om Google.com te gebruiken zonder cookies in te schakelen, ook al gebruik ik een Engelstalige browser op een Engelstalig platform met Engels als browsertaal (die dus ook wordt meegestuurd). Zelfs met cookies wordt ik eerst doorgestuurd naar Google.nl en moet ik zelf terug naar Google.com klikken. (En ja, Google.com geeft heel andere resultaten dan Google.nl)

Met andere woorden: de aggressieve aanpak van Google die alle gebruikersvoorkeuren negeert vind niet iedereen fijn. Persoonlijk zou ik gewoon de gebruiker laten kiezen, a.d.v. een vlaggetje ergens rechtsboven je pagina of iets dergelijks. Je zou eventueel de Accept-Language header kunnen controleren voor een default, maar ik zou het een slecht idee vinden om een deel van de content simpelweg ontoegankelijk te maken voor een groep gebruikers op basis van een ongefundeerde gok over de taalvoorkeur van de gebruiker.

[ Voor 5% gewijzigd door Soultaker op 23-10-2008 17:20 ]


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:48

Dido

heforshe

Ik vind het verwarrende in dit soort discussies altijd dat er zo makkelijk wordt gedacht dat een taal en een land hetzelfde zijn. Het feit alleen als dat je overweegt om met IP-ranges te werken terwijl je claimt met een taal te willen werken is wat mij betreft al fout.

Ik ben Nederlander, ik internet vanuit Nederland, maar ik wil in veel gevallen graag de Engelse versie van een site bekijken (en zeker niet, zoals een slimme Yank verzonnen had, de Duitse versie |:( )
Ik stel niet voor de kat z'n viool overal taalvoorkeuren in om vervolgens te maken te krijgen met webdevvers die vinden dat ik gezien mijn locatie wel Nederlands zal willen hebben.

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 24-09 10:00
ZanderZ schreef op donderdag 23 oktober 2008 @ 16:31:
Als ik mijn taal op Duits zet en naar Google.com ga, is Google Duits. Ik gok dat zij het dus ook via accept-language doen :)
En als ik via VPN vanuit Duitsland naar Google ga dan issie Duits...

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15:19

Janoz

Moderator Devschuur®

!litemod

eerdepeer schreef op donderdag 23 oktober 2008 @ 16:43:
Als ik het zo hoor is Accept-Language dus nog steeds / wel een goede methode om het gros mee te filteren. Dat scheelt ook weer dat ik niet hoef te programmeren in php. (html bevalt mij prima :D)

Wel apart om te zien dat er in al die jaren nog geen 'standaard methode' is ontwikkeld voor zoiets.
De http_accept_language is de standaard.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

eerdepeer schreef op donderdag 23 oktober 2008 @ 16:43:
Als ik het zo hoor is Accept-Language dus nog steeds / wel een goede methode om het gros mee te filteren. Dat scheelt ook weer dat ik niet hoef te programmeren in php. (html bevalt mij prima :D)

Wel apart om te zien dat er in al die jaren nog geen 'standaard methode' is ontwikkeld voor zoiets.
HTTP 1.1 is tenslotte pas een 'standaard' sinds januari 1997.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Janoz schreef op donderdag 23 oktober 2008 @ 14:05:
Imho is er maar 1 juiste oplossing:

Is er een parameter meegegeven (lang=nl oid), kies dan die taal en zet een cookie
Is er een cookie gezet, neem dan die waarde over
Is er geen cookie, neem dan de http_accept_language.
Dit is afhankelijk van het doel. Als het om een website gaat met algemene informatie, en niet om een applicatie met gebruiker-specifieke informatie, kun je beter het volgende doen:
  • Is er een taal opgegeven in de request URI? Kies dan die taal.
  • Is er geen taal opgegeven? Redirect dan naar een URI in de taal die iemand waarschijnlijk kan lezen.
Zo houd je zoekmachines beter de vriend, en sluit het gedrag van je website beter aan bij wat de bezoeker verwacht. Mensen die via een zoekmachine op een bepaalde Duitse pagina komen met bepaalde sleutelwoorden willen de Duitse pagina zien, niet een Nederlands equivalent.

Ik zou dit dus volkomen laten afhangen van het soort informatie dat je biedt.

Acties:
  • 0 Henk 'm!

  • Dacide
  • Registratie: Oktober 2004
  • Laatst online: 17-10-2024
Het is mij een beetje onduidelijk nog...

Ik begrijp inmiddels dat een browser bepaalde data meestuurd over de header...
zo is er ook een bepaalde parameter die aangeeft wat de "language instelling" vd browser is. (http_accept_language)

Maar hoe vang ik het nu op? Moet ik nu perse PHP gebruiken? Of kan ik ook op basis van bv een .htacces file deze header opvangen en dan verder redirecten (303 redirect ofzo)

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22:13

MueR

Admin Tweakers Discord

is niet lief

Allebei is mogelijk.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15:19

Janoz

Moderator Devschuur®

!litemod

Dacide schreef op dinsdag 11 november 2008 @ 15:04:
Het is mij een beetje onduidelijk nog...

Ik begrijp inmiddels dat een browser bepaalde data meestuurd over de header...
De browser stuurt geen informatie over de header mee. Het request dat een browser naar de server stuurt bevat een header met allemaal informatie over de client.
zo is er ook een bepaalde parameter die aangeeft wat de "language instelling" vd browser is. (http_accept_language)
Dat klopt
Maar hoe vang ik het nu op? Moet ik nu perse PHP gebruiken? Of kan ik ook op basis van bv een .htacces file deze header opvangen en dan verder redirecten (303 redirect ofzo)
Die header is een standaard onderdeel van het httprotocol . Het zou me dan ook niets verbazen wanneer je met .htaccess (2xs) hier vanalles mee kunt doen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Het kan in htaccess maar flexibiliteit is beperkt omdat je niet 'intelligent' kunt parsen. Iets als dit werkt overigens perfect:
code:
1
2
RewriteCond %{HTTP:Accept-Language} ^.*de.*$ [NC]
RewriteRule ^(index\.php)?$ http://www.domain.com/de/ [L,R=301]

Maar hiermee val je voor complexere specificaties als "ik wil en-US als de-DE het niet doet" omdat je in rewrites niet de weighting en priorities mee kunt nemen. In beginsel wil je dit dus voor enige mate van complexiteit in je PHP-code uitvoeren.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Dacide
  • Registratie: Oktober 2004
  • Laatst online: 17-10-2024
Ok, dus als ik het goed begrijp...
HTTP_ACCEPT_LANGUAGE kan ik opvangen middels .htaccess echter dan beperk ik me qua functionaliteit.

De enige functies die ik nodig heb zijn:
als taal = nederlands --> index_nl.html
als taal = duits --> index_de.html
als taal = engels ---> index_en.html

dat gaat prima met htaccess only begrijp ik..

MAar idd, stel dat iemand een andere taal dan een van deze drie heeft... Kan ik die niet gewoon te allen tijde laten redirecten naar index_en?

is dat het stukje flexiiliteit die je dan mist? (uit de post hierboven)
Pagina: 1