Questions & Answers

SOLVED
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

Type a product name