- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sprach-Fallback umkehren
Moin,
Folgendes Szenario:
Mastersprache ist Englisch. Desweiteren gibt es Deutsch.
Sprachfallback innerhalb von FS fukntioniert ja so, dass, wenn die Inhaltsseite nicht
auf deutsch รผbersetzt ist, die englische Version herangezogen wird.
Nun haben wir bei uns den besonderen Fall, dass es auchSeiten geben kann,
die nicht in englischer Sprache jedoch in deutscher Sprache vorliegen.
Dafรผr habe ich versucht, einen Workaround zu bauen.
Am Anfang eines Seitentemplates habe ich folgenden Code-Schnipsel eingebaut:
$CMS_IF(#global.language == #global.project.masterLanguage && !#global.page.isTranslated)$
$CMS_SET(useFallback, true)$
$CMS_SET(fallbackLanguage, null)$
$CMS_FOR(lang, #global.project.languages)$
$CMS_IF(fallbackLanguage.isEmpty && lang != #global.project.masterLanguage && #global.page.isTranslated(lang.abbreviation))$
$CMS_SET(fallbackLanguage, lang)$
$CMS_END_IF$
$CMS_END_FOR$
$CMS_IF(!fallbackLanguage.isEmpty)$
$CMS_SET(#global.language, fallbackLanguage)$
$CMS_END_IF$
$CMS_END_IF$
Im weiteren Verlauf des Seitentemplates kommt u.a. soetwas vor:
$CMS_VALUE(pt_title)$
$CMS_RENDER(template:"WEBeditInplaceBody", name:"content")$
Und am Ende wird die Sprache wieder zurรผck gestellt:
$CMS_IF(useFallback)$
$CMS_SET(#global.language, #global.project.masterLanguage)$
$CMS_END_IF$
Dieses Vorgehen funktioniert aber nur zum Teil.
Die Variable 'pt_title', die im Formular des Seitentemplates definiert ist, wird weiterhin auf englisch ausgegeben.
Der 'content' hingegen auf deutsch.
Wie bringe ich FirstSpirit dazu, auch die Formularwerte des Seitentemplates in der anderen Sprache auszugeben?
Viele Grรผรe
Peter Schulz
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Eine Mรถglichkeit habe ich bereits gefunden:
$CMS_VALUE(#global.page.getFormData().get(#global.language, "pt_title").get)$
Allerdings muss man das jetzt um jeden Formularwert herum bauen.
Gibt es noch eine einfachere Lรถsung?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Eventuell folgendes versuchen:
"$CMS_IF" im Seitenttemplate, wo im then-Fall die folgenden drei Dinge gemacht werden
- Sprache umsetzen
- $CMS_VALUE(#global.node.createContent(#global, #global.pageParams))$
- Sprache zurรผcksetzen
Der eigentliche Template-Inhalt kommt denn (unverรคndert) in den else-Fall. Achtung: Die Anweisung in 2 ist eine Rekursion. Die Bedingung muss also so sein, das es zu keiner Endlos-Rekursion kommt.
Disclaimer: Ich habe es nicht ausprobiert, laut API mรผsste das aber funktionieren
Eventuell erweitert man das if noch so, das der rekursive Aufruf bei der Vorschau nicht gemacht wird.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
ich habe jetzt folgendes ausprobiert:
1. Feststellen, ob ein Fallback durchgefรผhrt werden muss / kann:
$CMS_IF(#global.language == #global.project.masterLanguage && !#global.page.isTranslated)$
$CMS_SET(useFallback, true)$
$CMS_SET(fallbackLanguage, null)$
$CMS_FOR(lang, #global.project.languages)$
$CMS_IF(fallbackLanguage.isEmpty && lang != #global.project.masterLanguage && #global.page.isTranslated(lang.abbreviation))$
$CMS_SET(fallbackLanguage, lang)$
$CMS_END_IF$
$CMS_END_FOR$
$CMS_IF(fallbackLanguage.isEmpty)$
$CMS_SET(useFallback, false)$
$CMS_END_IF$
$CMS_END_IF$
2. Fallback:
$CMS_IF(useFallback)$
<!-- fallback... -->
$CMS_SET(#global.language, fallbackLanguage)$
$CMS_VALUE(#global.node.createContent(#global, #global.pageParams))$
$CMS_SET(#global.language, #global.project.masterLanguage)$
$CMS_ELSE$
...
$CMS_END_IF$
Jetzt wird genau 12 mal der Kommentar "<!-- fallback... -->" ausgegeben.
Nur das html-Grundgerรผst ist noch zusรคtzlich im Quelltext zu sehen.
Da wir in unseren Seitentemplates nicht all zu viele Formularparameter hinterlegt haben, bevorzuge ich dann doch die Lรถsung aus meiner eigenen Antwort...
Danke und Gruร
Peter

