a_dada
I'm new here

Sprach-Fallback in Datenquellen

Jump to solution

Hallo,

ich habe in meinem Projekt folgende Konstellation:

DATENQUELLE:
headline_DE (String 512)
headline_EN (String 512)
body_DE (FirstSpirit XML)
body_EN (FirstSpirit XML)

FORMULAR:

        <CMS_INPUT_TEXT name="cs_headline" hFill="yes" maxInputLength="512" useLanguages="yes">

          <LANGINFOS>

            <LANGINFO lang="*" label="Headline" description="The title of the content entry."/>

          </LANGINFOS>

        </CMS_INPUT_TEXT>

        <CMS_INPUT_DOM name="cs_body" bold="yes" hFill="yes" italic="yes" rows="10" table="no" useLanguages="yes">

          <FORMATS>

            <TEMPLATE name="Standard"/>

          </FORMATS>

          <LANGINFOS>

            <LANGINFO lang="*" label="Text" description="The text of the content entry."/>

          </LANGINFOS>

        </CMS_INPUT_DOM>


HTML-KANAL:

<h1>$CMS_VALUE(#row.headline, default:#row.headline_EN)$</h1>

$CMS_VALUE(#row.body, default:#row.body_EN)$

Damit möchte ich erreichen, dass z.B: beim Generieren des DE-Sprachkanals auf EN zugegriffen wird, sollte noch keine Übersetzung vorliegen (Mastersprache EN).

Das funktioniert mit der Headline wunderbar, jedoch nicht mit dem body. Es scheint so, dass man nicht auf den Inhalt eines anders-sprachigen DOM-Elements zugreifen kann. Auch so Dinge "getValue("body_EN").get().get(lang)" und ähnliches haben nicht zum Erfolg geführt, sie liefern zwar Objekte zurück (de.espirit.firstspirit.client.editorcomponent.EditorWrapper oder de.espirit.firstspirit.access.editor.value.DomElementImpl), allerdings ist da kein Content drin.

Danke schonmal im vorraus für euer Feedback,

Andreas Dada

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Herr Dada,

funktioniert folgendes?

$CMS_SET(actualLanguage,#global.language)$

$CMS_IF(#global.language != #global.project.masterLanguage && !cs_body.isEmpty)$$CMS_VALUE(cs_body)$$CMS_ELSE$

$CMS_SET(#global.language,#global.project.masterLanguage)$$CMS_VALUE(cs_body)$$CMS_SET(#global.language,actualLanguage)$$CMS_END_IF$

Also die Generierungssprache gegebenenfalls vor der Ausgabe des CMS_INPUT_DOMs auf die gewünschte Sprache (im Beispiel die Mastersprache) wechseln und dann ausgeben. Den Wechsel zurück auf die aktuelle Sprache nicht vergessen Smiley Wink

Viele Grüsse aus Dortmund,

  Holger Höbbel

View solution in original post

0 Kudos
3 Replies
hoebbel
Crownpeak employee

Hallo Herr Dada,

funktioniert folgendes?

$CMS_SET(actualLanguage,#global.language)$

$CMS_IF(#global.language != #global.project.masterLanguage && !cs_body.isEmpty)$$CMS_VALUE(cs_body)$$CMS_ELSE$

$CMS_SET(#global.language,#global.project.masterLanguage)$$CMS_VALUE(cs_body)$$CMS_SET(#global.language,actualLanguage)$$CMS_END_IF$

Also die Generierungssprache gegebenenfalls vor der Ausgabe des CMS_INPUT_DOMs auf die gewünschte Sprache (im Beispiel die Mastersprache) wechseln und dann ausgeben. Den Wechsel zurück auf die aktuelle Sprache nicht vergessen Smiley Wink

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos
hoebbel
Crownpeak employee

Hallo Herr Dada,

mir fällt erst jetzt auf, dass Sie ja $CMS_VALUE(#row.body, default:#row.body_EN)$ benutzen.

Da ein DOM normalerweise immer einen Inhalt hat, wird der default nie benutzt.

Wahrscheinlich funktioniert auch

$CMS_IF(!#row.body.isEmpty)$$CMS_VALUE(#row.body)$$CMS_ELSE$$CMS_VALUE(#row.body_EN)$$CMS_END_IF$

oder kurz

$CMS_VALUE(if(!cs_body.isEmpty,cs_body,#row.body_EN))$

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos

Hallo Herr Höbbel,

des Setzten von #global.language hat zum gewünschten Effekt geführt, der zweite Lösungsvorschlag funktioniert nicht.

Vielen Dank für die schnelle Hilfe,

Andreas Dada

0 Kudos