Ankündigung

Einklappen
Keine Ankündigung bisher.

Übersetzung von Filter-Beschriftungen / Labels für das Frontend

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Übersetzung von Filter-Beschriftungen / Labels für das Frontend

    Hallöchen,

    ich habe mehrere Filter basierend auf Tags (Select) sowie einen Range-Filter im Einsatz.
    Wie kann ich hierfür eine Übersetzung für die Ausgabe im Frontend definieren?

    Danke vorab und liebe Grüße

  • #2
    Hallö,
    Tags werden automatisch übersetzt. Alle Backend-Eingabefelder können mit Sprachinserttags auch genutzt werden. Sonst gilt: im Template. Gibt es bereits einige Threads zu diesem Thema.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Tags zu übersetzen ist kein Problem - die hab ich direkt zweisprachig angelegt - das funzt alles. Es geht mir lediglich um die Beschriftung der Felder. Hatte das erst mit Sprachinserttags im Backend erledigt... dachte mir aber, das es bestimmt eine elegantere Methode gibt, um das zu lösen...

      Ansonsten im Template? Du meinst customcatalog_filter_select bzw. customcatalog_filter_range? Muss ich dann für jedes einzelne Filter-Element ein Template anlegen?

      Kommentar


      • #4
        Zitat von Watermusic Beitrag anzeigen
        Ansonsten im Template? Du meinst customcatalog_filter_select bzw. customcatalog_filter_range? Muss ich dann für jedes einzelne Filter-Element ein Template anlegen?
        Kannst auch weiterhin die Standard-Templates nutzen und im Template abfragen welcher Filter (filter Id: $this->id) gerade abgearbeitet wird und damit unterschiedliche Labels ausgeben und diese übersetzen. Viele Wege...
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Besten Dank - Problem nun gelöst

          Kommentar


          • #6
            Könntet ihr hier freundlicherweise ein Snippet einstellen? Ich stehe gerade vor demselben Thema.
            Im Übrigen werden die Tag-Werte nicht automatisch übersetzt. Diese sind zwar im Backend korrekt auswählbar aber im Template kommt hier irgendwie nix davon an (nur deutsch).
            Ich habe im Leser-Template die Tag-Liste so eingefügt:

            Code:
            <?php echo $this->field('tag-attribut')->html(); ?>
            Alle anderen Felder werden anstandslos in englisch angezeigt.

            Kommentar


            • #7
              Die Übersetzungen bei den Tags direkt je Tag-Eintrag im Übersetzungswidget angeben.
              http://www.premium-contao-themes.com

              Kommentar


              • #8
                ich stehe gerade vor dem gleichen Problem und komme nicht damit zurecht, die Label für die Range Filter und den "NAMEN" der Tagfilter zu übersetzen. Inhalte der Tagfilter werden korrekt ausgegeben, da diese ja bereits in der Tags-Kategorie mehrsprachig angelegt werden kann.

                Kann mir dazu jemand einen Beispiel-Code nennen? z. B. für den Preis-Range Filter, einen Tagfilter und die Titel wie sie auf der Detailseite der Immobilienseite vorkommen (Beschreibung)?

                Danke!
                Zuletzt geändert von danielx11; 06.02.2018, 15:49.

                Kommentar


                • #9
                  Übersetzungen können in die Templates des jeweiligen Filters. Globale Übersetzungen sind nur für die allgemeinen Felder: http://forum.premium-contao-themes.c...en-%C3%A4ndern
                  http://www.premium-contao-themes.com

                  Kommentar


                  • danielx11
                    danielx11 kommentierte
                    Kommentar bearbeiten
                    Und wie genau muss das idealerweise im Template aussehen? Muss ich für jede Sprache ein separates Template anlegen? Oder per Inserttag die Inhaltselemente reinladen?

                    Z. B. bei dem Range-Filter: https://pastebin.com/7GCvbbUa

                    Da muss sicherliche etwas PHP gecodet werden
                    Zuletzt geändert von danielx11; 07.02.2018, 08:27.

                • #10
                  Wie in jedem anderen Contao Template. Du kannst z.B. Contaos {{iflng}} Inserttag nutzen. http://de.contaowiki.org/Insert-Tags

                  Ich machs lieber mit reinem php z.B. so: (Beispiel für ein Checkbox-Filter Template)

                  PHP-Code:
                  <?php // en label
                    
                  if($GLOBALS['TL_LANGUAGE'] == 'en')
                    {
                    
                  $this->label 'My label';
                    
                  $this->description 'my Description;
                    }
                    ?>
                    
                    <div <?php echo $this->cssID; ?> class="widget <?php echo $this->class; ?> block">
                    <fieldset class="checkbox_container">
                    <?php if($this->label): ?><legend><?php echo $this->label; ?></legend><?php endif; ?>
                    <input type="checkbox" class="checkbox" name="<?php echo $this->name; ?>" value="<?= $value; ?>" <?php if($isActive): ?>checked<?php endif; ?>>
                    <?php if($this->description): ?><div class="description"><?php echo $this->description; ?></div><?php endif; ?>
                    </fieldset>
                    </div>
                  Zuletzt geändert von Tim; 07.02.2018, 08:27.
                  http://www.premium-contao-themes.com

                  Kommentar


                  • #11
                    Danke Tim, der Kunde wird später weitere Sprachen hinzufügen. Das mit dem {{iflng}} ist vermutlich dann ein guter Ansatz, um dem Kunden das selbstständige Pflegen per Inhaltselement anzubieten. Während im Template dann der entsprechende Inserttag gesetzt ist. Habe ich das so richtig verstanden?

                    UPDATE:
                    Da ich mehrere Filter des gleichen Aufbaues im Einsatz habe und die Ausgabe des Labels in einer Schleife steckt, möchte ich für jeden Range-Filter das Template duplizieren. Er greift sich aber nur das Duplicat, welches den gleichen Namen trägt. Ich habe keine Möglichkeit z. B. price_range und size_range als Template anzulegen, um darin dann entsprechende inserttags einzusetzen. Es lässt sich im Filter dann leider nicht auswählen und erscheint nicht in der Liste. Die Filter-Templates scheinen alle in einem Ordner "_TemplateLoader_" zu stecken. Wo finde ich den?
                    Zuletzt geändert von danielx11; 07.02.2018, 08:53.

                    Kommentar


                    • #12
                      Durchsuche mal den CC Module Ordner auf deinem Desktop nach .html5 Dateien. Die Templates liegen darin etwas tiefer verschachtelt.
                      http://www.premium-contao-themes.com

                      Kommentar


                      • #13
                        So klappt es jetzt wunderbar mit Inserttags und verschiedenen Templates. Thx

                        Kommentar


                        • #14
                          Wo genau werden denn beim Select-Filter die labels definiert? Sodass bspw. das default markierte "Ort filtern" übersetzen kann.
                          https://pastebin.com/nnxnGq2h
                          Angehängte Dateien

                          Kommentar


                          • #15
                            "Ort filtern" ist noch eine Globale: Siehe link im Forum oben
                            $GLOBALS['TL_LANG']['PCT_CUSTOMCATALOG']['MSC']['filter_firstOption'] = '%s filtern';

                            ---
                            Einzelne Options-Labels kannst du nur im Template manuell umschreiben, in dem der Options array angepackt wird. Vielleicht kann man auch im Backend in die Werte mit lng Inserttags setzen (sieht aber blöd aus , weil das Backend keine Inserttags ersetzt )

                            Man kennt ja die Werte, diese sind allgemein gültig und übersetzt daraufhin die labels der Optionen.

                            Ich mach das so: Beispiel Filter select template
                            // en: dauer
                            Code:
                               if($GLOBALS['TL_LANGUAGE'] == 'en')
                              {
                              $this->label = 'my Select';
                              foreach($this->options as $i => $option)
                              {
                              if($option['value'] == 'value1')
                              {
                              $option['label'] = 'This is my first value';
                              }
                              $this->options[$i] = $option; // template variable mit neuen werten fuettern
                              }
                              }
                            http://www.premium-contao-themes.com

                            Kommentar

                            Lädt...
                            X