mehrsprachige Website

Diskutiere mit über: mehrsprachige Website im Web-Programmierung Forum

  1. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    hallo zusammen,

    ich habe die Aufgabe eine größere Website auf mehrsprachig (deutsch, englisch, holländisch, französisch) zu erweitern.

    Die übliche Methode mit MultiViews (html.de, html.en etc.) funktioniert hier leider nur beschränkt, da die meisten Seiten dynamisch generiert werden.
    Erschwerend kommt hinzu, dass aufgrund der "Entwicklungsgeschichte" der Site sowohl php als auch Perl (teilweise sogar gemischt) angewendet wurden.

    Mein Ansatz ist nun der, bei den Seiten, die von cgi Skripten erstellt werden , die Umgebungsvariable HTTP_ACCEPT_LANGUAGE auszuwerten.

    Erste Frage:
    Kann man davon ausgehen, dass alle Browser diese Variable übermitteln, oder muss man damit rechnen, dass die Variable manchmal leer ist?

    Zweite Frage:
    Wie geht man bei der Methode mit MultiViews (html.de, html.en etc.) damit um, dass Sprachen gewählt sind, für die man keine Version der Webeite bereitstellt.
    Oder anders gefragt, wie definiert man eine default-Sprache, damit die englische Version ausgegeben wird, wenn ein Browser z. B. auf Japanisch gestellt ist?

    Bin über jede Hilfe froh, auch Hinweise auf passende Anleitungen o. ä.
     
    Zuletzt bearbeitet: 28.08.2005
  2. dms

    dms Gast

    Ich denke damit solltest Du auf jeden Fall rechnen.

    Schau Dir mal die Methode an wie es phpMyAdmin macht. Die verwenden auch HTTP_ACCEPT_LANGUAGE und bieten eine Default-Sprache an: http://cvs.sourceforge.net/viewcvs.py/phpmyadmin/phpMyAdmin/Attic/select_lang.inc.php3?rev=1.15
     
  3. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    Guter Hinweis, vielen Dank.

    Bei den PHP Seiten bin ich durch Ausprobieren auf folgendes Problem gestoßen:
    Wenn ich eine Seite habe (seite1.php.de, seite1.php.en etc.) die alle eine andere Seite mit "include" einbeziehen soll (z. B. navi.php), dann hatte ich gehofft, ich könnte jeweils länderspezifische navi.php's erzeugen (navi.php.de, navi.php.en etc.) und die passende würde automatisch includiert werden.
    Stattdessen wird immer die englische Version includiert.

    Und selbst das funktioniert nur, wenn man schreibt:
    PHP:
    include "http://server.dom/pfad/file.html";
    Mit
    PHP:
    include "relativer_pfad/file.html";
    wird die Datei nicht gefunden und man erhält den entsprechenden Fehler.
     
  4. dms

    dms Gast

    Ich weis nicht ob ich Dich jetzt richtig verstanden habe.

    Du hast also die Dateien "navi.php.de", "navi.php.en" etc. und willst diese über die Apache-Sprach-Funktionalität (keine Ahnung wie das heisst, hab noch nie was damit gemacht ;)) dynamsich einbinden?
    Das kann so, glaube ich, nicht funktionieren.

    Das kann nicht gehen, da hier der Apache nicht mehr greift. Auf diese Weise kannst Du nur per PHP auf die richtige Datei verweisen.

    Gute Idee. Hier hast Du jedoch das Problem dass die Seite nicht über den Browser des Nutzers angefordert wird, sondern in einem extra HTTP-Prozess über PHP. Demnach sind hier keine Informationen über den Browser vorhanden und deswegen wird die Standard-Sprache (en) verwendet.

    Die einfachste Möglichkeit die korrekte Datei über PHP einzubinden würde dann wohl so aussehen:
    Code:
    include "/pfad/file.html.".$lang;
     
  5. HAL

    HAL Gast

    warum lagerst du die verschiedenen sprachen nicht in in entsprechende language-
    files aus und includierst die, je nach sprache? vorteil: eine datei für alle, die bei
    bedarf nur den entsprechenden content lädt.

    so nach dem motto ( vereinfacht ) : if english then en.php else if french then fr.php
    und so weiter. so kenne ich das von mehrsprachigen webportalen.

    :)
     
  6. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    Das habe ich vor, ja; (heisst übrigens "Content Negotiation" ;))
    Ja, so ähnlich hab ich das mal probeweise gelöst.
    Dachte nur, das geht evtl. einfacher.

    Das ist ja schon geschehen.
    Ja, das geht, ist nur leider ziemlich umständlich, da die Site ziemlich komplex und auch ein wenig unübersichtlich aufgebaut ist.
    Die meisten Seiten werden aus cgi Skripten (mit Modulen), HTML::Templates und Datenbankinhalten zusammengebastelt. Teile sind dann wieder in PHP usw.

    Im Augenblick fehlt mir ein wenig der Durchblick.
    Ich denke das ist das Hauptproblem, aber da muss ich mich wohl durchbeissen.
     
  7. michanismus

    michanismus MacUser Mitglied

    Beiträge:
    434
    Zustimmungen:
    0
    Registriert seit:
    23.08.2004
  8. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    So, inzwischen bin ich ein gutes Stück weitergekommen.

    Ich habe die Struktur vereinfacht und die Seitengenerierung vereinheitlicht.
    Im Ergebnis sieht das so aus, dass jetzt alle Seiten von einem zentralen Perl cgi Skript zusammengebaut werden, das von einer .htaccess Datei mit einer "RewriteRule" aufgerufen wird.
    PHP habe ich komplett eliminiert.
    Die eigentlichen Inhalte stehen in einer Datenbank und in verschiedenen Templates.

    Die Auswahl der Sprache habe ich durch Auswertung von HTTP_ACCEPT_LANGUAGE realisiert, was auch ganz gut funtioniert.
    Die Pflicht wäre also damit erledigt; jetzt kommt die Kür.

    Die Frage:
    Ich möchte nun erreichen, dass der Benutzer durch Anklicken von entsprechenden Links die Sprache auch abweichend von der Vorgabe wählen kann.
    Meine Überlegung war, dafür ein Cookie zu erzeugen, welches auf allen Seiten ausgewertet wird und die HTTP_ACCEPT_LANGUAGE Festlegung überschreibt.

    Es würde mich nun interessieren, ob es dazu alternative Vorschläge gibt, die evtl. auch ohne Cookies funktionieren.

    Vielen Dank im voraus für Eure Vorschläge.

    Ach, und noch was:
    Ich bilde mir ein, ich hätte der irgendwo in Mac Hilfe (oder woanders) so eine Seite gesehen, wo lauter Länderflaggen im runden "Drops"-Look abgebildet waren.
    Weiss jemand vielleicht zufällig, wo das zu finden ist?
     
  9. dms

    dms Gast

    Ich hätte da evtl. einen Vorschlag der ohne Cookies auskommt. Wieder das RewriteRule des Apache verwenden. :)

    /seite.ext bleibt /seite.ext
    /de/seite.ext wird zu /seite.ext?lang=de
    /en/seite.ext wird zu /seite.ext?lang=en
    etc.

    Einmal die Sprache ausgewählt (was sich praktisch nur durch die änderung des Pfades auswirkt) bleibt die sprache aktiv, da alle relativen links ja wieder in den Unterordner zeigen.
     
    Zuletzt von einem Moderator bearbeitet: 30.08.2005
  10. VMPR

    VMPR MacUser Mitglied

    Beiträge:
    1.084
    Zustimmungen:
    30
    Registriert seit:
    17.02.2005
    Ich hab so ziemlich alle Länderflaggen als 18x12 px GIF Dateien im Büro liegen, allerdings eckig, wenn du die brauchen kannst schreib mir kurz ne E-Mail, dann schick ich dir die morgen früh :)
     
Die Seite wird geladen...
Ähnliche Themen - mehrsprachige Website Forum Datum
Javascript im Link zusammen mit Website aufrufen Web-Programmierung 18.09.2012
Ausgabe der Website via XML beeinflussen Web-Programmierung 16.04.2012
Website Performance Untersuchen Web-Programmierung 23.08.2011
Videos vom eigenen Webspace in die Website einbinden..? Web-Programmierung 17.08.2010
CMS mit Support für Mehrsprachige Sites Web-Programmierung 11.12.2005

Diese Seite empfehlen

Benutzerdefinierte Suche