2010-01-10 4 views
7

Titel ist ziemlich klar.Website, die den Standort des Nutzers/IP erkennt und die Änderungen ändert. basierend darauf

Meine Webseiten bestehen sowohl aus englisch geschriebenen als auch aus spanisch geschriebenen Versionen. Sie können zur Hauptwebsite wechseln, die auf Spanisch ist, indem Sie auf http://www.chrishonn.com und auf die übersetzte Version in Englisch unter http://en.chrishonn.com klicken. Im Index jeder Seite befindet sich ein Link (unten), über den der Benutzer von einer Site zur anderen wechseln kann.

Ich frage mich jedoch, wie große Websites wie Google, Yahoo !, und andere Marken-Websites den geographischen Standort/IP des Benutzers zu erkennen, so dass - je nachdem - die Sprache der Website angepasst wird (dh Sie sind Wenn Sie aus China kommen und www.google.com besuchen, werden Sie auf www.google.cn weitergeleitet.).


Ich habe auf jeder einzelnen Seite meiner Website angegeben, die Sprache:

<meta http-equiv="content-language" content="en"> 

Das Beispiel natürlich von einem der http://en.chrishonn.com Seiten ist, die in englischer Sprache sind.

Ich hoffe, dass jemand mir eine Hand geben kann. Danke (wenn ich etwas verpasst habe, lass es mich wissen).

+3

Wenn Sie basierend auf der geografischen Position unterschiedliche Sprachen anbieten möchten, sollten Sie eine Option in Betracht ziehen, um die beste Schätzung des geografischen Standorts zu überschreiben. Es scheint üblich zu sein, dass Menschen in mehrsprachigen Ländern - in Holland und der Schweiz nur zwei zu nennen - eine andere Sprache bevorzugen als die offizielle Sprache ihres Landes. –

+0

In jedem Fall gibt es einen Link, um zwischen Englisch und Spanisch hin und her zu wechseln. – Hobhouse

+0

Oder Menschen, die Ihre Website aus einem anderen Land im Urlaub besuchen und es in ihrer Muttersprache lesen möchten. –

Antwort

10

Bei Google wird Ihr Standort anhand Ihrer IP-Adresse ermittelt. Eine Anfrage von außerhalb der USA an google.com gibt eine HTTP/1.1 302 Found zurück, die Sie zu Ihrer länderspezifischen Domain weiterleitet.

As also discussed on another post, machen diese Art von Weiterleitungen SEO kompliziert und kompliziert. Ich empfehle, den Artikel Matt Cutt (ein Google-Softwareentwickler) darüber zu lesen, wie Google die 302 Redirect behandelt: SEO advice: discussing 302 redirects.

Verschiedene Suchmaschinen verarbeiten die 302-Weiterleitung auf eine andere Weise. Bei 302 Weiterleitungen riskieren Sie möglicherweise, dass Ihre ursprüngliche Domain von Suchmaschinen ignoriert wird.


Wenn Sie möchten, dass Ihre Benutzer Lage aus ihrer IP-Adresse ermitteln, gibt es viele off-the-shelf-Leistungen, die im Grunde die meisten der IP-Bereiche auf Länder abzubilden. Sie können überprüfen möchten:


Eine weitere beliebte Technik ist es, die Accept-Language-HTTP-Header zu analysieren, die Informationen über die Sprache der Benutzereinstellungen enthält. Mainstream-Browser ermöglichen die Änderung dieser Spracheinstellungen durch den Benutzer. Sie können mehr über diese Technik aus lesen:


+0

ich denke, du kopierst einfach Antworten aus anderen Fragen auf SO (vielleicht sogar deine eigenen ?!). – dusoft

+1

Gut gemacht, um es zu merken :) Ja, ich habe einen Teil von einer Antwort kopiert, die ich einer anderen Frage zu einem ähnlichen Thema gegeben habe. –

+0

Ich habe den Beitrag mit der Referenz bearbeitet. Nur für den Fall, dass jemand anderes das Deja-Vu fühlt :) –

1

