Contao-Summit 2026

Ankündigung

Collapse
No announcement yet.

Sprachabhängige Optionen in tl_calendar_events

Collapse
X
 
  • Filter
  • Zeit
  • Show
Clear All
new posts

    Sprachabhängige Optionen in tl_calendar_events

    Hallo zusammen,

    ich habe in der tl_calendar_events.php (contao/dca/tl_calendar_events.php) ein neues Feld "kursart" hinzugefügt, das folgende Definition hat:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['kursart'] = [
        
    'exclude' => true,
        
    'inputType' => 'select',
        
    'options' => ['Intensivkurs', 'Abendkurs'],
        
    'reference' => &$GLOBALS['TL_LANG']['tl_calendar_events']['kursart_options'],
        
    'eval' => ['tl_class' => 'w50', 'maxlength' => 255, 'mandatory' => true],
        
    'sql' => ['type' => 'string', 'length' => 32, 'default' => NULL, 'notnull' => false],
    ]; 
    In zwei Sprachdateien habe ich die Übersetzungen wie folgt definiert:

    Deutsch (languages/de/tl_calendar_events.php):

    PHP-Code:
    $GLOBALS['TL_LANG']['tl_calendar_events']['kursart_options'] = [
        
    'Intensivkurs' => 'Intensivkurs',
        
    'Abendkurs' => 'Abendkurs',
    ]; 
    Englisch (languages/en/tl_calendar_events.php):

    PHP-Code:
    $GLOBALS['TL_LANG']['tl_calendar_events']['kursart_options'] = [
        
    'Intensivkurs' => 'Intensive Course',
        
    'Abendkurs' => 'Evening Course',
    ]; 
    Im Backend funktioniert die sprachabhängige Ausgabe einwandfrei, allerdings wird im Frontend immer die deutsche Version der Optionen ausgegeben, unabhängig von der aktuellen Sprache.

    Hat jemand eine Idee, warum die Übersetzung im Frontend nicht funktioniert? Oder gibt es eventuell einen anderen Best-Practice-Ansatz, um sprachabhängige Optionen sauber umzusetzen? Bin für jeden Hinweis dankbar!

    Danke vorab für eure Unterstützung!

    #2
    Wie lässt du das im Frontend ausgeben? So eine Funktion gibt es von Haus aus nicht.
    » sponsor me via GitHub or Revolut

    Comment


      #3
      Mein Code im Template sieht derzeit so aus

      PHP-Code:
      <?php if ($this->kursart): ?><?= $this->kursart ?><?php endif; ?>
      Aber ich höre schon raus, dass das nicht ausreicht. Was wäre denn der einfachste Weg, um die Auswahl eines options Feldes übersetzt im Frontend auszugeben? Ich könnte natürlich auch gleich die englische Bezeichnung, zusätzlich zu den deutschen in die Liste schreiben. Dann muss der Redakteur einfach auswählen ...

      Comment


        #4
        Ggf. wäre das auch noch ein Weg? (Quelle)

        PHP-Code:
        <?php if($GLOBALS['TL_LANGUAGE'] == 'en'): ?>
            <!-- English Content -->
        <?php elseif($GLOBALS['TL_LANGUAGE'] == 'de'): ?>
            <!-- Deutscher Inhalt -->
        <?php endif; ?>

        Comment


          #5
          Achsoo, du willst einfach nur den gespeicherten Wert ausgeben - aber übersetzt.

          Das machst du so:
          PHP-Code:
          <?= $this->trans('tl_calendar_events.kursart_options.'.$this->kursart, [], 'contao_tl_calendar_events') ?>
          » sponsor me via GitHub or Revolut

          Comment


            #6
            Du bis der Held! Danke

            Noch eine letzte Frage (die hier eigentlich nicht hingehört) zum routing der Sprache am Startpunkt:

            Bei mir sieht das derzeit so aus:

            Startpunkt (de)
            - Domainname: www.domain.de
            - Sprache: de
            - Sprachen-Fallback: aktiviert
            - Seitenalias der ersten Unterseite (Startseite): index

            Startpunkt (en)
            - Domainname: www.domain.de (also wie oben)
            - URL-Präfix: en
            - Sprache: en
            - Sprachen-Fallback: nicht aktiviert
            - Seitenalias der ersten Unterseite (Startseite): ?

            Gebe ich nun www.domain.de/en ein, springt die Seite immer wieder auf www.domain.de.
            Wie muss denn meine Konfiguration aussehen, damit www.domain.de/en auf die erste Unterseite des en Seitenbaumes verweist?

            Comment


              #7
              Zitat von worxer Beitrag anzeigen
              Noch eine letzte Frage (die hier eigentlich nicht hingehört)
              Daher auch lieber einen eigenen Thread öffnen (oder suchen, ob es dazu schon etwas gibt)
              » sponsor me via GitHub or Revolut

              Comment

              Working...
              X