Ergebnis 1 bis 7 von 7

Thema: Grundsätzliches zur Mehrsprachigkeit in Contao-Modulen

  1. #1
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard Grundsätzliches zur Mehrsprachigkeit in Contao-Modulen

    Hallo zusammen,

    ich habe mal eine grundlegende Frage zum Thema Mehrsprachichkeit in Contao.
    Meine Situation: Es existiert ein Modul, welches im languages Ordner ein paar Beschriftungen für Button-Labels und ähnliches hat: "languages/de/default.php" (sowohl auf "de" als auch auf "en").
    Zusätzlich habe ich nun eine Funktion geschrieben, die je nachdem was in $GLOBALS['TL_LANGUAGE'] steht ein Template "de_template.html5" oder ein "en_template.html5" lädt.

    Das blöde ist, dass in 100% der Fälle das de-Template geladen wird.
    Ich habe bereits für Firefox die "Quick Locale Switcher" Erweiterung installiert und auch den Browser in der englischen Version ausprobiert.
    Auch das Umstellen der Systemsprache (Windows 7) bracht keine Änderung.

    Dazu sei gesagt, dass ich lediglich eine Seitenstruktur habe, bei der die Sprache auf "de" eingestellt ist.
    Stelle ich hier auf "en" wird auch sofort mein englisches Template geladen.
    Grund für die eine Seitenstruktur: Ich habe keine Lust jede Seite doppelt (oder noch öfter) anzulegen, da ich den Seiteninhalt ohnehin nur aus meinen Templates beziehe und Inhalte nicht direkt in die Artikel auf den Seiten schreibe.

    Nun ist es mehr oder weniger offensichtlich, dass die Variable "TL_LANGUAGE" lediglich den in der aktuell aktiven Seitenstruktur definierten Sprach-Wert beinhaltet.
    Gibt es einen Weg, um die Sprache, die im Browser / im System definiert ist, auszulesen und daraufhin das dazugehörige Template zu laden und auch die Werte in den languages/de/default.php Dateien zu verwenden?

    Oder komme ich in keinem Fall um das Anlegen mehrerer Seitenstrukturen herum, auch wenn diese alle 1:1 identisch zueinander sind, bis auf die eingestellte Sprache?
    Getestet wird das Ganze zurzeit lokal über einen XAMPP-Apachen.

    Danke und Viele Grüße
    *igi*

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Dann musst du halt schauen was in
    Code:
    $_SERVER['HTTP_ACCEPT_LANGUAGE']
    steht, eventuell musst du den dortigen String aber noch parsen, denn da kann mehr als nur "de" oder "en" stehen.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    539

    Standard

    Oder besser die Contao-API verwenden mit
    PHP-Code:
    \Environment::get('httpAcceptLanguage'

  4. #4
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard

    Ah okay. Da steht tatsächlich das Sprachkürzel drinnen. Unterschiedlich je nachdem welchen Browser in welcher Sprache ich verwende.
    Für das manuelle Laden des Templates also evtl. zu gebrauchen. Fraglich ist nur, ob meine Sprachdateien im languages Ordner damit auch irgendwie geladen werden können.

    Grundsätzlich habe ich mal wieder das Gefühl, meilenweit am Contao Standard vorbeizuarbeiten. Gibt es wirklich nur den einen "richtigen" Weg, über die verschiedenen Seitenstruktur-Elemente zu gehen?
    Gibt es nicht auch einen Weg, durch den ein Modul selbst prüft welche Sprachversion benötigt wird und dementsprechend die korrekten Dateien ausliefert?
    Tatsächlich gehen die meisten Tutorials die ich mir hierzu angesehen habe den Weg, einfach mehrere Startpunkte einer Webseite anzulegen. Was für mich leider sehr ungünstig wäre.

  5. #5
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #6
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Am Contao Standard arbeitest du natürlich schon vorbei, aber ohne Näheres über die Seite zu wissen, ist es natürlich schwierig zu beurteilen, ob dein Weg wirklich der einzig gangbare Weg ist. An Google und anderen Suchmaschinen programmierst du nebenbei auch vorbei, die mögen diese Variante, mehrere Sprachen nur abhängig von der Browsereinstellung und nicht durch die URL unterscheidbar, nicht besonders. Woher soll der GoogleBot auch wissen, welche Spracheinstellungen er wählen muss, um alle deine Sprachversionen gecrawlt zu bekommen? Und welche Version soll dann für die URL im Index landen?

    Ich zitiere mal Google:
    Weisen Sie den Content für jede Sprache einer separaten URL zu. Verwenden Sie keine Cookies, um die übersetzten Versionen anzuzeigen. Verlinken Sie nach Möglichkeit die einzelnen Sprachversionen einer Seite. Ein französischer Nutzer, der auf der deutschen Version Ihrer Seite landet, kann so mit einem einzigen Mausklick zur richtigen Sprachversion gelangen.

    Vermeiden Sie automatische Weiterleitungen auf Grundlage der vom Nutzer gewählten Spracheinstellung. Durch diese Weiterleitungen können Nutzer (und Suchmaschinen) möglicherweise nicht alle Versionen Ihrer Website aufrufen.
    Du verwendest zwar keine Weiterleitungen, aber die Problematik ist die selbe. Und mit einer Verlinkung der anderen Sprachversionen wirst du dich schwer tun.

  7. #7
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard

    Gut, das mit Goole ist natürlich ein Punkt. Den hatte ich bisher zu wenig bedacht.
    Von der Struktur her ging es mir darum, eine eigene Contao Erweiterung, also ein Modul, mit mehreren Sprachen auszustatten. Diese Erweiterung hat ein Template für die FE-Ausgabe und zusätzlich die herkömmlichen Language-Dateien (languages/de/default.php).

    Ich bin bisher davon ausgegangen, dass es genügt diese in Deutsch und Englisch vorzuhalten und Contao würde diese dann je nach Anwendungsfall bzw. Systemsprache laden. Aber da habe ich es mir wohl etwas zu einfach gemacht.
    Ich werde daher, in den Fällen bei denen ich es benötige, eine neue Seitenstruktur für die jeweiligen Sprachen anlegen und das Modul mit seinem Template dort in eine Seite einbinden.


    Ich danke euch allen für die Antworten!

    VG
    *igi*

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •