nohh01
Themenersteller
Neuling (4 Beiträge)

Internationalisierung von Seiten

am 21.09.2013, 08:53 Uhr eröffnete nohh01 folgenden Thread
Sonstige    1801 mal gelesen    9 Antwort(en).

Hallo liebe Forenmitglieder,

seit kurzer Zeit verfolge ich interessiert eure Postings und Tipps. Toll ist, dass hier besonders kompetent und freundlich gepostet wird und im Gegensatz zu anderen Foren niemand beschimpft oder beleidigt wird.

Nach langem erfolglosen Googeln - ich weiss nicht wonach ich suchen soll bzw. welche Suchphrase hilfreich ist - hoffe ich hier auf Tipps, Hinweise oder gar eine Lösungsmöglichkeit.

Nun zu meiner Frage:
Ich versuche auf einer noch nicht veröffentlichten Homepage eine automatische Weiterleitung auf die entsprechende Sprache bzw. das Land.
Mittels der IP-Adresse des Besuchers soll das Land erkannt werden. Dann soll die entsprechende Seite (anstatt der üblichen Startseite mit Flaggen) auf unserer Homepage angezeigt werden.
Beispiel:
Besucher aus Deutschland: www. meine-neue-seite .com/deu
Besucher aus Österreich: www. meine-neue-seite . com/aut
Besucher aus Frankreich: www. meine-neue-seite . com/fra

Die nächste Frage ist natürlich, wie sich die Bots in diesem Fall verhalten, die kommen ja selten aus Deutschland/ Österreich/ Frankreich. Sind Sie verwirrt und finden dann die erstellten Seiten nicht? Indexieren und besuchen sie dann nur die englisch-sprachigen Seiten?

Herzlichen Dank für eure Postings

Lara


winelady
Kauffrau
Content Halbgott (862 Beiträge)
am 21.09.2013, 09:26 Uhr schrieb winelady

Hallo Lara,

willkommen im Forum. Stimmt, hier herrscht meist ein sehr freundlicher und umgänglicher Ton, und wenn sich jemand ganz arg daneben benimmt, bekommt er/sie eher keine als eine giftige Antwort.

Die Weiterleitung der Besucher nach IP ist grundsätzlich ein interessanter Gedanke – allerdings sehe ich darin auch einige Schwierigkeiten:

1. Was machst Du mit Besuchern aus Ländern, deren Sprache Du nicht anbietest? Du könntest sie z.B. grundsätzlich auf die engl. Version leiten, aber wer dann kein Englisch kann, sollte zu einer Sprache seiner Wahl wechseln können.

2. Was machst Du mit mehrsprachigen Ländern? Schau z.B. mal in die Schweiz oder nach Belgien, wo es mehrere offizielle Sprachen gibt, deren Sprecher ggf. auch unwillig reagieren können, wenn Du ihnen die "falsche" Sprache servierst.

Du wirst also um eine Lösung mit Fähnchen oder sonstwie um den Sprachwechsel nicht herumkommen.

Die Bots könntest Du mittels ihrer IP eventuell von der Weiterleitung ausschließen, vielleicht reicht aber auch die sitemap.xml, um die Suchmaschinen zu steuern.

Gruß
winelady


Weinvielfalt aus dem Weingut Fuchs
Fremdsprachensatz

nohh01
Neuling (4 Beiträge)
am 21.09.2013, 10:08 Uhr schrieb nohh01

Hallo winelady,

vielen Dank für die schnelle Reaktion und weiteren Hinweise.

zu Frage1: diese kommen auf die Startseite www. meine-neue-seite . com
zu Frage2: diese sollen auf die Seite: www. meine-neue-seite . com/sui
geleitet werden (die erstmal in deutsch erstellt wird, Inhalt wird aber anders sein als die Seite für Besucher aus Deutschland).

Ob für die bots eine sitemap.xml ausreicht, weiss ich leider nicht.

Gruß
Lara



hansen
Foren Moderator
Content Gott (1886 Beiträge)
am 21.09.2013, 10:34 Uhr schrieb hansen

Hallo Lara,

da ich in diesem Bereich nicht fit bin, ohne Gewähr:

PHP-Skript für eine automatische Sprachumschaltung

Gruß
hansen


Nepal Rundreisen

matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 21.09.2013, 13:03 Uhr schrieb matthes

Dieser Weg ist mMn relativ unzuverlässig. Verwende stattdessen lieber den Accept-Language-HTTP-Header. Das spart auch zeitraubende Abfragen der Herkunft der IP.

Bots würde ich eine Sitemap vorlegen und direkte Aufrufe einer Sprachversion nicht umleiten.
D.h. wenn jemand example.com aufruft, über Accept-Language z.B. auf example.com/en/ umleiten, wenn aber jemand direkt example.com/de/ aufruft, nichts ändern, selbst wenn die Sprache anders ist.

Und denk daran, die lang-Attribute zu setzen, damit Bots auch wissen, welche Sprache sie gerade sehen.

Habe ich so für einen internationalen Immobilienhändler gelöst und es klappt hervorragend.


Make Seitenreport great again!

nohh01
Neuling (4 Beiträge)
am 21.09.2013, 13:15 Uhr schrieb nohh01

Hallo Matthes,

das klingt super. Aber was ist der Accept-Language-HTTP-Header?


matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 21.09.2013, 20:13 Uhr schrieb matthes

Das ist eine Information, die der Browser beim Abruf einer Seite an den Server überträgt und in der die akzeptierten Sprachen nach einer Gewichtung vorhanden sind. Also genau das, was für solche Zwecke wie den Deinen verwendet werden sollte.

