Mehrsprachige Seiten
Andreas
- php
0 Hopsel1 Sven Rautenberg0 Andreas
Hallo,
habe eine Seite und bislang 2 Sprachdateien wo der textuelle Teil in der jeweiligen Sprache als Variable vorliegt. Soweit kein Problem, auch eine Sprachauswahl nicht. Doch die Weitergabe von url zu url bereitet mir probleme, da ich zu doof bin die Info ob german oder english in einem cookie beim Betrachter zu speichern.
Kann mir da jemand eine Hilfestellung geben?
Gruß Andreas
Hi Andreas!
[...] da ich zu doof bin die Info ob german oder english in einem cookie beim Betrachter zu speichern.
Wo bist du denn auf deine Grenzen gestoßen?
Kann mir da jemand eine Hilfestellung geben?
Hast du dir schon einmal Sessions angeschaut?
Wobei ich Cookies sinnvoller finde.
MfG H☼psel
Hallo,
habe mittlerweise es geschaft ein Cookie auf meiner Platte zu speichern mit den notwendigen Sprachinformationen. Doch wie liest man ein Cookie wieder aus?
Hier mein Code:
$lang = "english";
setcookie("sprachauswahl_pensionv", $lang);
setcookie("sprachauswahl_pensionv", $lang, time()+(5*3600));
setcookie("sprachauswahl_pensionv", $lang, time()+(5*3600), "/", "www.foo.de", 1);
Andreas
Hi Andreas!
Doch wie liest man ein Cookie wieder aus?
$_COOKIE['sprachauswahl_pensionv'] enthält den gespeicherten Wert.
Ich hoffe, ich konnte helfen.
MfG H☼psel
Hi,
leider eben nicht.
gebe ich das Array mit echo aus kommt nichts.
Auch nicht wenn ich es Serialisiere und ausgebe.
Im Cookie steht folgendes:
sprachauswahl_pensionv
german
www.url.de/
1537
407106432
29791833
1094032864
29791791
*
halt mit einem Steuerzeichen (chr(13)? getrennt, nicht untereinander.
Andreas
Hallo,
problem gelöst.
Gruß Andreas
Moin!
Hallo,
habe eine Seite und bislang 2 Sprachdateien wo der textuelle Teil in der jeweiligen Sprache als Variable vorliegt. Soweit kein Problem, auch eine Sprachauswahl nicht. Doch die Weitergabe von url zu url bereitet mir probleme, da ich zu doof bin die Info ob german oder english in einem cookie beim Betrachter zu speichern.
Ich halte es für eine schlechte Idee, das in einem Cookie zu speichern. Der Grund ist die Indizierbarkeit durch Suchmaschinen.
Suchrobots kennen keine Cookies. Sie können auch keine intelligente Sprachauswahl treffen, und wenn sie unter ein-und-derselben URL je nach Cookie mal deutsche, mal englische Inhalte vorfinden würden, hilft das absolut nicht bei der Indizierung.
Meine Empfehlung zur Sprachauswahl ist immer noch (und ich habe bislang keine bessere Idee gesehen), die Sprache zum Bestandteil der URL zu machen. Meine persönliche Vorgehensweise ist dabei, das erste Verzeichnis der URL als Sprachkürzel zu gestalten:
www.example.com/de/ wäre die deutsche Startseite
www.example.com/en/ wäre die englische Startseite.
Je nach Gestaltung der generierenden Skripte ist es so möglich, auf jeder deutschen Seite entweder den Link auf die englische Startseite, oder auf die korrespondierende englische Seite zu setzen.
Und es ist auch nicht zwingend erforderlich, alle Inhalte doppelt in zwei Verzeichnissen abzulegen, da mit mod_rewrite ja ganz wunderbar eine virtuelle Ordnerstruktur erstellt werden kann - alternativ wird einer der Ordner zu einem Symlink auf den anderen Ordner gemacht, so dass keine doppelte Datenhaltung erforderlich ist. Die Information, welche Sprache verwendet wird, entnimmt das Skript dann aus der URL.
Und für Besucher, die noch keine Auswahl getroffen haben, und einfach nur www.example.com/ aufrufen, kann man an dieser Stelle ein Skript platzieren, welches auswertet, was die bevorzugten Sprachen sind, die im Browser eingestellt wurden, um dann direkt auf die entsprechende Seite weiterzuleiten.
- Sven Rautenberg
Hallo Sven,
Meine Empfehlung zur Sprachauswahl ist immer noch (und ich habe bislang keine bessere Idee gesehen), die Sprache zum Bestandteil der URL zu machen. Meine persönliche Vorgehensweise ist dabei, das erste Verzeichnis der URL als Sprachkürzel zu gestalten:
www.example.com/de/ wäre die deutsche Startseite
www.example.com/en/ wäre die englische Startseite.
Das ist ein interessanter Ansatz, und auch sicherlich richtig.
Aaber jetzt steht schon die komplette Seite.
Ich habe auch keine solche lineare Struktur sondern die Seiten sind mit Variablen aufgebaut, also index.php?action=Option1&what=Option11
Rufe ich eine Sprache auf, rufe ich folgenden Link auf:
index.php?action=Option1&what=Option11&sp=en
Dann wirk die Sprache im Cookie gespeichert, und per header auf index.php?action=Option1&what=Option11 umgeleitet, damit man das sp=xx nicht mit jedem Link mitschleppt.
Wenn Robots keine Cookies speichern wird beim Redirect per default die deutsche Sprache geladen. Also bekommt ein Robot eigentlich nie eine andere Sprache zu gesicht - oder irre ich mich?
Der Algorithmus ist folgender:
...
refresh = false
Sprache = german
Existiert SprachCookie dann Sprache = SprachCookie
Existiert eine Sprachauswahl dann Sprache = gewählte Sprache und refresh = true
Cookie setzen
wenn refresh = true dann redirect durch header
...
Gruß Andreas
Moin!
Ich möchte noch mal unterstreichen:
Meine Empfehlung zur Sprachauswahl ist immer noch (und ich habe bislang keine bessere Idee gesehen), die Sprache zum Bestandteil der URL zu machen.
Ich habe auch keine solche lineare Struktur sondern die Seiten sind mit Variablen aufgebaut, also index.php?action=Option1&what=Option11
Das ist kein Hinderungsgrund, mit mod_rewrite wäre da einiges machbar - das würde die Sprachauswahl allerdings nicht groß verändern.
Rufe ich eine Sprache auf, rufe ich folgenden Link auf:
index.php?action=Option1&what=Option11&sp=en
Wunderbar. Die Sprache steckt in der URL.
Dann wirk die Sprache im Cookie gespeichert, und per header auf index.php?action=Option1&what=Option11 umgeleitet, damit man das sp=xx nicht mit jedem Link mitschleppt.
Warum dies? Die Weiterleitung ist sinnlos, sie muß nicht sein, weil du auch direkt die Sprachauswahl ins Cookie nehmen kannst, und alle auf der Seite enthaltenen Links enthalten diesen Parameter dann nicht mehr.
Wenn Robots keine Cookies speichern wird beim Redirect per default die deutsche Sprache geladen. Also bekommt ein Robot eigentlich nie eine andere Sprache zu gesicht - oder irre ich mich?
Robots sind nicht die einzigen Internetbenutzer, die keine Cookies speichern. Auch viele Browserbenutzer lehnen Cookies aus Prinzip ab. Bei denen funktioniert deine Sprachspeicherung also nicht - sie würde aber funktionieren, wenn du auf diese sinnlose Cookiespeicherung verzichten würdest.
Und noch ein Szenario: Angenommen, jemand kommt auf deine Seite und schaltet auf die englische Sprache um. Dann packt er irgendeine Unterseite in seine Bookmarks, oder verschickt sie per Mail an seinen besten Kumpel.
Wird die gespeicherte oder verschickte URL erneut aufgerufen, fehlt es an jeglichem Cookie, und man sieht wieder nur die Standardsprache, obwohl die Sprachangabe in der URL genau das verhindern würde.
Und zu guter letzt: Webseiten auch in weiteren Sprachversionen macht man doch eigentlich deshalb, damit Benutzer die Seiten auch finden und wahrnehmen. Wenn Suchmaschinen nur deine deutschen Seiten indizieren können, weil du ihnen keine URL direkt zur englischen Seite gibst, dann kriegst du auch kaum englisch sprechende Benutzer auf deine Seite. Und arbeitest an der englischen Sprachversion vollkommen sinnlos, weil die kaum jemand besucht und benötigt.
Und das ist doch ausgesprochen schade, oder?
- Sven Rautenberg
Hallo Sven,
Du meinst mit mod_rewrite bekäme man aus foo.bar/index.php?action=Option1&what=Option11&sp=en z.B. dann folgendes?
foo.bar/Option1/Option11/en
Dann könnte ich ja komplett auf die Cookies verzichten.
Hab aber ziemlich beschränkte Kenntnisse von mod_rewrite.
Andreas
Moin!
Du meinst mit mod_rewrite bekäme man aus foo.bar/index.php?action=Option1&what=Option11&sp=en z.B. dann folgendes?
foo.bar/Option1/Option11/en
Im Grundsatz: Ja, sowas kann man machen.
Ich würde es dir aber nicht einfach so empfehlen. Die vernünftige Strukturierung einer URL bedeutet auch, dass man zukunftssicher festlegt, welche Informationsangebote in welcher Struktur angeboten werden.
mod_rewrite ändert jedenfalls nur etwas an der URL, die dadurch benutzte Technik (Skripte, Cookies) ändert sich nicht.
Dann könnte ich ja komplett auf die Cookies verzichten.
Nein, du kannst auch so komplett auf Cookies verzichten. Lass einfach den Sprachparameter in der URL drin. Das fällt nämlich auch nicht weiter auf, ob du noch einen Parameter mehr oder weniger in der URL drin hast. Aber Suchmaschinen können ohne Cookiebenutzung deine Seite indizieren.
Hab aber ziemlich beschränkte Kenntnisse von mod_rewrite.
Eben deshalb empfehle ich dir, davon erstmal Abstand zu nehmen. Du kannst damit natürlich gerne rumexperimentieren, aber mod_rewrite allein hilft dir nicht, du mußt, da sich die URL aller Seiten ja ändert, auch alle deine Links in den Seiten ändern. Und so ein großer Umbau lohnt sich nicht unbedingt.
- Sven Rautenberg
OK, danke erst mal.
ich habe halt den Weg der Cookies gewählt um nicht in allen Codestellen den Parameter für die sprache nachtragen zu müssen.
Aber ich werde wohl deinem Rat folgen und das so machen.
Gruß Andreas