Zum Inhalt springen

Typo3 9.5.2 / Typoscript: sys_language_mode = content_fallback funktioniert nicht bzw. page not found

Erstellt am 12. Dezember 2018 · 3 Antworten · letzte Antwort am 6. Mai 2019

Tags: Weiterleitungen & 404, TYPO3 9, Frage

mranguish ·

Hi. Ich habe eine weitere Sprache zu meiner Homepage hinzugefügt, ebenso zur sites Konfiguration mit /en/ als entry point. Wenn ich z.B. zu meiner Startseite eine Übersetzung hinzufüge und dann auf die en Sprache wechlse funktiert es wunderbar, abgesehen davon, dass es keinen Fallback auf die Inhalte der Standardsprache gibt, wenn es keine Übersetzung der einzelnen Inhaltselemente gibt. Wenn ich jetzt aber eine andere Seite aufrufe, die keine Übersetzung hat, z.B. /en/kontakt.html, bekomme ich eine 404 page not found exception. Hier meine Konfigurationen:

    page = PAGE
    page {
        typeNum = 0
        config {
            absRefPrefix = /
            no_cache = 1
            noPageTitle = 1
            linkVars = L(0-10)
            language = de
            locale_all = German
            htmlTag_langKey = de-DE
            sys_language_uid = 0
            sys_language_mode = content_fallback
            sys_language_overlay = 1
    }

    [globalVar = GP:L=1]
    page.config {
        sys_language_uid = 1
    }
    [global]

my sites config:

    rootPageId: 2
    base: 'http://some-domain.de/'
    baseVariants: {  }
    languages:
      -
        title: 'Meine tolle Webseite'
        enabled: true
        languageId: '0'
        base: /
        typo3Language: de
        locale: de_DE.UTF-8
        iso-639-1: de
        navigationTitle: ''
        hreflang: ''
        direction: ''
        flag: de
      -
        title: 'Andere Sprache'
        enabled: true
        languageId: '1'
        base: /en/
        typo3Language: en
        locale: en_US.UTF-8
        iso-639-1: en
        navigationTitle: ''
        hreflang: ''
        direction: ''
        fallbackType: fallback
        fallbacks: '0'
        flag: en
    errorHandling: {  }
    routes: {  }
    routeEnhancers:
      PageTypeSuffix:
        type: PageType
        default: .html
        map:
          .html: 0
thomasharz ·

Das Problem existiert auch in Version 9.5.3. Es liegt nicht an der Siteconfig, die generiert wird. Ich hab anderswo dazu eine Lösung gefunden.

Du musst in der Datei typo3\sysext\core\Classes\Context\LanguageAspectFactory.php die Funktion createFromSiteLanguage ändern.

public static function createFromSiteLanguage(SiteLanguage $language): LanguageAspect
    {
        $languageId = $language->getLanguageId();
        $fallbackType = $language->getFallbackType();
        if ($fallbackType === 'fallback') {
            $fallbackOrder = $language->getFallbackLanguageIds();
            $fallbackOrder[] = 'pageNotFound';
            $overlayType = LanguageAspect::OVERLAYS_MIXED;
        } elseif ($fallbackType === 'strict') {
            $fallbackOrder = [];
            $overlayType = LanguageAspect::OVERLAYS_ON_WITH_FLOATING;
        } else {
            $fallbackOrder = [0];
        }

        return GeneralUtility::makeInstance(LanguageAspect::class, $languageId, $languageId, $overlayType, $fallbackOrder);
    }

siehe auch: https://forge.typo3.org/issues/86762

Thomas

wok ·

In Version 9.5.4 existiert der Fehler auch noch.
Der Patch https://review.typo3.org/#/c/59344/ behebt den Fehler für die fehlenden Content Elemente auf einer Seite.

Leider existiert darüberhinaus noch das Problem, dass Seiten, für die weder Content Elemente noch eine lokalisierte Seite angelegt wurde, einen 404-Fehler erzeugen, Beispiel:

1. Sprache Deutsch
2. Sprache Englisch
Man befindet sich auf der Website auf einer englischen Seite und klickt einen Link zu einer Seite, für die noch keine Seitenübersetzung in Englisch vorgenommen wurde. Ergebnis: 404-Fehler.

Der Fehler ist m.E. gravierend. Gab es auch schon bei früheren Versionssprüngen, wenn ich mich richtig erinnere. Ein Lösung hierfür wäre schön!