HTML5 - Sprachwechsel (automatisch und per Tab)

  • Was muss meine Funktion können?

    Die Funktion soll die übermittelten verfügbaren Sprachen aus dem Browser auslesen, idealer Weise nach Priorität sortiert.


    Diese Sprachen sollen mit den erlaubten Sprachen verglichen werden. Die erste verfügbare Sprache, die erlaubt ist, soll meine Sprache sein.

    Wird keine verfügbare Sprache in den erlaubten gefunden, soll meine Standardsprache verwendet werden.

    Dies ist mir klar. Das Verständnis dafür ist, vermute ich, durchaus da. Mir geht es jedoch klar an dem technischen Verständnis im HTML-Bereich. (meine 'Kenntnisse' sind ein paar lachhafte HTML-Lektionen in der Berufsschule gefolgt von vielen langen und mittel erfolgreichen Stunden des herumprobierens)


    Die Nutzung selber wäre allerdings relativ simpel:

    Das mag es für Dich sein, für mich ist es dies leider, noch nicht - wie gesagt

    etwas ausserhalb von meinen Möglichkeiten..



    Weitergehende Erklärungen spare ich mir erstmal, weil Du es vermutlich eh nicht nutzen wirst.

    Die ist, vor allem für mich, natürlich schade. Auch wenn ich nicht genau weiss inwiefern diese Aussage hier nützlich erscheinen sollte.

    Mich freut jede Hilfe sehr, die Sprachumschaltung ist ein Thema das ich, mangels Fachwissen, schon länger vor mir her schiebe. Dass das Ziel jetzt so 'nahe' ist freut mich noch mehr.

  • Selbstverständlich, dafür gibt es zwei Möglichkeiten:

    • Serverseitig in einer Sessionvariablen oder
    • Clientseitig im Session- oder Localstorage, je nachdem, welches Verhalten gewünscht ist

    Ich habe kurz gegoogelt und versucht die Vorteile/Nachteile abzuwägen.

    • Bei der Serverseitigen Sessionsvariablen ist es 'nur' bis zum Ende der Sitzung gespeichert, wenn ich dies richtig verstanden habe? Dies ist toll, noch besser wäre natürlich eine 'dauerhafte' Speicherung.
    • Client-Session vermute ich wie oben?
    • Client-Local, da ist vermutlich eine längerfristige Speicherung möglich?

    Die Speicherplatz-Einschränkung wird für diesen Fall keine Hindernisse darstellen..


    Wie sieht denn der Aufwand und die Kompatibilität (Gerät/Browser) aus? Oder hast Du eine Empfehlung was Du vorschlagen würdest?

  • sessionStorage heißt, dass der Wert nur während einer Browsersitzung gespeichert wird, localStorage dagegen dauerhaft.

    Da dir eine dauerhafte Speicherung lieber wäre, habe ich es mal mit localStorage implementiert und bin selbst überrascht, wie einfach es ist:

    Das Skript musst Du am Ende des Body, vor dem schließenden </body>, einfügen.

    Ich bin mir noch nicht sicher, ob man dort ein try-catch braucht; ich glaube, mich zu erinnern, dass es in einem anderen Projekt zu einem Laufzeitfehler kam, wenn localStorage nur deaktiviert war, obwohl der Browser es unterstützte. Sollten wir mal beobachten.

  • Wenn Du alles verstehen würdest, hättest Du die Frage nicht gestellt und Dir wirft auch dahingehend niemand etwas vor.

    Du hast Dich aber für einen Weg entschieden, von dem man Dich leider nicht abholen kann, wie es scheint. Das ist der einzige Grund, warum ich mein Beispiel nicht im Detail hier ausführe. Du reagierst in diesem Thread fast ausschließlich auf die Beiträge von Sempervivum, der Dir zwar sehr intensiv hilft, aber die Lösung aus meiner Sicht leider nicht gut ist.


    Das ist aber Deine Entscheidung, ich versuche nur einen alternativen Lösungsansatz darzustellen, bin aber keineswegs böse oder enttäuscht, wenn Du daran Mangels Verständnis nicht interessiert bist. Ich bastel halt niemandem die Lösungen vor, wie es hier gerade passiert. Ist nebenbei bemerkt auch ziemlich spooky, wenn man bedenkt, dass die helfende Person das Forum mal mit Pauken und Trompeten verlassen hat, weil er diese Lösungshilfe anderer Forenmitglieder verteufelt hat.


    Aber was solls, jeder muss wissen, was er tut.

    :)

  • Du hast Dich aber für einen Weg entschieden, von dem man Dich leider nicht abholen kann, wie es scheint. Das ist der einzige Grund, warum ich mein Beispiel nicht im Detail hier ausführe. Du reagierst in diesem Thread fast ausschließlich auf die Beiträge von Sempervivum, der Dir zwar sehr intensiv hilft, aber die Lösung aus meiner Sicht leider nicht gut ist.


    Die Entscheidung meines Weges basiert nur auf der Tatsache, dass ich eine Chance habe das ganze am Schluss auf meiner Website zu verwenden.

    Ich bastel halt niemandem die Lösungen vor, wie es hier gerade passiert. Ist nebenbei bemerkt auch ziemlich spooky, wenn man bedenkt, dass die helfende Person das Forum mal mit Pauken und Trompeten verlassen hat, weil er diese Lösungshilfe anderer Forenmitglieder verteufelt hat.

    Das verstehe ich und respektiere Deine Sicht. Für persönliche Differenzen ist mein Thread jedoch vielleicht nicht der richtige Austragungsort..



    Da dir eine dauerhafte Speicherung lieber wäre, habe ich es mal mit localStorage implementiert

    Das funktioniert grossartig, zwar ist es nur auf der aktuelle Session basieren, bei einer Aktualisierung der Seite fällt die Sprache auf die Browsersprache zurück - ist dies Absicht?

  • Zitat

    bei einer Aktualisierung der Seite fällt die Sprache auf die Browsersprache zurück - ist dies Absicht?

    Nein, so sollte es genau nicht sein, beim Aktualisieren der Seite oder Aufruf einer anderen sollte die manuelle Auswahl erhalten bleiben und das hat mit meiner Testdatei auch funktioniert. Beschreibe mal deine Testbedingungen: Welcher Browser, lokaler Test mit oder ohne Webserver, gibt die Console irgend welche Anhaltspunkte?

  • Nein, so sollte es genau nicht sein, beim Aktualisieren der Seite oder Aufruf einer anderen sollte die manuelle Auswahl erhalten bleiben und das hat mit meiner Testdatei auch funktioniert. Beschreibe mal deine Testbedingungen: Welcher Browser, lokaler Test mit oder ohne Webserver, gibt die Console irgend welche Anhaltspunkte?

    Sorry, das war falscher Alarm oder vielleicht ein Problem mit meinem Browser. Es läuft alles - danke vielmals! :love:

  • Guten Morgen! Eine Frage tat sich die Tage noch auf, ein Teil des php-Teils im Head verursacht einen weissen Balken ganz oben auf der Website. Ich habe versucht herauszufinden welcher Teil es genau ist - der Code sieht aktuell so aus



    Wenn ich diesen Teil entferne ist der Balken weg

    Code
    $displayed_languages = array_unique($available_languages);


    Hast Du eine Idee wie der Balken ausgelöst werden könnte..?

  • Aus der Variablen $displayed_languages werden die Inputs für die Sprachumschaltung generiert. Ich vermute stark, wenn Du diese Zeile löschst, funktioniert die ganze Umschaltung nicht mehr?

    Um zu sehen, was den Balken verursacht, müsste man das HTML und das CSS sehen. Poste das doch mal bitte, d. h. nicht das PHP sondern das generierte HTML aus der Quelltextansicht des Browsers. Oder noch besser, die URL der Seite, falls Du sie online hast.

    Tipp ins Blaue: Hast Du die Inputs vielleicht mit visibility: hidden; unsichtbar gemacht?

  • Selbstverständlich, dann geht nix mehr. Es war nur für mich um herauszufinden ob ich irgendwo einen Fehler gemacht habe beim Include oder so..

    Du findest die Website hier: [hidden]

    Das Template ohne den lustigen Balken oben hier: https://html5up.net/uploads/demos/prologue/


    Zitat

    Tipp ins Blaue: Hast Du die Inputs vielleicht mit visibility: hidden; unsichtbar gemacht?

    Nicht, dass ich wüsste :saint:



    Ich habe es versucht es mit den Entwicklertools von Chrome zu identifizieren, damit kam ich jedoch nicht weiter.

  • Guten Morgen zusammen!

    Ich stecke nochmals an einer Ecke fest, bei der Mobilversion lässt sich die Sprache nicht umschalten - bei der Desktopversion funktioniert es prächtig. Ich habe das Gefühl es hängt mit der aufpoppenden Navi zusammen, komme jedoch nicht dahinter. Ich habe den Code angehängt.

    Hat jemand eine Idee?

  • Da wird durch das Skript in utils.js in Zeile 113 die Default-Aktion für den Klick unterdrückt. Deaktiviere das preventDefault() und es sollte funktionieren:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!