Mehrsprachige Webseite(n) in PHP steuern?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Naja, vom Prinzip her geht das imho ja schon in die richtige Richtung, ich würde da auch mit Sprachdateien arbeiten und halt entweder unterschiedliche Domains, Subdomains oder Verzeichnisse benutzen.

Ich würde da allerdings nicht mit etlichen if/then/else arbeiten, sondern direkt mit Sprachvariablen, also dass du z.B. alles deutsche in einer Datei wie "lang.de.php" speicherst, alles englische in "lang.en.php" etc und dann wird anhand der (Sub)Domain nur noch entschieden, welche davon eingebunden wird.

Dann stünde, um mal bei deinem Beispiel zu bleiben, in der lang.de.php z.B. sowas:

$lang['apfel'] = 'apfel';
$lang['birne'] = 'birne';

und in der lang.en.php dann:

$lang['apfel'] = 'apple';
$lang['birne'] = 'pear';

Du könntest so also immer nur z.B. 

$lang['apfel']

benutzen und je nach eingebundener Datei wird das dann automatisch in der richtigen Sprache angezeigt.

Allzu groß sollte die

index.php

so ja nicht werden, auch allgemein kannst du Dinge, die nicht bei jedem Aufruf benötigt werden, ja in andere Dateien auslagern und nur bei Bedarf includen (so wie bei den Sprachdateien). Was die Performance angeht gibt es da aber auch deutlich wichtigere Dinge als die länge der Datei (kommt halt immer darauf an, was drin steht, eine Datei mit 10.000 Zeilen Code kann problemlos ausgeführt werden während man auch mit 1 Zeile den Server in die Knie zwingen kann^^).

Evergreen89 
Fragesteller
 14.12.2016, 16:17

Danke dir für die Antwort.

Die unterschiedlichen Sprachen werde ich wie du es geschrieben hast, in einzelne Dateien packen und diese anhand der Domain includen.

Meine URL Struktur sieht eigentlich immer so aus:

domain.de/obst/kernobst/apfel

Ich komme meistens auf drei URL-Ebenen, manchmal auch auf vier. Ich denke schon das die index.php auf einige Zeilen Code kommen wird.

Ich schätze mal das es ca. 1500 Zeilen werde und das mit einigen if´s und else.

0
mastema666  14.12.2016, 16:52
@Evergreen89

Ok, bei 1500 Zeilen musst du dir aber eigtl keine Gedanken über die Performance machen, wenn das halbwegs sauberer Code ist sollte das überhaupt kein Problem sein, vor allem statische if/else etc sind in der Hinsicht gar nichts.

Je nachdem wie dein Code aufgebaut ist etc solltest du aber vielleicht überlegen switch statt if zu benutzen, allein wegen der Übersicht sollte man bei 3 oder mehr Optionen imho switch benutzen (von der Performance afaik zwar auch geringfügig besser, aber absolut minimal, es sei denn in den "if" wird eine Funktion ausgeführt, ggf sogar mit DB-Abfrage).

BTW: Willst du für jede URL eine IF-Abfrage machen? Dann könntest du dir ggf nämlich extrem viel Arbeit sparen wenn du das entsprechend anders aufbaust (kA ob deine Inhalte in einer DB stehen, in Dateien oder wo auch immer, aber für jede mögliche URL eine IF würde ich auf keinen Fall machen, würde auch bei möglichen Änderungen sicher ne Menge Arbeit).

0

Also wenn ich solche fragen und ähnliche lese frage ich mich immer wo ihr denn das ganze geld für die verschwendeten ressourcen herhabt.. wäre doch viel sinnvoller die sprachdateien in js zu schreiben und in js das komplette sprachsystem zu bauen.. dann muss sich der client damit rumschlagen den neutralen kurzen Inhalt in den zieltext umzuwandeln. Da brauchst du noch nichtmal 2x das selbe nur in ner anderen sprache erstellen und den webserver mitunnötig vielen Umschreibungsregeln befüllen.. wer kein js hat und demzufolge die seite nicht korrekt sieht hat eben ein problem. Wer denkt er wäre allein durch das deaktivieren von js in nem Browser von nun an sicherer.. naja

Chosco  05.07.2020, 13:52

dadurch würde die Seite allerdings nicht von Suchmaschinen anaylsiert werden können und man würde dort nicht gefunden werden.

0

So wie du es vor hast wird es in Spagetticode ausarten. Dafür ist dein Konzept zu einfach gestrickt.  Das Sprachspezifische Routing gehört, wie du schon erkannt hast,  in die PHP Anwendungslogik. Bei soliden Frameworks wird diese URL Auflösung intern über ein Frontcontroller und Router Mechanismus gesteuert und dann eine entsprechende MVC Architektur aufgebaut. Daher meine Empfehlung: Mach dir das Leben einfacher und schau dir geeignet Frameworks an mit denen dein Vorhaben möglich ist, in PHP gibt's  zB Symfony. Diese bringen ein einfaches Handhaben von URL Mappings sowie  L10N und I18N Features für die Sprachabwinklung sowie Hundert andere Dinge mit. So ein Konzept selbst sauber zu programmieren,  ohne das die Performance grossartig darunter leidet,  ist reiner Overkill, das Konzept  haben andere fähige Entwicker für dich schon umgesetzt.