Contao-Camp 2024
Ergebnis 1 bis 17 von 17

Thema: Problem bei changelanguage mit einer Domain je Sprache

  1. #1
    Contao-Nutzer Avatar von Joern
    Registriert seit
    14.09.2018.
    Beiträge
    130

    Standard Problem bei changelanguage mit einer Domain je Sprache

    Für eine zweisprachige Webseite nutze ich je Sprache eine Domain:

    www.example.com für die englische Seite
    www.beispiel.de für die deutsche Seite

    Zusätzlich habe ich in den Einstellungen "prepend_locale: true" eingestellt, damit die Sprache angehängt wird. Bei den Domains ist die Sprache jeweils als Sprachenfallback eingetragen.

    So werden die deutschen Seiten unter
    www.beispiel.de/de/
    und die englischen Seiten unter
    www.example.com/en/
    ausgeliefert.

    Das funktioniert bis hierhin auch zuverlässig.

    Nun möchte ich jedoch Besuchern, die mit einem deutschprachigen Browser die englische Domain ansteuern, unter
    www.example.com/de/
    in Deutsch einen Hinweis auf die deutschsprachige Domain anzeigen und ebenso auch englischsprachigen Browsern bei Besuch der deutschen Domain unter
    www.beispiel.de/en/
    einen Hinweis in Englisch auf die englischsprachige Domain anzeigen.

    Leider funktioniert dies nicht. Sobald ich einen dieser beiden zusätzlichen Startpunkte einer Webseite eintrage, erhalte ich im Frontend eine Fehlermeldung "Es ist ein Fehler aufgetreten ... Bei der Ausführung des Skriptes ist ein Fehler aufgetreten. ..." im Webbrowser bei Aufruf jeglicher Webseiten. Im Logfile stehen die folgenden Fehler:

    [2018-10-24 06:28:12] request.CRITICAL: Uncaught PHP Exception RuntimeException: "Multiple root pages for the language "en" found" at /pathtowebsite/contao/vendor/terminal42/contao-changelanguage/library/Terminal42/ChangeLanguage/Navigation/NavigationFactory.php line 108 {"exception":"[object] (RuntimeException(code: 0): Multiple root pages for the language "en" found at /pathtowebsite/contao/vendor/terminal42/contao-changelanguage/library/Terminal42/ChangeLanguage/Navigation/NavigationFactory.php:108)"} []

    Ich setze Contao Version 4.6.6 ein.

    Wie kann ich dies lösen?

    Jörn
    Geändert von Joern (24.10.2018 um 08:39 Uhr)

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Poste mal die Einstellungen deiner Startpunkte. Ich habe dein Problem nicht nachstellen können.

  3. #3
    Contao-Nutzer Avatar von Joern
    Registriert seit
    14.09.2018.
    Beiträge
    130

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Poste mal die Einstellungen deiner Startpunkte. Ich habe dein Problem nicht nachstellen können.
    Hier die Einstellungen für die vier Startpunkte:


    beispiel.de (Hauptseite in Deutsch)
    Name und Typ:
    Seitenname: beispiel.de
    Seitenalias: startpunkt-de-beispiel-de
    Seitentyp: Startpunkt einer Webseite

    Metadaten:
    Seitentitel: beispiel.de

    DNS-Einstellungen:
    Domainname: www.beispiel.de
    HTTPS verwenden: ja
    Sprache: de
    Sprachen-Fallback: ja
    Fremd-Domain-Hauptsprache: Dies ist die Hauptdomain


    example.com (Hauptseite in Englisch)
    Name und Typ:
    Seitenname: example.com
    Seitenalias: startpunkt-en-example-com
    Seitentyp: Startpunkt einer Webseite

    Metadaten:
    Seitentitel: example.com

    DNS-Einstellungen:
    Domainname: www.example.com
    HTTPS verwenden: ja
    Sprache: en
    Sprachen-Fallback: ja
    Fremd-Domain-Hauptsprache: www.beispiel.de [de]



    beispiel.de (Hinweis in Englisch)
    Name und Typ:
    Seitenname: Startpunkt EN beispiel.de
    Seitenalias: startpunkt-en-beispiel-de
    Seitentyp: Startpunkt einer Webseite

    Metadaten:
    Seitentitel: beispiel.de

    DNS-Einstellungen:
    Domainname: www.beispiel.de
    HTTPS verwenden: ja
    Sprache: en
    Sprachen-Fallback: nein
    (Fremd-Domain-Hauptsprache: diese Einstellungsoption wird hier gar nicht angezeigt)


    example.com (Hinweis in Deutsch)
    Name und Typ:
    Seitenname: Startpunkt DE example.com
    Seitenalias: startpunkt-de-example-com
    Seitentyp: Startpunkt einer Webseite

    Metadaten:
    Seitentitel: example.com

    DNS-Einstellungen:
    Domainname: www.example.com
    HTTPS verwenden: ja
    Sprache: de
    Sprachen-Fallback: nein
    (Fremd-Domain-Hauptsprache: diese Einstellungsoption wird hier gar nicht angezeigt)


    Sobald ich den dritten und/oder vierten Startpunkt veröffentliche, kommt der Fehler. Die Startpunkte sind in genau dieser Reihenfolge im Backend angelegt.
    Eine dritte Domain, die ebenfalls im gleichen CMS angelegt ist, läßt sich weiterhin aufrufen, auch wenn bei obigen Domains der Fehler auftritt. Diese dritte Domain ist aber auch unabhängig von den obrigen.

    Jörn

  4. #4
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Hallo Jörn,
    warum das nicht funktioniert kann ich dir nicht sagen. Ich hätte das aber wahrscheinlich anders versucht:
    - für jede Domain natürlich ein eigener Startpunkt
    - im Layout (z.B. im Header) ein Element mit Link auf die jeweils andere Domain. Dieses Element müsste man auch sprachabhängig ausblenden können (z.B. mit Inserttags)

    Nur so als Alternative...

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

    Support Contao

    Standard

    Die Fehlermeldung lese ich so, dass changelanguage wohl (insgesamt!) nur einen Startpunkt pro Sprache erwartet. Ich hab es lange nicht mehr verwendet und noch nie mit mehreren Domains, schon gar nicht mit mehreren Startpunkten mit der selben Sprache. Ist das überhaupt vorgesehen seitens changelanguage?

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Ok, ich denke deine Konfiguration ist nicht von der changelanguage Extension vorgesehen. Weil wie der Fehler schon sagt hättest du jetzt zwei mal Englisch und zwei mal Deutsch.

    Du brauchst entweder

    Pro Sprache je eine Domain

    oder

    Nur eine Domain mit mehreren Sprachen (können auch mehrere Domains sein, die aber nicht miteinander verknüpft sind)

  7. #7
    Contao-Nutzer Avatar von Joern
    Registriert seit
    14.09.2018.
    Beiträge
    130

    Standard

    Zitat Zitat von folkfreund Beitrag anzeigen
    - im Layout (z.B. im Header) ein Element mit Link auf die jeweils andere Domain. Dieses Element müsste man auch sprachabhängig ausblenden können (z.B. mit Inserttags)
    Darauf wird es dann wohl auch hinauslaufen müssen. Da ich eigentlich schon die Spracherkennung frei Haus bekomme, wäre es halt viel schöner, dierekt auf einer eigenen (Start)Seite den Besucher zu empfangen und auf die jeweils andere Domain in seiner Sprache zu verweisen.

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    An deiner Stelle würde ich es so machen:

    Keinen Sprachparameter in der URL.

    Ein eigenes PHP Script einbinden, dass die Accept-Language des Requests überprüft und, je nach Cookie, ein Overlay anzeigt (oder sonst irgendwas auf der Seite), dass den User auf die andere Domain hinweist und bei Bestätigung (bzw. zur Kenntnisnahme) ein Cookie setzt.


    Aber brauchst du das alles überhaupt? Du hast ja sowieso den Sprachwechsler. Wenn jetzt ein Englischer Besucher auf die Deutsche Seite kommt, wird er ja vermutlich den Sprachenwechsler sehen und bedienen.

  9. #9
    Contao-Nutzer Avatar von Joern
    Registriert seit
    14.09.2018.
    Beiträge
    130

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ok, ich denke deine Konfiguration ist nicht von der changelanguage Extension vorgesehen. Weil wie der Fehler schon sagt hättest du jetzt zwei mal Englisch und zwei mal Deutsch.
    Interessanterweise wird das im Backend beim Sprachwechsel auch so angezeigt, da kann ich alle vier Varianten auswählen. Ich muß mir halt nur merken, daß die ersten beiden Sprachen die Hauptsprachen sind und die letzten beiden nur für die Verweise verwendet werden. So halb unterstützt changelanguage meinen Anwendungsfall also zumindest unbewußt.

    Zitat Zitat von Spooky Beitrag anzeigen
    Du brauchst entweder
    Pro Sprache je eine Domain
    Darauf wird es auch hinauslaufen, da der Domainname der Begriff in der jeweiligen Sprache ist.

    Zitat Zitat von Spooky Beitrag anzeigen
    oder
    Nur eine Domain mit mehreren Sprachen (können auch mehrere Domains sein, die aber nicht miteinander verknüpft sind)
    Diese Variante habe ich in einem anderen Fall im Einsatz, kommt hier aber weniger in Frage.

  10. #10
    Contao-Nutzer Avatar von Joern
    Registriert seit
    14.09.2018.
    Beiträge
    130

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    An deiner Stelle würde ich es so machen:

    Keinen Sprachparameter in der URL.
    Den Sprachparameter würde ich dann aber bei allen Domains in dieser Contao-Installation verlieren. Leider läßt sich bisher nicht pro Domain individuell auswählen, ob der Sprachparameter in der URL gewünscht wird oder nicht.

    Zitat Zitat von Spooky Beitrag anzeigen
    Ein eigenes PHP Script einbinden, das die Accept-Language des Requests überprüft und, je nach Cookie, ein Overlay anzeigt (oder sonst irgendwas auf der Seite), das den User auf die andere Domain hinweist und bei Bestätigung (bzw. zur Kenntnisnahme) ein Cookie setzt.
    Gibt es da schon was als Erweiterung, was ich ggf. dafür einsetzen könnte? Das klingt für mich auf den ersten Blick als aufwendigste Lösung. Dafür müßte ich dann komplett selbst programmieren, um auf einen Cookie zuzugreifen und ihn zu setzen?

    Zitat Zitat von Spooky Beitrag anzeigen
    Aber brauchst du das alles überhaupt? Du hast ja sowieso den Sprachwechsler. Wenn jetzt ein Englischer Besucher auf die Deutsche Seite kommt, wird er ja vermutlich den Sprachenwechsler sehen und bedienen.
    Es geht sicherlich auch so, aber es wäre eben das i-Tüpfelchen, den Besucher direkt auf einer einzelnen Seite in seiner Sprache zu empfangen.

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Zitat Zitat von Joern Beitrag anzeigen
    Den Sprachparameter würde ich dann aber bei allen Domains in dieser Contao-Installation verlieren. Leider läßt sich bisher nicht pro Domain individuell auswählen, ob der Sprachparameter in der URL gewünscht wird oder nicht.
    Achso, du hast noch andere Domains wo du das brauchst. Ja, dann musst du ihn behalten, aber das stört ja ansonsten nicht weiter.



    Zitat Zitat von Joern Beitrag anzeigen
    Gibt es da schon was als Erweiterung, was ich ggf. dafür einsetzen könnte? Das klingt für mich auf den ersten Blick als aufwendigste Lösung. Dafür müßte ich dann komplett selbst programmieren, um auf einen Cookie zuzugreifen und ihn zu setzen?
    Ja, müsstest du selbst programmieren.

  12. #12
    Contao-Nutzer Avatar von Joern
    Registriert seit
    14.09.2018.
    Beiträge
    130

    Standard

    Das Problem läßt mich noch nicht los. Folgendes Szenario:

    Die ersten beiden Startpunkte (mit dem eigentlichen Inhalt) sind veröffentlicht. Der dritte und vierte Startpunkt (mit den Hinweisseiten) sind nicht veröffentlicht.

    Wenn ich in der Contao-Vorschau "Unveröffentlichte Elemente: anzeigen" auswähle, kann ich die Hinweisseiten unter dem dritten und vierten Startpunkt anschauen und auch der Sprachenwechsler von changelanguage wird da mit eingebunden. In diesem Fall ist dann allerdings keine der beiden Sprachen DE bzw. EN als aktiv gekennzeichnet, sondern beides sind URLs auf die ersten beiden Startpunkte, was soweit auch paßt. Prinzipiell müßte es also funktionieren können, so wie ich es mir vorgestellt habe.

    Nur leider scheitert es in dem Moment, wenn ich diese Startpunkte veröffentliche.

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Die Extension sucht vermutlich nur nach veröffentlichten Startpunkten. Sobald du deine zusätzlichen Startpunkten veröffentlichst gibt es dann keine eindeutige Sprachzuordnung mehr und daher kommt es zu dem Fehler.

  14. #14
    Contao-Nutzer Avatar von Joern
    Registriert seit
    14.09.2018.
    Beiträge
    130

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Die Extension sucht vermutlich nur nach veröffentlichten Startpunkten. Sobald du deine zusätzlichen Startpunkten veröffentlichst gibt es dann keine eindeutige Sprachzuordnung mehr und daher kommt es zu dem Fehler.
    Genau so ist es. In der Datei NavigationFactory.php, wo der Fehler auftritt, werden unveröffentlichte Startpunkte in der foreach-Schleife einfach übersprungen.

    Meine, wenn auch nicht sehr schöne, Lösung sieht jetzt so aus, anstelle die Fehlermeldung auszugeben und das Skript zu beenden, einfach auch bei Auffinden eines weiteren Startpunktes für die gleiche Sprache in der foreach-Schleife mittels "continue" den weiteren auftretenden Eintrag zu überspringen. So wird letztendlich nur der erste aufgefundene Startpunkt einer Sprache berücksichtigt.

    Updatesicher ist diese Vorgehensweise nicht, denn bei einem Update von changelanguage wird die von mir modifierte Datei NavigationFactory.php sicherlich einfach überschrieben.

    Noch nicht genauer getestet habe ich, ob die Reihenfolge, welche Startpunkte als erstes auftreten, von den IDs der Startpunkte oder der Reihenfolge im Backend abhängt. Ich tippe aber auf letzteres.

    Jörn

  15. #15
    Contao-Fan Avatar von bjarke
    Registriert seit
    07.06.2011.
    Beiträge
    351
    Partner-ID
    5067

    Standard

    Wenn du den Fehler hier meldest, besteht die Möglichkeit, dass er behoben wird und du dir beim nächsten Update keine Sorgen machen musst.

  16. #16
    Contao-Nutzer Avatar von Joern
    Registriert seit
    14.09.2018.
    Beiträge
    130

    Standard

    Zitat Zitat von bjarke Beitrag anzeigen
    Wenn du den Fehler hier meldest, besteht die Möglichkeit, dass er behoben wird und du dir beim nächsten Update keine Sorgen machen musst.
    Momentan schwanke ich noch, ob es sich um einen Fehler oder einen Feature-Request handelt. Mein Szenario wäre wohl ein neues, viertes Szenario für den Einsatz von changelanguage.

    Bin gerade in meinem Setup noch über einen merkwürdigen Effekt bezüglich der Fehlerseite 404 gestolpert, den ich noch näher untersuchen muß. Es scheint auch was mit der Sprache zu tun zu haben, aber vermutlich nicht direkt mit changelanguage. Es wird langsam Zeit, eine Contao-Testinstallation für Experimente mit mehreren Sprachen aufzusetzen, um die Effekte noch genauer zu untersuchen.

  17. #17
    Contao-Nutzer Avatar von Joern
    Registriert seit
    14.09.2018.
    Beiträge
    130

    Standard

    Zitat Zitat von Joern Beitrag anzeigen
    Bin gerade in meinem Setup noch über einen merkwürdigen Effekt bezüglich der Fehlerseite 404 gestolpert, den ich noch näher untersuchen muß. Es scheint auch was mit der Sprache zu tun zu haben, aber vermutlich nicht direkt mit changelanguage.
    Der Effekt mit der Fehlerseite 404 ist unabhängig von changelanguage. Ich habe dazu ein eigenes Thema gestartet:
    https://community.contao.org/de/show...ache-angezeigt

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
  •