Hallo,
nur fürs Protokoll: Ich bin ebenfalls der Meinung, dass Flaggen nicht für Sprachen stehen sollten.
die User sind es aber gewohnt Sprache per Flagge umzuschalten, kommt wohl von den unzähligen Joomla und Wordpress Seiten die so ihre User die Sprache wählen lassen, selbst für den Administrator sind Flaggen im Backend eingerichtet. Außerdem finde ich (das ist meine persönliche Meinung) dass Flaggen schöner in ein Design passen als Textlinks.
Wichtig ist zunächst mal, dass man auch dann, wenn man die Sprache schon einmal gewählt hat, auch wieder umschalten kann.
Das würde ich über die zwei Flaggen regeln. Klickt der User auf „fr“ wird der Wert im Cookie ausgetauscht, klickt der User wieder auf „de“ wird wieder getauscht, mehr Sprachen gibt´s derzeit nicht.
Davon abgesehen ... Beides hat Vor- und Nachteile. Sprache in der URL heißt, dass man auch gezielt auf die deutsch- oder englischsprachige Version verlinken kann. Sprache ausschließlich durch Cookie heißt, man hat generische URLs ohne Sprachangabe, und beim Weitergeben eines Links bekommt jemand anders die Seite in Deutsch zu sehen, obwohl ich die englische Version hatte. Kann auch gewünscht sein.
Stimmt, schöner wäre es natürlich wenn ich ein Link teile, dass ich dann direkt in der jeweilige Sprache bin, kann aber auch Nachteile haben, ich teile ein „fr“ Link und mein gegenüber versteht nicht was auf der Seite steht und ist weg, User verloren. Wie du schon sagst, es hat vor und Nachteile, auf einer Sprache zu bleiben.
Ich habe bei meinen Projekten übrigens eine dreistufige Sprachauswahl:
- Ist ein Sprachkürzel als URL-Parameter angegeben (?lang=de), dann hat das Vorrang vor allen anderen Angaben. Das kann man auch leicht mit einem Link zur Sprachauswahl verknüpfen.
- Existiert ein Sprach-Cookie, hat das Vorrang vor Language Negotiation.
- Existiert weder Cookie, noch URL-Parameter, gilt Language Negotiation, also bekommt der Client die Sprachfassung, die in seinem Browser als bevorzugt eingestellt ist - es sei denn ...
- Wenn ich die über die genannten drei Schritte ermittelte gewünschte Sprache nicht bedienen kann, bekommt der Client ersatzweise die Sprachfassung, die ich als Standard festgelegt habe.
Deine Umsetzung hört sich sehr gut an, finde ich aber für mein kleines Projekt (Startseite, Über uns, Impressum, Datenschutz, vier Schuhe mit einer jeweiligen Detail Seite) doch etwas überdimensioniert an :)
Daher würde ich gerne erstmal doch lieber bei /de/produkt/weiblich-blau und /fr/produkt/weiblich-blau glaube ich bleiben. Auch kann ich so bedenkenlos meine Flaggen verlinken, denn es gibt immer eine übersetzte Seite, also muss ich nur das de gegen das fr austauschen, der User bleibt auf der gleichen Seite.
Ja, ich denke das ist besser als ein Cookie.
Edit:
Meine Idee mit dem Kürzel dazwischen setzten geht leider nicht, ich erhalte im Browser die Meldung, dass die Seite nicht gefunden wird, liegt bestimmt an meiner .htaccess Datei
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule produkt/([^/]*)(.*)$ produkt-detail.php [l]
RewriteRule bestellen/([^/]*)(.*)$ produkt-bestellen.php [l]