einig Nutzung der Website IP-Adresse basierten Geo Lage, einige uns Sprache Accept-Header (kann in dem festgelegt werden Browser).Wie auch immer, aus Sicht der Benutzerfreundlichkeit - erlauben Sie den Leuten immer, die Sprache zu ändern und niemals unterschiedliche Inhalte auf derselben IP anzuzeigen (Google und andere Suchmaschinen mögen das nicht und es wäre aus SEO-Sicht schlecht).

1

Diese Websites verwenden häufig Tools, die allgemein als "Geolocation-Software" bezeichnet werden.

Eines der beliebtesten Pakete ist die kostenlose GeoLite Country Datenbank von MaxMind. Dies wird in Ihre Anwendung integriert und bietet IP-zu-Land-Lookups. Mit Apache haben Sie einige Umgebungsvariablen namens GEOIP_COUNTRY_CODE und GEOIP_COUNTRY_NAME.

Alle Ihre Anwendung danach zu tun ist, zu entscheiden, wo Ihr Benutzer sein sollte oder welche Einstellungen sollten sie standardmäßig basierend auf dem Land haben, und Redirect oder Ausgabe entsprechend.

+0

Vielen Dank. Ich lade gerade GeoLite Country herunter. Ich werde auch prüfen, wie ich es aktivieren kann, da ich ziemlich neu in diesen Datenbanken bin. – Hobhouse

12

Anstatt den Standort der IP-Adresse zu ermitteln (oft unzuverlässig aufgrund von NAT und Proxy), können Sie die Standardsprache des Browsers überprüfen. Es gibt JQuery-Plugins, die dies unterstützen, z. B. http://keith-wood.name/localisation.html, oder serverseitigen Code zum Lesen des HTTP-Anforderungsheaders "HTTP_ACCEPT_LANGUAGE", um festzustellen, ob Sie den ES- oder EN-Standort anzeigen möchten.

+4

+1 für Accept-Language, das ist eine ** viel ** geeignetere Möglichkeit, eine Sprache als Geolocation zu wählen (auch wenn Geolocation 100% genau waren). Dies sollte jedoch nur auf der Serverseite erfolgen. Accept-Language ist auf der Client-Seite nicht verfügbar; stattdessen erhalten Sie nur 'navigator. [user] Language'. Diese Einstellung hat jedoch mit der Installationssprache zu tun, die anders als die Accept-Sprache nicht einfach vom Benutzer konfigurierbar ist. Folglich sollte es - und dieses Plugin, das es benutzt - niemals benutzt werden. – bobince

+0

Ich hätte das tatsächlich getan: Für seine Einfachheit und es hätte weniger Zeit gekostet. Allerdings verwenden viele Leute (zählen Sie mich) eine andere Sprache in unseren Browsern/OS (s) als die Sprache, die wir tatsächlich sprechen, oder die Amtssprache des Landes. – Hobhouse

+3

@crozer: sollten Sie nicht am meisten daran interessiert sein, in welcher Sprache der Benutzer Daten anstelle von deren Speicherort durchsuchen möchte? Ich würde denken, dass der "Accept" -Header am besten auf die Wünsche des Benutzers hinweist. –

0

Sie können eine GET-Anfrage an diese URL senden: https://api.teletext.io/api/v1/geo-ip und sie wird mit einigen Länderinformationen im JSON-Format antworten. Siehe https://teletext.io/help/geo-location-service für die Verwendung.

Wenn Sie es selbst implementieren möchten: Ich habe dies mithilfe von AWS Cloudfront eingerichtet. Cloudfront fügt Ihrer Anforderung einen Header (Cloudfront-Viewer-Country) hinzu, bevor dieser an den Ursprungsserver weitergeleitet wird, den Sie verwenden können. Stellen Sie sicher, dass Sie die Kopfzeile in Ihrer Cloudfront-Verteilung auf die weiße Liste setzen.

0

Ich habe eine Cloud-Verteilung erstellt und den CloudFront-Viewer-Country-Header in weißer Liste aufgeführt. Aber wenn ich mit dieser Verteilung auf Objekt zugegriffen habe, habe ich es nicht im Anfrage-Header gesehen.

+0

Warnung: Es ist keine Antwort für das Problem – darkomen

Verwandte Themen