Contao-Camp 2024
Ergebnis 1 bis 2 von 2

Thema: Übersetzungen aus json-Datei laden

  1. #1
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    502

    Standard Übersetzungen aus json-Datei laden

    Ich möchte Übersetzungen aus einer json-Datei laden, und diese Übersetzungen dann mittels eines Hook-Scripts in ein ein Frontend-Template einfügen.

    Die json-Datei:
    Code:
    [
    	{"de":"hallo","es":"ola","en":"hello"},
    	{"de":"du","es":"tu","en":"you"}
    ]
    Das FE-Template:
    HTML-Code:
    <h1>{xxx}, {xxx}!</h1>
    Das Hook-Script:
    Code:
        public function myOutputFrontendTemplate($strContent, $strTemplate)
        {
    
            // Get the contents of the JSON file 
            $strJsonFileContents = file_get_contents("files/test/text.json");
    
            $my_array = json_decode($strJsonFileContents, true);
    
            $ln =  $GLOBALS['TL_LANGUAGE'];
            $placeholder = '{xxx}';
    
            foreach($my_array as $value){
                $string = preg_replace($placeholder, $value[$ln], $strContent,-1);
            }
    
            return $string;
    
        }

    ... obiger Code liefert mir folgendenes Resultat im Frontend:
    Code:
    {du}, {du}!
    ... gewünschtes Ergebnis wäre aber:
    Code:
    Hallo, du!
    ... was mache ich da falsch?



    Der Grund für das ganze:

    Eine Contao-Seite soll in 14 Sprachen übersetzt werden.
    Die Übersetzungen werden sich gestalterisch und inhaltlich nicht unterscheiden.

    Das Layout der einzelnen Seiten liegt als statischer HTML-Code vor.
    Mein Plan wäre es nun den statischen HTML-Code mittels FE-Templates auszugeben.
    (Also zb. 'fe_page_startseite.html5', 'fe_page_kontaktseite.html5', etc.)

    In diesen FE-Templates werde alle zu übersetzenden Passagen mit "{xxx}" ersetzen.
    Bei der Ausgabe soll dann obiges Hook-Script verwendet werden.
    Für jede Seite gibt es dann eine eigene json-Datei.
    (text-startseite.json, text-kontaktseite.json, etc.)

    Das erspart das zeitintensive "nachbauen" der Seite mit Contao-Inhaltselementen.
    ... und trotzdem kann sie per Contao übersetzt werden.


    Findet ihr das ist eine empfehlenswerte Vorgangsweise?
    Denkt ihr es wird durch das Laden der json und dem PHP-replace ein Performance-Problem geben?


    Bitte um eure Meinung bzw. Hilfe.
    Vielen Dank!

    lg
    Geändert von thesweetg (21.10.2019 um 12:16 Uhr)

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

    Standard

    Also der reguläre Weg wäre die ganz normalen Übersetzungen von Contao zu verwenden. Deine Übersetzungen aus dem JSON kannst du ggf. mit dem loadLanguageFile Hook injecten.

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
  •