Mehrsprachigkeit

    Die kostenpflichtige Erweiterung für die Mehrsprachigkeit kann im Bakehouse Manager installiert werden. Das Anlegen von Sprachen und die Übersetzung der Inhalte kann vom/von der Befüller:in im Front-End durchgeführt werden.

    Mehrsprachigkeit im TypoScript

    Mittels Conditions kann im TypoScript der Code markiert werden, der nur für eine bestimmte Sprache relevant sein soll. Eine Einführung in die Typoscript Grundlagen findest du hier

    Im folgenden Beispiel wird der Inhalt der Library headline in verschiedenen Sprachen befüllt. Die Sprache wird dabei über die languageId abgefragt. Um die ID einer Sprache herauszufinden, einfach mit der Maus über der Sprache im Sprachmenü ruhen. Im Tooltip wird dann die ID angezeigt.

    Typoscript
    [siteLanguage("languageId") == 1] lib.headline.value = "This is a headline" [global] [siteLanguage("languageId") == 2] lib.headline.value = "Questo è un titolo" [global]

    Es können auch einzelne Worte und Sätze im TypoScript hinterlegt werden, die im Fluid Template flexibel und einfach mit dem f:translate-ViewHelper eingesetzt werden können.

    Typoscript
    plugin.tx_bh._LOCAL_LANG { default{ buchen = book } de { buchen = buchen } it { buchen = prenotare } }

    Template:

    HTML
    <f:translate key="buchen" />

    oder als inline Variante:

    HTML
    {f:translate(key:'buchen')}

    Automatisch die Browsersprache erkennen

    Das Bakehouse wird die Sprache der Benutzer:innen aufgrund der eingestellten Systemsprache erkennen und automatisch auf die entsprechende Sprache weiterleiten. Dieses Feature kann im typo3TYPO3 Back-End unter Sites > Site-Configuration > Languages > Weiterleitung deaktiviert werden.  

    Folgender TypoScript Code aus Version 8.0 ist nicht mehr gültig:

    Typoscript
    config.tx_bh_langDetection = 1 #ungültig v8 deprecated

    Sprachenmenü mit TypoScript konfigurieren

    Mit folgendem Fluid Tag lässt sich das Sprachenmenü im Template platzieren:

    HTML
    <bh:tmpl.navigation typoscriptPath="lib.languagemenu" />

    Die Konfiguration des TypoScripts für das Sprachenmenü schaut wie folgt aus:

    Typoscript
    lib.languagemenu = HMENU lib.languagemenu { special = language special.value = 0,1 special.normalWhenNoLanguage = 0 wrap = <ul class="bh-language-menu">|</ul> 1 = TMENU 1 { # Normal link to language that exists: NO = 1 #NO.allWrap = |*| | <li>|</li> |*| | NO.linkWrap = <li>|</li> #NO.stdWrap.setCurrent = DE || EN #NO.stdWrap.current = 1 NO { stdWrap.override = Deutsch || English #ATagTitle = Deutsch || English doNotLinkIt = 1 stdWrap.typolink.parameter.data = page:uid stdWrap.typolink.additionalParams = &L=0 || &L=1 stdWrap.typolink.addQueryString = 1 stdWrap.typolink.addQueryString.exclude = id,cHash,no_cache stdWrap.typolink.addQueryString.method = GET stdWrap.typolink.useCacheHash = 0 stdWrap.typolink.no_cache = 0 } # Current language selected: ACT < .NO ACT.linkWrap = <li class="active">|</li> # If Language is NOT available: USERDEF1 < .NO USERDEF1.linkWrap = <li class="language-not-translated">|</li> #USERDEF1.doNotLinkIt = 1 } }

    Standardsprache nicht Deutsch

    Es ist möglich das Bakehouse so zu konfigurieren, dass Deutsch nicht die Standardsprache ist. Folgende Einstellungen müssen gesetzt werden, um die Standardsprache auf z. B. Italienisch zu setzen: 

    Typoscript
    config.bakehouseDefaultLanguage { name = Italiano flag = it }

    Zusätzlich muss typo3 TYPO3 Back-End unter Sites > Site-Configuration > Languages die Default-Sprache (erster Eintrag) angepasst werden.

    Achtung: dieser Vorgang ist beim Projektstart vorzunehmen!

    Sprachenkürzel in der URL

    Das Bakehouse verwendet als Default-Verhalten die Default-Sprache ohne Prefix und alle weiteren Sprachen mit dem jeweiligen Sprachkürzel als Prefix.

    Beispiel ohne Prefix (Default)
    www.meine-domain.at/
    www.meine-domain.at/en/

    Beispiel mit Prefix (Default)
    www.meine-domain.at/de/
    www.meine-domain.at/en/

    Dieses Verhalten kann umgestellt werden, in dem man im Back-End unter Sites > Site-Configuration > Languages bei der Default-Sprache entweder / oder /de/ als Entry-Point angiebt.

    Für Seiten, die umgestellt werden und vorher mit dem Sprachkürzel /de/ online waren, empfielt sich eine Weiterleitung aller Seiten mit /de/ auf die Seite ohne dem Sprachpräfix. Um dies umzusetzen, bitte folgende Zeile in der /web/public/.htaccess-Datei hinterlegen.

    Apache Config
    RewriteRule ^de/(.*)$ /$1 [L,NC,R]

    Sprachen nur für angemeldete Benutzer

    Soll eine Sprache noch nicht öffentlich zugänglich sein, kann folgender Abschnitt in die .htaccess-Datei eingefügt werden. Als angemeldeter Benutzer kann die Sprache weiterhin bearbeitet werden.

    Apache Config
    RewriteCond %{HTTP_COOKIE} !bhBackendMode=true; [NC] RewriteCond %{REQUEST_URI} ^/en/ RewriteRule ^(.*)$ / [R,NC,L]

    Nicht übersetzte Seite auf noindex

    Wenn Seiten nicht übersetzt sind und im TypoScript das indexieren dieser Seiten per Key deaktiviert ist, wird noindex ausgegeben und die Seiten tauchen in der Sitemap nicht auf.

    Typoscript
    config.noindexIfNotTranslated = 1