[Frage] Fluid Translate inline benutzen

  • chrickenh chrickenh
    Jedi-Ritter
    0 x
    137 Beiträge
    0 Hilfreiche Beiträge
    13. 05. 2019, 15:09

    Hallo,
    ich bin mal wieder mit Fluid am kämpfen.
    Im Projekt wird Typo3 9.5.5 und Mask 4.1.0 eingesetzt.

    In einem Mask-Inhaltselement ist u.a. ein Radiobutton-Feld eingebunden.
    Falls der eine Radiobutton ausgewählt ist, soll ein DIV-Container eine Klasse erhalten. Sonst eine andere.

    Wenn ich in der Template-Datei die folgende Zeile schreibe, bekomme ich wie gewünscht eine 1 oder 2.
    {data_item.tx_mask_formfaktor}

    Mit dem folgenden Code bekomme ich immer 'default value'.
    {f:translate(key: 'data_item.tx_mask_formfaktor', arguments: {1: 'bild_schmal', 2: 'bild_schmal'}, default: 'default value')}

    Ich habe mich an diese Anleitung gehalten (denke ich).
    https://docs.typo3.org/typo3cms/ViewHelperReference/latest/typo3/fluid/latest/Translate.html

    Leider kann ich meinen Fehler nicht finden, hoffentlich kann mir jemand hilfen.
    Lieben Gruß
    Christian


  • 1
  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2845 Beiträge
    105 Hilfreiche Beiträge
    14. 05. 2019, 09:57

    Hallo Christian.

    Die Anleitung reicht Werte in das Sprachlabel hinein.
    Klassischer Fall wäre die Anrede "Hallo <Vorname>". Das Label wäre in dem Fall "Hallo %1", d.h. der erste Wert aus arguments würde für "%1" eingesetzt.

    Du suchst aber, glaube ich, was anderes.
    Du hast drei Labels für die CSS-Klassen udn möchtest abhängig von {data_item.tx_mask_formfaktor} diese setzen.
    Dazu legst Du die Labels in der Sprachdatei an als:
    data_item.tx_mask_formfaktor.0
    data_item.tx_mask_formfaktor.1
    data_item.tx_mask_formfaktor.2
    ...und baust den Key im translate-VH dynamisch zusammen:
    {f:translate(key: 'data_item.tx_mask_formfaktor.{data_item.tx_mask_formfaktor}'}

    Ganz andere Frage: wozu nutzt Du den translate-Viewhelper für CSS-Klassen? Sind die CSS-Klassen sprachabhängig???
    IMO sollte Dir hier der if-Viewhelper gute Dienste leisten.

    Viele Grüße
    Julian

  • chrickenh chrickenh
    Jedi-Ritter
    0 x
    137 Beiträge
    0 Hilfreiche Beiträge
    15. 05. 2019, 15:15

    Hallo Julian,
    danke für deine ausführliche Antwort.
    Ich hatte den Begriff Translate als ein Synonym für Mapping verstanden und wollte es wie eine switch-case-Anweisung anwenden.
    Die f:switch f:case bekomme ich nämlich inline nicht hin, da in allen Dokus immer nur die Tag-Variante gezeigt wird. Kannst Du mir vielleicht noch zeigen, wie eine switch-case-Anweisung inline gebaut wird? Danke

    Zur Info:
    Ich habe in Mask ein Element angelegt, in dem mit einem Radiobutton bestimmt werden soll, welche Klasse das Element trägt. Es geht namentlich darum, ob Bilder breit, schmal oder irgendwie anders gerendert werden.
    Lieben Gruß
    Christian

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2845 Beiträge
    105 Hilfreiche Beiträge
    17. 05. 2019, 14:59

    Hm, f:switch als inline-Notation ist mir jetzt auch noch nicht untergekommen.

    Vieleicht wäre aber ein tag-basierter switch-VH kombiniert mit f:variable eine Lösung, um letztlich beim class-Attribut übersichtlichen Code zu haben.

    Noch ein kleiner Linktipp:
    http://www.fluid-converter.com/ (hilft für f:switch aber auch nicht ;-) )

  • 1