Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
29.01.2008, 15:04
kingduevel



Hallo,

ich hab mehrere Webseiten unter meiner Fuchtel und nun muss die eine eine Sprachauswahl bekommen (neben Deutsch halt noch Englisch). Und meine Frage ist jetzt, wie ich das am besten umsetze (Struktur, Datenbank, Aussehen der URLs, mod_rewrite?). Dazu folgende Punkte:

1) Ich speichere die Inhalte weiterhin in einzelne PHP-Dateien, die je nach Sprachauswahl includet werden. Muss ich in dieser Variante bissl mehr mit mod_rewrite machen? Ordnerstruktur auf dem Server wäre dann:
Quellcode:webseite/index.php
webseite/deutsch/inhalte.php
webseite/englisch/inhalte.php
2) Ich speichere die Inhalte in einer Datenbank, die dann entsprechend aufgerufen wird. Die Abfragen kann ich hier bestimmt einfacher gestalten und muss vielleicht auch weniger in mod_rewrite rein bumsen? Hab da keine Ahnung...

3) Wie können denn dann so die Links aussehen?
Quellcode:www.webseite.de/deutsch/inhalt.html
www.webseite.de/englisch/inhalt.html
oder
www.webseite.de/inhalt.html
www.webseite.de/content.html
Irgendwie brauch ich Anregungen und am besten Vorschläge, wie ihr das vielleicht schonmal gemacht habt. Vielen Dank!

Anbei noch mein bisheriges mod_rewrite:
Quellcode:RewriteEngine on
RewriteRule ^(.*)_(.*).html$ index.php?area=$1&subarea=$2
RewriteRule ^(.*).html$ index.php?area=$1

--

zum Seitenanfang zum Seitenende Profil || Suche
001
29.01.2008, 15:45
Adrian_Broher
Admin


1) Mod rewrite hat nichts mit Sprachen oder Ordnerstrukturen zu tun. Mann kann mit mod rewrite nur die uri der http anfrage in einen andere uri transformieren lassen, sofern sie mit der entsprechenden rewrite rule matcht.

2) Mod rewrite hat immer noch nichts mit irgendwelchen magisch auftauchenden Sprachidentifizierern zu tun. Erklaerung siehe 1. Für statische Texte innerhalb der seite kannst du je nach Sprache eine Datei inkludieren, welche die Strings für einzelne sprachspezifische Elemente enthält. Für sprachrelevante Inhalte, die in der Datenbank gespeichert werden, muss in dem Fall natürlich auch noch der entsprechende Sprachidentifizierer mitgespeichert werden. Der Browser kann ausserdem per HTTP Spezifikation einen Sprachidentifizierer mitsenden. Dieser sollte bei der Auswahl der Sprache als erstes genutzt werden. http://aktuell.de.selfhtml.org/artikel/php/httpsprache/index.htm $_SERVER['HTTP_ACCEPT_LANGUAGE'] und http://de.wikipedia.org/wiki/Content_Negotiation sind für weitere Details deine Freunde.

3) siehe 1. Die Links können so aussehen wie du lustig bist, solange sie auf die rewrite rules matchen.

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.

zum Seitenanfang zum Seitenende Profil || Suche
002
29.01.2008, 16:28
kingduevel



Meine Bemerkungen zu ModRewrite beziehen sich darauf, dass man da vielleicht auch sinnvoll was machen sollte. Irgendwie die Weiterleitung der URL halt... naja, egal.

Das mit dem Sprachidentifizierer ist eine super Sache, werd ich dann wohl auch einbauen. Aber es geht etwas genauer um den Vorgang die Sprachauswahl einzubinden. Wird zum Beispiel pro Sprache eine Tabelle in der Datenbank angelegt oder fügt man eine weitere Sprache nur in einer neuen Spalte des jeweiligen Contents ein? Wo wird am besten abgefragt und womit dann geschaltet? Ich glaub zwar langsam, dass ich einfach mal anfangen sollte zu programmieren. Aber wenn halt einer noch weitere Hilfen und insbesondere auch Beispiele zur Hand hätte, dem wäre ich sehr dankbar :) !

--

zum Seitenanfang zum Seitenende Profil || Suche
003
29.01.2008, 17:16
Adrian_Broher
Admin


Eine Spalte für die Sprache in einer tabelle ist ausreichend.

Beispiel Newseintraege:

Eine Tabelle enthaelt den Title, den Inhalt der News, den Timestamp der Erstellung und die id des Verfassers. id und lang sind der Primaerschluessel (Logisch ist es gleiche newseintrag, nur die Sprache des Inhaltes unterscheidet sich). In lang wird der Sprachidentifizierer gespeichert (de = deutschsprachiger Raum, en = englischsprachiger Raum, usw)

tbl_newsentries

id | lang | creationtime | author_id | title | content

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.

zum Seitenanfang zum Seitenende Profil || Suche