Ist im Server-Array verfügbar:
$_SERVER[\'HTTP_ACCEPT_LANGUAGE\']


Make Seitenreport great again!

nohh01
Neuling (4 Beiträge)
am 21.09.2013, 21:14 Uhr schrieb nohh01

Okay, das habe ich jetzt verstanden. Vielen Dank für die Erklärung. Nun konnte ich besser recherchieren und erreiche hoffentlich bald das Ziel.

Wenn ich das jetzt (beim googlen) richtig verstanden habe, muss ich einen php-code auf die Startseite einbauen und so auf die verschiedenen länderspezifischen Seiten weiterleiten?

<?php
$sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
switch($sprache) { case \'de-de\':
$weiterleitung = \'/deu/index.php\';break;

case \'de-at\':
$weiterleitung = \'/aut/index.php\';break;

case \'de-ch\':
$weiterleitung = \'/sui/index.php\';break;

case \'fr-fr\':
$weiterleitung = \'/fra/index.php\';break;


default:
$weiterleitung = \'/deu/index.php\'; }
header ("location: $weiterleitung");
?>


Einen Zugriff auf den Server und Änderungen der Einstellungen kann ich aufgrund eines normalen Grundtarifes wohl nicht.

Ist das so richtig? Oder bin ich auf dem Holzweg?

Vielen Dank und einen schönen Sonntag


d_spaete
Avatar d_spaete
Webentwickler
Fortgeschrittener (59 Beiträge)
am 22.09.2013, 14:34 Uhr schrieb d_spaete

Das geht in die richtige Richtung, allerdings ist der Wert von $_SERVER["HTTP_ACCEPT_LANGUAGE"] i.d.R. komplexer als \'de-de\', \'de-at\' etc. und enthält u.U. verschiedene Sprachen mit unterschiedlichen Qualitäten, siehe

stackoverflow.com/a/6038460


(Original: php.net/function.http-negotiate-language )


aktuell.de.selfhtml.org/artikel/php/httpsprache/


matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 23.09.2013, 14:44 Uhr schrieb matthes

Wie d_spaete schreibt, ist der Ansatz ganz ok, aber so noch unbrauchbar.
Lies mal ein wenig über die Variable, dann siehst du, wie sie aufgebaut ist.

Generell nach dem Schema:
Sprachkürzel[;Gewichtung],Sprachkürzel[;Gewichtung]

D.h. du musst den String am besten per explode in ein Array laden und es dann sortieren. Ich bin mir gerade nicht sicher, ob die Reihenfolge der Gewichtung entsprechen muss, daher würde ich eine Sortierung vornehmen. Wenn keine Gewichtung vorhanden ist, beträgt sie 1, ansonsten irgendwas kleiner gleich 1.

Bei mir ist es folgender String:
de,en;q=0.5

Also bevorzuge ich die Sprache deutsch, akzeptiere aber auch englisch.

Ganz grob und ungetestet runtergetippt:
<?php
$vorhandeneSprachen = array (
\'de\'=>\'/deu/\',
\'de-CH\',\'/sui/\',
\'de-AT\'=>\'/aut/\',
\'fr\'=>\'/fra/\'
);
$akzeptierteSprachen = explode(\',\',$_SERVER[\'HTTP_ACCEPT_LANGUAGE\']);
$sortierteSprachen=array();
foreach($akzeptierteSprachen as $sprache) {
list($kuerzel,$gewichtung) = array_pad(explode(\';\', $sprache, 2), 2, null);
if (empty($gewichtung)) {
$gewichtung=1;
}
else {
$gewichtung=str_replace(\'q=\',\'\',$gewichtung);
}
$sortierteSprachen[$kuerzel]=$gewichtung;
}
arsort($sortierteSprachen);
foreach($sortierteSprachen as $key => $value) {
if (in_array($key,array_keys($vorhandeneSprachen))) {

header(\'Location: www.example.com\'.$vorhandeneSprachen[$key]);


die;
}
}
//default

header(\'Location: www.example.com/\');


die;
?>

Du musst aber mehrere Punkte beachten.

Wenn jemand direkt auf example.com/sprachvariante/ surft, sollte das als Entscheidung für eine Sprache gewertet werden und keine Weiterleitung erfolgen. Sonst könnten auch Bots die Sprachvarianten nicht crawlen.
D.h. diese Abfrage der Benutzersprache erfolgt eigentlich nur ein einziges Mal, nämlich wenn jemand frisch auf deine Startseite kommt.

Das musst du auch bei der Struktur der Seite berücksichtigen. Wenn der Standard example.com/ wäre, muss z.B. eine Überprüfung über Sessions dazu, damit erkannt wird, ob der Benutzer nun frisch auf example.com zugreift, oder sich dafür entschieden hat, die Standardsprache zu verwenden.

Auf Flaggen oder eine andere Variante zur Sprachauswahl würde ich nicht verzichten, man kann nicht immer davon ausgehen, dass der HTTP_ACCEPT_LANGUAGE korrekt ist. Außerdem soll der Benutzer selbst entscheiden können, was er sehen will.

Und nicht zuletzt müssen dann auch Sitemaps korrekt erstellt und den Suchmaschinen präsentiert werden. Eine Notierung wie <link rel="alternate" hreflang="xy" href="andereSprachVariante"> für jede Sprache ist auch nicht verkehrt. Bläht den Quellcode etwas auf, dürfte aber förderlich sein.

[Edit 23.09, 16:21 - Wort ergänzt, Satz ergab wenig Sinn. ]


Make Seitenreport great again!

  • 1


« zurück zu: Sonstige

Das Seitenreport Forum hat aktuell 5276 Themen und 36111 Beiträge.
Insgesamt sind 48364 Mitglieder registriert.