Mehrsprachigkeit

  • Mehrsprachige Webseite - womit setzt man es am besten um? Gettext, xml, Datenbank ...
    Was ich auf keinen Fall möchte ist dieser Anhang an der URL (lang=de)....
    In einem anderen (kleineren) Projekt habe ich das mal mit php-Dateien (und eben dieser get-Variante) gemacht, fand aber die Pflege der php-Datein sehr unübersichtlich und aufwändig.
    Tipps?

  • In einem anderen (kleineren) Projekt habe ich das mal mit php-Dateien (und eben dieser get-Variante) gemacht, fand aber die Pflege der php-Datein sehr unübersichtlich und aufwändig.


    Ein wunderbares Beispiel für den Einsatz von Sessions :D

  • Ich drück es mal so aus:
    bei der Datnbankvariante könnte ich auf Anhieb sehen, wo in welcher Sprache noch keine "Variable" hinterlegt ist (da das Feld dann einfach leer wäre), bei der php-Variante käme schneller ein copy&paste Fehler rein (wenn ich z.B. um 20 Variablen erweitere aber nur 19 kopiere).
    Oder hab ich da so einen grundsätzlichen Denkfehler?

    XML oder gettext (also) lieber nicht?

  • also in punkto fehleranfälligkeit würd ich eher zu xml greifen bei statischen texten
    sollen die texte per cm pflegbar sein dann datenbank
    und bei der php-variante empfiehlt sich konstanten zu definieren und je nach sprachauswahl die entsprechende datei einzubinden :)

  • per modrewrite umschreiben später ;)

    folgende url:

    Code
    http://www.bla.com/dog.php?lang=en&id=14444

    Und wenn ich jetzt über das Menu die Sprache ändern möchte? Auf einer "normalen" Seite funktioniert das mit

    Code
    <a href="?lang=de">Deutsch</a>


    hier aber nicht, da ja noch die id dranhängt...
    Im Menu kann ich ja nicht im Link die id dranhängen, hab auch noch andere Seiten :D
    Geht das überhaupt?

  • also der eigentlich gängige weg ist die sprachauswahl separat zu machen und die auswahl in der session zu speichern.
    oder du prüfst was beim seitenaufbau in $_GET steht und hängst die variablen beim sprachwechsel automatisch hinten dran.
    so dass beim sprachwechsel auf egal welcher seite die anderen parameter immer mitgeschleift werden :)

  • Bandit hat dir dazu im Posting Nr.2 schon den entscheidenden Hinweis geliefert: Sessions. Dort legst du ab was du wiederkehrend brauchst, also zum Beispiel die Sprachauswahl oder eben die id oder Beides.

    - - - Aktualisiert - - -

    Bandit hat dir dazu im Posting Nr.2 schon den entscheidenden Hinweis geliefert: Sessions. Dort legst du ab was du wiederkehrend brauchst, also zum Beispiel die Sprachauswahl oder eben die id oder Beides.

  • Das Problem war nicht, die Session-Variable zu setzen, sondern das umschreiben wenn eine weitere Variable dranhängt.

    Code
    aus
    http://www.bla.com/dog.php?lang=en&id=14444
    sollte werden
    http://www.bla.com/dog.php?lang=de&id=14444

    und das es nicht auf zwei Sprachen begrenzt ist ;)

    Die Variante mit der zweiten Variablen benötige ich auf der gesamten Seite zwei mal. Alle anderen Seiten haben nur die Sprachauswahl "dran". Ich habe eine Lösung gefunden:

    PHP
    if ($_SERVER['PHP_SELF'] == "/dog.php") 
    {echo '<dd><a href="'.$_SERVER['PHP_SELF'].'?lang=en&id='.$givenid.'">English</a></dd>';} 
    else {echo '<dd><a href="'.$_SERVER['PHP_SELF'].'?lang=en">English</a></dd>';}


    ok, nicht ok, ganz böse??

  • ich persönlich bin kein freund von php_self. ich greife lieber auf den scriptpfad zu und hol mir da die benötigten infos oder was besser is: man baut sich ein objekt "activePage" zusammen wo durch die konfig direkt bekannt is, wo man sich befindet.

    hat mein anderer vorschlag von heut früh nicht geklappt?

  • habs dir jetzt mal so gelöst :)