isotope / core

Core repository of Isotope eCommerce, an eCommerce extension for Contao Open Source CMS
https://isotopeecommerce.org
135 stars 107 forks source link

Problem der Fallbacksprache in mehrsprachigen Systemen #1669

Open klauswagner opened 8 years ago

klauswagner commented 8 years ago

Fehlerbeschreibung:

Beim Anlegen der Produkte bleibt die Spalte language leer, egal ob es sich bei dem Verwendeten System um eine Seite mit nur einer Sprache handelt oder um ein System mit mehreren Sprachen und einer definierten Fallbacksprache.

Dies führt zu folgenden Fehlern:

  1. Die Für die Webseite definierte Fallbacksprache ist nicht gleichzeitig Fallbacksprache der Produkte z.B. Webseite de/en/fr Fallback en, Shopprodukte mit den Sprachen Fallback/de/en/fr
  2. Beim löschen von Sprachen (also dem löschen der betreffenden Seitenbäume) werden die entpsrechenden Sprachversionen der Produkte nicht gelöscht. In der folge werden im Frontend nicht die Inhalte des Fallbacks angezeigt, sondern die Inhalte der Sprache des Seitenbaums, also z.B. die alten Inhalte der Sprache de.

    Lösungsvorschlag:

Es wird immer die Sprache mit im Produkt gespeichert. Im Falle eines Systems mit nur einem Startpunkt die Sprache dieses Startpunktes, bei Systemen mit mehreren Startpunkten ohne Fallbacksprache die Sprach des Startpunktes mit der niedrigsten ID und bei Systemen mit mehreren Startpunkten und eingestellter Fallbacksprachen die Sprache des Fallbacks bzw. die des Fallbacks mit der niedrigsten ID

aschempp commented 8 years ago

Die Sprache der Produkte hat nur begrenzt mit den Sprachen der Webseite zu tun. Lediglich die Auswahl wird dadurch gesteuert. Die Fallback-Sprache des Produktes wird immer dann verwendet, wenn es keine entsprechende Übersetzung gibt. Es ist also prinzipiell möglich, die Fallback-Daten in Deutsch einzugeben und zusätzlich eine deutsche Übersetzung zu machen, wobei dann die Übersetzung geladen wird. Entsprechend kann ich keinen Fehler erkennen…

klauswagner commented 8 years ago

@aschempp Der Fehler liegt eben genau da, Contao hat ein Sprachsystem welches auf Seitenbäumen mit Sprachdefinitionen basiert bei welchem einer der Seitenbäume als Fallbacksprache definiert wird (bei Sytemen mit nur einem Domainnamen). Jetzt kommt Isotope welches die verwendeten Sprachen aus den in den Seitenbäumen defnierten Sprachen bezieht, allerdings auch nur dann wenn in den Seitenbäumen mehr wie eine Sprache definiert wurde. Richtig währe es vielmehr von Anfang an den Fallback der Sprachen auf die Sprachen der Seitenbäume zu beziehen, schließlich befinden sich die Produkte nicht im luftlleeren Raum sondern müssen auf der Webseite dargestellt werden. Aber selbst wenn ich den Argumenten von aschempp folge handelt es sich um Bugs. Zum einen da man nicht die Möglichkeit hat vorhandene Sprachversionen eines Produktes auch dann zu pflegen wenn die Zugrundeliegende Sprache nicht im Seitenbaum aufgeführt ist oder der Seitenbaum weniger wie zwei Sprachen hat. Zum anderen gibt es in diesem Fall auch einen Bug im Frontend, da zur Darstellung nicht die als Fallback definierten Inhalte verwendet werden, sondern die nicht mehr aktuellen und nicht pflegbaren Übersetzungen.

aschempp commented 8 years ago

Nochmals: Die Fallback-Sprache der Produkte hat nichts mit der Fallback-Sprache der Seiten zu tun. Mann kann mehrere Seiten-Fallback-Sprachen (für mehrere Domains) haben, aber immer nur eine Isotope-Fallback Sprache.

Der einzige Bug wäre womöglich, dass du zwei Root-Seiten hattest, eine Übersetzung angelegt hast und diese nun nicht mehr bearbeiten kannst. Das könnten wir über einen Integrity-Check (Übersetzungen löschen) beheben.

klauswagner commented 8 years ago

@aschempp Mir ist durchaus klar das die Fallback-Sprache des Isotop nichts mit den Fallbacksprachen der Webseiten zu tun hat. Folgende Konstellation:

1.Seitenbaum, Sprache Deutsch, keine Fallbacksprache definiert (für was auch) Es werden Produkte in Isotop eingepflegt. Für das Produkt gespeicherte Sprache ""

Kunde entscheidet sich er möchte weitere Sprache:

2.Seitenbaum, Sprache Englisch, Fallback wird bei Seitenbaum Deutsch aktiviert.

Redakteure oder Praktikant pflegt Produkte ein, Sprache Deutsch, und Englisch, Fallback ja sowieso, da hier zwingend erforderlich. Soweit alles Gut.

Kunde hat es sich zwischenzeitlich anders überlegt. Sprache deutsch soll rausfliegen. Endgültig wird das System auf Englisch betrieben.

  1. Seitenbaum, Sprache Deutsch wird gelöscht, Falllback bei Englisch wird nicht gesetzt. Jetzt sollen Änderungen an den Texten vorgenommen werden, das erste was dem Redakteur auffällt, ist dass im FE Englische Texte stehen, im Backend aber Deutsche Texte angezeigt werden, Er pflegt die Änderungen im Backend ein und wundert sich warum seine Änderungen im FE nicht angezeigt werden, dort wird nämlich mit nichten der Fallback angezeigt, sondern die Texte bei denen "en" im Feld language stehen.

Auslösen des Integrity-Check, alle nicht mehr benötigen Sprachen werden gelöscht. (Derzeit also alles bei dem das Feld languages != "") Ergebnis, alle Englischen Inhalte die noch nicht überarbeitet wurden sind Weg und wurden durch Deutsche übersetzt.

Wenn das Sprachsystem von Isotop in der Pflege wirklich unabhänig vom übergeordneten Contao sein soll, dann währe die einzig wirklich sinnvolle Verbesserung, die Sprachen für die Inhalte in Isotop pflegbar sein sollen auch dort zu definieren, z.B. Über einen zusätzlichen Punkt Sprachen, hier kann der Benutzer festlegen welche Sprachen in Isotop zur Verfügung stehen sollen und welche dieser Sprachen endgültiger Fallback sein soll. Desweiteren darf es dann auch nicht mehr vorkommen, dass Inhalte aus Isotop die theoretisch Übersetzbar sind nicht ohne Sprachvariable gespeichert werden können, wie es derzeit der Fall ist.

aschempp commented 8 years ago

Ich finde das ist eher ein Konzept-Problem (3x Sprache wechseln…) als ein Bug. Klar, es kann vorkommen, aber wenn man 3x die Sprache wechselt muss man halt Inhalte überarbeiten. Aber man könnte es verbessern, das Ticket steht ja auf "Enhancement" :)

klauswagner commented 8 years ago

@aschempp Mag ein Konzeptproblem sein, ist aber auch leider irgendwie der ganz normale Wahnsinn.