Contao-Camp 2024
Ergebnis 1 bis 10 von 10

Thema: Phrasen in Contao 4 ändern (früher langconfig.php)

  1. #1
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard Phrasen in Contao 4 ändern (früher langconfig.php)

    Früher hat man Textpassagen / Phrasen der Sprachdateien in Contao über die langconfig.php geändert.
    In Contao 4 funktioniert das anders. Da das immer wieder angefragt wird und zur Verwirrung durch alte Anleitungen führt, hier mal eine kurz zusammengefasste aktuelle Anleitung zum Thema:

    In Contao werden Sprachformulierungen in sogenannten xlf-Dateien hinterlegt. Wenn du eine solche Phrase ändern möchtest, machst du das bitte nicht in der Originaldatei, sondern wählst stattdessen den updatesicheren Weg!

    Ein Beispiel:

    Normalerweise werden wiederkehrende Frontend-Mitglieder nach dem Login mit dem Satz "Ihre letzte Anmeldung war 18.09.2018 11:58. Willkommen zurück" begrüßt.

    Da der Satz so nicht wirklich schön klingt, wollen wir zumindest ein "am" einfügen, so dass daraus "Ihre letzte Anmeldung war am 18.09.2018 11:58. Willkommen zurück" wird.

    Der erste Schritt ist, dass wir herausfinden, in welcher Sprachdatei sich die originale Phrase befindet.
    Wenn du sicher bist, dass die Phrase aus Contao selbst kommt (nicht aus einer Dritterweiterung) gehst du am besten einfach auf https://github.com/contao/core-bundle/ und nutzt dort ganz oben die Suchleiste. Gib in die Suchleiste einen Teil der Phrase ein, beispielsweise "Ihre letzte Anmeldung war". Github zeigt dir dann per Autocomplete-Funktion direkt die gefundenen Bereiche an. Wähle laut diesem Beispiel den Autocomplete-Eintrag "Ihre letzte Anmeldung war (in this repository)", damit Github nach der Phrase nur in den Contao-Daten sucht. Voilá, Github zeigt dir an, dass die Phrase in der Datei src/Resources/contao/languages/de/default.xlf gefunden wurde und auch in welcher Zeile. Merke dir die Zeilennummer und klick auf den angezeigten Link zur xlf-Datei.

    Wenn wir uns in der Datei die angegebene Zeile 1330 ansehen, steht dort original dieser Abschnitt:
    Code:
          <trans-unit id="MSC.lastLogin.1">
            <source>Your previous login was %s. Welcome back!</source>
            <target>Ihre letzte Anmeldung war %s. Willkommen zurück!</target>
          </trans-unit>
    Jetzt haben wir alle Infos, die wir benötigen um die Phrase zu überschreiben: Wir wissen welche xlf-Datei es ist - in diesem Fall die default.xlf - und wir kennen den exakten Code des Abschnitts.

    Im zweiten Schritt bauen wir uns nun die updatesichere neue Sprachdatei:
    Verbinde dich per FTP oder Konsole auf den Webspace und geh in das Unterverzeichnis /app/Resources/contao/languages/de/
    /de/ steht für das deutsche Sprachfile. Wenn du lieber z.B. das englische Sprachfile überschreiben möchtest, müsste es stattdessen /en/ sein.
    Wichtig: Falls du bisher noch kein Sprachfile überschrieben hast, existieren die letzten beiden Ordner /languages/de/ im angegebenen Pfad noch nicht. Leg sie einfach an.

    Lege nun mit einem geeigneten Editor (z.B. www.pspad.com/de/ als kostenloser Editor) eine Datei namens default.xlf an. Der Name der Datei muss identisch sein mit dem Originalnamen der Datei die überschrieben werden soll. In diesem Beispiel war das laut dem ersten Schritt die default.xlf. Wenn du aber deine gesuchte Phrase nicht in der default.xlf, sondern z.B. in der modules.xlf gefunden hast, dann musst du jetzt auch korrekterweise die modules.xlf anlegen.

    Meinem Beispiel folgend, befülle ich diese Datei nun mit folgender Angabe:
    Code:
    <?xml version="1.0" ?><xliff version="1.1">
      <file datatype="php" original="src/Resources/contao/languages/en/default.php" source-language="en" target-language="de">
    <body>
    
          <trans-unit id="MSC.lastLogin.1">
            <source>Your previous login was %s. Welcome back!</source>
            <target>Ihre letzte Anmeldung war %s. Willkommen zurück!</target>
          </trans-unit>
          
    </body>
    </file>
    </xliff>
    Die Angaben der ersten Zeilen bis einschließlich <body> und der letzten Zeilen ab </body> sind einfach aus dem Originalfile kopiert. Wenn du eine andere Sprache überschreibst, achte darauf, dass du die entsprechenden korrekten ersten Zeilen aus der Originaldatei übernimmst, damit dort auch der Verweis auf die korrekte Sprache ist!
    Relevant ist der Abschnitt zwischen <body> und </body>. Hierhin habe ich einfach die komplette Sprachphrase (inklusive dem öffnenden <trans-unit ...> und schließenden </trans-unit>) kopiert.

    Jetzt kann ich die Stelle an meine Wünsche anpassen und das Wort "am" ergänzen, so dass nun in der Datei das hier steht:

    Code:
    <?xml version="1.0" ?><xliff version="1.1">
      <file datatype="php" original="src/Resources/contao/languages/en/default.php" source-language="en" target-language="de">
    <body>
    
          <trans-unit id="MSC.lastLogin.1">
            <source>Your previous login was %s. Welcome back!</source>
            <target>Ihre letzte Anmeldung war am %s. Willkommen zurück!</target>
          </trans-unit>
          
    </body>
    </file>
    </xliff>
    Speichere die Datei und lade sie an den oben angegebenen Pfad /app/Resources/contao/languages/de/ (bzw. das entsprechende Pendant, wenn du es in einer anderen Sprache überschreiben willst).

    Der letzte Schritt: Cache leeren

    Rufe nun für die Website den Contao-Manager auf, logge dich ein und wähle dort im Bereich Systemwartung die Option „Cache der Produktionsumgebung leeren“ (dafür vorher auf den Pfeil rechts neben dem Button „Prod-Cache erneuern“ klicken, damit diese Option verfügbar ist).
    Warte bis der Cache geleert ist, log dich vom Manager aus und schau nach, ob deine Sprachänderung erfolgreich war.

    Alternativ kannst du den Cache auch per SSH leeren: vendor/bin/contao-console cache:clear -e=prod oder „zu Fuß“ via FTP den Ordner /var/cache/prod/ leeren.

    Das war es!

    Anmerkungen:
    Mancher wird sich fragen, weshalb ich nicht die PHP-Variante der Sprachänderung beschreibe. Der Grund liegt darin, dass diese nicht immer sauber funktioniert. Gerade das benannte Beispiel in der default.xlf hat bei mir nie in der alternativen Variante per default.php funktioniert. Das betrifft aber wohl nur bestimmte xlf-Dateien wegen ihrer Reihenfolge beim Laden in Contao und den unterschiedlichen Umgang mit dem Cache, siehe auch https://github.com/contao/core-bundle/issues/740 ... da die beschriebene xlf-Variante stattdessen aber immer funktioniert hat, habe ich mich entschlossen hier nur diese Variante oben zu beschreiben. Wer mehr über die andere Variante wissen will, kann gerne das Ticket oder diverse Threads hier im Forum nachlesen.

    Und noch ein Hinweis: Änderungen von Sprachphrase via PHP-Datei funktionieren in der Dev-Umgebung (app_dev.php) nicht, weil die xlf-Dateoen nach den PHP-Dateien geladen werden. In der Produktionsumgebung klappt es hingegen oft (aber nicht immer, siehe vorhergehende Aussage) wegen dem Sprach-Cache.

  2. #2
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    436

    Standard

    Zitat Zitat von Nina Beitrag anzeigen
    Gerade das benannte Beispiel in der default.xlf hat bei mir nie in der alternativen Variante per default.php funktioniert.
    Hallo Nina!

    Genau die Phrase, die Du beschreibst, habe ich mit der PHP Methode problemlos am Start: Unter /app/Resources/contao/languages/de eine default.php mit folgendem Inhalt:
    PHP-Code:
    <?php

    // Text bei Login anders formatiert
    $GLOBALS['TL_LANG']['MSC']['lastLogin'][1] = '<h3>Willkommen zurück!</h3><br>Deine letzte Anmeldung war am: %s';
    $GLOBALS['TL_LANG']['MSC']['loggedInAs'] = 'Du bist angemeldet als: %s';
    ToM

  3. #3
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.674
    User beschenken
    Wunschliste

    Standard

    Ich würde sagen, ihr habt beide Recht... Problem ist aktuell, dass die PHP-Dateien vor den XLIFF-Dateien ausgewertet werden und daher die eigenen Anpassungen überschrieben werden.

    D.h. aktuell muss man mit den XLIFF-Dateien arbeiten - wenn das gefixt ist, auch wieder mit dem PHP-Array...

    das Ticket dazu habe ich leider so schnell nicht wieder gefunden

  4. #4
    Contao-Fan Avatar von mapfei
    Registriert seit
    11.05.2010.
    Ort
    Much
    Beiträge
    692

    Frage

    Danke für die tolle Anleitung, Nina.

    Ich kämpfe jedoch gerade hiermit rum:
    Code:
    <?xml version="1.0" ?><xliff version="1.1">
      <file datatype="php" original="src/Resources/contao/languages/en/default.php" source-language="en" target-language="de">
        <body>
          
          <trans-unit id="MSC.login">
            <source>Login</source>
            <target>Login</target>
          </trans-unit>
    
        </body>
      </file>
    </xliff>
    Cache geleert, Pfad ist auch korrekt, aber es wird nicht "Login" statt "Anmelden" angezeigt. Auch MSC.loginBT hilft hier nicht weiter.

    Grüße,
    mapfei

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

    Standard

    Wie lautet der Pfad?

  6. #6
    Contao-Fan Avatar von mapfei
    Registriert seit
    11.05.2010.
    Ort
    Much
    Beiträge
    692

    Standard

    Hat sich erledigt. War in der falschen Installation. Funktioniert einwandfrei.

  7. #7
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Als Ergänzung: Der Language Editor ist inzwischen auch für Contao 4 fit gemacht.

    https://github.com/netzmacht/contao-language-editor

  8. #8
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    33

    Standard

    Zitat Zitat von Nina Beitrag anzeigen
    Früher hat man Textpassagen / Phrasen der Sprachdateien in Contao über die langconfig.php geändert.
    In Contao 4 funktioniert das anders. Da das immer wieder angefragt wird und zur Verwirrung durch alte Anleitungen führt, hier mal eine kurz zusammengefasste aktuelle Anleitung zum Thema:

    In Contao werden Sprachformulierungen in sogenannten xlf-Dateien hinterlegt. Wenn du eine solche Phrase ändern möchtest, machst du das bitte nicht in der Originaldatei, sondern wählst stattdessen den updatesicheren Weg!

    Ein Beispiel:

    Normalerweise werden wiederkehrende Frontend-Mitglieder nach dem Login mit dem Satz "Ihre letzte Anmeldung war 18.09.2018 11:58. Willkommen zurück" begrüßt.

    Da der Satz so nicht wirklich schön klingt, wollen wir zumindest ein "am" einfügen, so dass daraus "Ihre letzte Anmeldung war am 18.09.2018 11:58. Willkommen zurück" wird.

    Der erste Schritt ist, dass wir herausfinden, in welcher Sprachdatei sich die originale Phrase befindet.
    Wenn du sicher bist, dass die Phrase aus Contao selbst kommt (nicht aus einer Dritterweiterung) gehst du am besten einfach auf https://github.com/contao/core-bundle/ und nutzt dort ganz oben die Suchleiste. Gib in die Suchleiste einen Teil der Phrase ein, beispielsweise "Ihre letzte Anmeldung war". Github zeigt dir dann per Autocomplete-Funktion direkt die gefundenen Bereiche an. Wähle laut diesem Beispiel den Autocomplete-Eintrag "Ihre letzte Anmeldung war (in this repository)", damit Github nach der Phrase nur in den Contao-Daten sucht. Voilá, Github zeigt dir an, dass die Phrase in der Datei src/Resources/contao/languages/de/default.xlf gefunden wurde und auch in welcher Zeile. Merke dir die Zeilennummer und klick auf den angezeigten Link zur xlf-Datei.

    Wenn wir uns in der Datei die angegebene Zeile 1330 ansehen, steht dort original dieser Abschnitt:
    Code:
          <trans-unit id="MSC.lastLogin.1">
            <source>Your previous login was %s. Welcome back!</source>
            <target>Ihre letzte Anmeldung war %s. Willkommen zurück!</target>
          </trans-unit>
    Jetzt haben wir alle Infos, die wir benötigen um die Phrase zu überschreiben: Wir wissen welche xlf-Datei es ist - in diesem Fall die default.xlf - und wir kennen den exakten Code des Abschnitts.

    Im zweiten Schritt bauen wir uns nun die updatesichere neue Sprachdatei:
    Verbinde dich per FTP oder Konsole auf den Webspace und geh in das Unterverzeichnis /app/Resources/contao/languages/de/
    /de/ steht für das deutsche Sprachfile. Wenn du lieber z.B. das englische Sprachfile überschreiben möchtest, müsste es stattdessen /en/ sein.
    Wichtig: Falls du bisher noch kein Sprachfile überschrieben hast, existieren die letzten beiden Ordner /languages/de/ im angegebenen Pfad noch nicht. Leg sie einfach an.

    Lege nun mit einem geeigneten Editor (z.B. www.pspad.com/de/ als kostenloser Editor) eine Datei namens default.xlf an. Der Name der Datei muss identisch sein mit dem Originalnamen der Datei die überschrieben werden soll. In diesem Beispiel war das laut dem ersten Schritt die default.xlf. Wenn du aber deine gesuchte Phrase nicht in der default.xlf, sondern z.B. in der modules.xlf gefunden hast, dann musst du jetzt auch korrekterweise die modules.xlf anlegen.

    Meinem Beispiel folgend, befülle ich diese Datei nun mit folgender Angabe:
    Code:
    <?xml version="1.0" ?><xliff version="1.1">
      <file datatype="php" original="src/Resources/contao/languages/en/default.php" source-language="en" target-language="de">
    <body>
    
          <trans-unit id="MSC.lastLogin.1">
            <source>Your previous login was %s. Welcome back!</source>
            <target>Ihre letzte Anmeldung war %s. Willkommen zurück!</target>
          </trans-unit>
          
    </body>
    </file>
    </xliff>
    Die Angaben der ersten Zeilen bis einschließlich <body> und der letzten Zeilen ab </body> sind einfach aus dem Originalfile kopiert. Wenn du eine andere Sprache überschreibst, achte darauf, dass du die entsprechenden korrekten ersten Zeilen aus der Originaldatei übernimmst, damit dort auch der Verweis auf die korrekte Sprache ist!
    Relevant ist der Abschnitt zwischen <body> und </body>. Hierhin habe ich einfach die komplette Sprachphrase (inklusive dem öffnenden <trans-unit ...> und schließenden </trans-unit>) kopiert.

    Jetzt kann ich die Stelle an meine Wünsche anpassen und das Wort "am" ergänzen, so dass nun in der Datei das hier steht:

    Code:
    <?xml version="1.0" ?><xliff version="1.1">
      <file datatype="php" original="src/Resources/contao/languages/en/default.php" source-language="en" target-language="de">
    <body>
    
          <trans-unit id="MSC.lastLogin.1">
            <source>Your previous login was %s. Welcome back!</source>
            <target>Ihre letzte Anmeldung war am %s. Willkommen zurück!</target>
          </trans-unit>
          
    </body>
    </file>
    </xliff>
    Speichere die Datei und lade sie an den oben angegebenen Pfad /app/Resources/contao/languages/de/ (bzw. das entsprechende Pendant, wenn du es in einer anderen Sprache überschreiben willst).

    Der letzte Schritt: Cache leeren

    Rufe nun für die Website den Contao-Manager auf, logge dich ein und wähle dort im Bereich Systemwartung die Option „Cache der Produktionsumgebung leeren“ (dafür vorher auf den Pfeil rechts neben dem Button „Prod-Cache erneuern“ klicken, damit diese Option verfügbar ist).
    Warte bis der Cache geleert ist, log dich vom Manager aus und schau nach, ob deine Sprachänderung erfolgreich war.

    Alternativ kannst du den Cache auch per SSH leeren: vendor/bin/contao-console cache:clear -e=prod oder „zu Fuß“ via FTP den Ordner /var/cache/prod/ leeren.

    Das war es!

    Anmerkungen:
    Mancher wird sich fragen, weshalb ich nicht die PHP-Variante der Sprachänderung beschreibe. Der Grund liegt darin, dass diese nicht immer sauber funktioniert. Gerade das benannte Beispiel in der default.xlf hat bei mir nie in der alternativen Variante per default.php funktioniert. Das betrifft aber wohl nur bestimmte xlf-Dateien wegen ihrer Reihenfolge beim Laden in Contao und den unterschiedlichen Umgang mit dem Cache, siehe auch https://github.com/contao/core-bundle/issues/740 ... da die beschriebene xlf-Variante stattdessen aber immer funktioniert hat, habe ich mich entschlossen hier nur diese Variante oben zu beschreiben. Wer mehr über die andere Variante wissen will, kann gerne das Ticket oder diverse Threads hier im Forum nachlesen.

    Und noch ein Hinweis: Änderungen von Sprachphrase via PHP-Datei funktionieren in der Dev-Umgebung (app_dev.php) nicht, weil die xlf-Dateoen nach den PHP-Dateien geladen werden. In der Produktionsumgebung klappt es hingegen oft (aber nicht immer, siehe vorhergehende Aussage) wegen dem Sprach-Cache.
    Und wohin muss die xlif-Datei bei Contao 5.3 platziert werden? "app" gibt es ja nicht mehr und "Resources". Oder muss hier der ganze Dateipfad neu händisch angelegt werden?

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

    Standard

    contao/languages/<language>/<domain>.php/.xlf
    » sponsor me via GitHub or PayPal or Revolut

  10. #10
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    33

    Daumen hoch

    Zitat Zitat von Spooky Beitrag anzeigen
    contao/languages/<language>/<domain>.php/.xlf
    Perfekt, funktioniert. Besten Dank!

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
  •