[PHP/Smarty] Automatic Multi Language Selection

Pagina: 1
Acties:
  • 429 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een project in mijn handen gedrukt gekregen van "kun jij er even naar kijken?!"

Het gaat om het volgende:

Het is een internationale website geschreven in php met het template systeem Smarty.
Alles is gebouwd door een Roemeen alleen deze persoon is ineens gestopt met de ondersteuning en ontwikkeling van de website.

Nu komt 't;

Op de website is het mogelijk om de taal te selecteren doormiddel van een knop boven in de header ( met de vlag van 't land).Wanneer je op de knop klikt wordt je door gestuurd naar de juiste taal. De taal wordt uitgelezen uit de MySQL database met alle content van de website. Welke taal je hebt aangeklikt wordt op geslagen in een Sessie/Cookie dus elke pagina blijft ook de gelesecteerde taal.

Het moet nu zo worden dat wanneer iemand uit Duitsland of Denemarken op de website terecht komt direct de juiste taal voor zijn neus krijgt.

Nu heb ik al in de config.php zitten kijken en ik zie dat DEFAULT_LANGUAGE_ID op 2 staat, dit betekend ongeacht waaar je vandaan komt de taal op engels wordt gezet.

Eigelijk zou ik de DEFAULT_LANGUAGE_ID variabel willen maken, zodat er gekeken wordt naar de taal van de browser of naar het IP adres. Dat dan weer bepaald kan worden welke taal de bezoeker moet gaan gebruiken.

Hoe zou ik dit aan kunnen pakken en wat zou het beste kunnen zijn, selecteren op basis van IP of op basis van Browser.

Al vast bedankt voor de reacties.

Greetz

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 23 november 2007 @ 16:17:
selecteren op basis van IP of op basis van Browser.
Op basis van IP is onbetrouwbaar en daarbij geeft de browser niet voor niets de accept language mee; dat is (in principe) iets dat de gebruiker kan instellen en daarmee dus z'n eigen voorkeur voor een taal al in de browser kan vastleggen.

Daarbij: wat doe je dan met landen als België en Zwitserland als je een IP uit die ranges tegen komt? Pak je dan "Nederlands/Vlaams" of Frans voor België bijvoorbeeld?

[ Voor 6% gewijzigd door RobIII op 23-11-2007 16:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 19-09 13:37
Ik doe het zelf op basis van browser, omdat dat iets is wat de bezoeker zélf instelt (of in kan stellen). Als ik in mijn browser instel dat ik graag pagina's in het Duits wil zien terwijl mijn IP Nederlands is, dan wil ik graag dat een pagina die ik bezoek en de mogelijkheid bied, zich daar ook aan houdt :)

edit:
Wat RobIII in de tussentijd dus ook al zei :P

[ Voor 8% gewijzigd door Spinal op 23-11-2007 16:32 ]

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ZanderZ schreef op vrijdag 23 november 2007 @ 16:31:
Ik doe het zelf op basis van browser, omdat dat iets is wat de bezoeker zélf instelt (of in kan stellen). Als ik in mijn browser instel dat ik graag pagina's in het Duits wil zien terwijl mijn IP Nederlands is, dan wil ik graag dat een pagina die ik bezoek en de mogelijkheid bied, zich daar ook aan houdt :)
Er is afgesproken indien de taal niet beschikbaar is op de website de taal automatisch op Engels moet komen te staan.

Maar hoezo is het op basis van IP onbetrouwbaar? Snap het al niet goed gelezen.

Maar hou zou ik nu nog de DEFAULT_LANGUAGE_ID variable kunnen maken?

[ Voor 8% gewijzigd door Verwijderd op 23-11-2007 16:43 ]


Acties:
  • 0 Henk 'm!

  • BlackIce
  • Registratie: Oktober 2003
  • Laatst online: 02-07 15:18
Verwijderd schreef op vrijdag 23 november 2007 @ 16:41:
[...]


Er is afgesproken indien de taal niet beschikbaar is op de website de taal automatisch op Engels moet komen te staan.

Maar hoezo is het op basis van IP onbetrouwbaar? Snap het al niet goed gelezen.

Maar hou zou ik nu nog de DEFAULT_LANGUAGE_ID variable kunnen maken?
Simpel, hierboven word al gezegd dat de browser meegeeft welke taal is ingesteld.
Check gewoon of die taal beschikbaar is. Zo niet, dan gebruik je die DEFAULT_LANGUAGE_ID

[ Voor 5% gewijzigd door BlackIce op 23-11-2007 23:08 ]


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Toevallig op het moment ook aan een internationale site aan het werken, wat wij gebruiken is mod_geoip voor apache om aan de hand van het ip een default voorkeur te krijgen. Lijkt wel vrij aardig te werken eigenlijk :)

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 17-09 16:35

djiwie

Wie?

Maar als je aan de hand van een ip-adres de taal probeert de determineren krijg je dus problemen met landen als België en Zwitserland (want: welke van de drie?) of met bezoekers die geen woord Nederlands spreken maar toevallig via een Nederlandse verbinding surfen (bijvoorbeeld een buitenlandse zakenman in een Nederlands hotel).
Ik zou gewoon op Accept-Language: uitzoeken welke taal de voorkeur heeft. Bijkomend voordeel is dat de gebruiker een alternatief (of meerdere alternatieven) in kan stellen om op terug te vallen als de voorkeurstaal niet beschikbaar is.

Acties:
  • 0 Henk 'm!

  • citegrene
  • Registratie: Februari 2006
  • Laatst online: 06-08 20:31
Cookie in combinatie met accept language, zou ik willen adviseren.

Eerst kijken of de user voor jouw site een voorkeurs instelling heeft dat je dan in een cookie moet opslaan. Is er geen cookie dan accept_language gebruiken.

Het ip address is eigenlijk wel het meest minst zeggend over welke taal iemand een site wil zien.

Zelfs als een nederlander , nederlands als eerste taal heeft wil hij hem misschien alsnog wel liever in het Engels hebben. Google is daar een goed voorbeeld van.

Ook , al eerder gezegd , een nederlander heeft nederlands misschien wel helemaal niet als eerste taal.

Dan zijn er nog de buitenlanders in nederland op vakantie.

Daaroverheen
Heb je nog altijd een fout precentage IPees dat gewoonweg de verkeerde resultaten geeft. Omdat de database die je gebruikt vrijwel altijd achterhaald is.

Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 20:37
Ik heb het zelf bij een internationale website opgelost door een .org en een .nl domeinnaam. Als je naar het .org domein gaat krijg staat het standaard op Engels, ga je naar het .nl domein staat het standaard op Nederlands. Daarnaast kun je met een knopje direct van taal wisselen.
Dit werkt eigenlijk prima, de nederlanders gaan toch naar het .nl domein en de engelstalige naar het .org domein. Je hebt zo geen gekloot met mensen die accept-language verkeerd hebben ingesteld of in accept-language enkel talen hebben staan die jij niet kent.

Is het overigens niet handig om de titel te wijzigen, echt met PHP en Smarty heeft dit weinig te maken...

[ Voor 12% gewijzigd door robbert op 24-11-2007 13:50 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
citegrene schreef op zaterdag 24 november 2007 @ 13:34:
Cookie in combinatie met accept language, zou ik willen adviseren.

Eerst kijken of de user voor jouw site een voorkeurs instelling heeft dat je dan in een cookie moet opslaan. Is er geen cookie dan accept_language gebruiken.

Het ip address is eigenlijk wel het meest minst zeggend over welke taal iemand een site wil zien.

Zelfs als een nederlander , nederlands als eerste taal heeft wil hij hem misschien alsnog wel liever in het Engels hebben. Google is daar een goed voorbeeld van.

Ook , al eerder gezegd , een nederlander heeft nederlands misschien wel helemaal niet als eerste taal.

Dan zijn er nog de buitenlanders in nederland op vakantie.

Daaroverheen
Heb je nog altijd een fout precentage IPees dat gewoonweg de verkeerde resultaten geeft. Omdat de database die je gebruikt vrijwel altijd achterhaald is.
Ik heb het nu zo gemaakt:

Je komt binnen op het .com domein, deze checkt aan de hand van accept language welke taal het is, slaat dit op in cookie en stuurd je door naar de index met daarbij de bijbehorende taal die bij je browser hoort.

Zo te zien werkt het nu prima.

Bedankt voor de reacties.

Greetz

Acties:
  • 0 Henk 'm!

  • citegrene
  • Registratie: Februari 2006
  • Laatst online: 06-08 20:31
citegrene schreef op zaterdag 24 november 2007 @ 13:34:

Eerst kijken of de user voor jouw site een voorkeurs instelling heeft dat je dan in een cookie moet opslaan. Is er geen cookie dan accept_language gebruiken.
Gehehe, mezelf quote =)

Misschien dat mijn eerste zin niet helemaal duidelijk was, met voorkeurs instellingen van jouw site doelde ik op een selectie mogelijkheid op jouw site zelf.
Dit is natuurlijk zinvol, omdat de accept_language instellingen van iemands browser voor elke site die hij bezoekt geld. Heeft dus de gebruiker voor jouw site liever een andere taal dan is het selecteren van een taal via jouw site natuurlijk gewenst. Voor het onthouden van die selectie kan je gebruik maken van een cookie.

Daarom stelde ik de volgorde
Cookie, accept_language voor.

Als er geen cookie is en geen herkenbaar accept_language variable, dan moet je wel default naar een bepaalde taal.
Pagina: 1