Die aktuelle Sprache mit TypoScript rendern

Die aktuelle Sprache mit TypoScript rendern

Eine kleine Sammlung von gefundenen und erfundenen M├Âglichkeiten, um die aktuelle Sprache via TypoScript zu rendern.

Wenn ich Projekte von anderen Personen ├╝bernehme, w├╝hle ich gerne im Code herum. Manchmal finde ich spannende Ans├Ątze, von denen ich lerne. Oder ich finde interessante L├Âsungen, an die ich nie gedacht h├Ątte. Jene Ans├Ątze f├╝hrten mich dazu, diesen Post zu schreiben. 

Das erkl├Ąrte Ziel: Die aktuell aktive Sprache rendern, die beispielsweise in einem Button f├╝r ein Sprachmen├╝ zum Einsatz kommt.

Weg 1: Handarbeit

Die simpelste L├Âsung ist, die entsprechende Sprache statisch zu rendern, indem Conditions genutzt werden. 

 

currentLanguage = TEXT
currentLanguage.value = Deutsch

[globalVar = GP:L = 1]
currentLanguage.value = English
[end]

// ...

 

Vorteile:

  • Simpel, lesbar, einfach verst├Ąndlich
  • Die Sprache kann in der aktiven Sprache ausgegeben werden (Lokalisierung)

Nachteile:

  • Das TypoScript muss aktualisiert werden, wenn neue Sprachen hinzugef├╝gt werden

Weg 2: Iteration ├╝ber alle Sprachen

Dies ist ein spezieller Ansatz, um die aktive Sprache f├╝r beispielsweise eine Navigation auszugeben. Sie funktioniert, ist allerdings nicht performant. Was hier passiert: Alle definierten Sprachen werden gerendert, aber die nicht aktuellen Sprachen werden mit nicht-sichtbare Tags umschlossen, was ├╝bersch├╝ssiges Markup generiert.

 

currentLanguage = HMENU
currentLanguage {
  special = language
  special {
    value = 0,1
    normalWhenNoLanguage = 0
  }
  
  addQueryString = 1
  addQueryString {
    method = GET
    exclude = id, L, cHash
  }
  
  1 = TMENU
  1 {
    NO = 1
    NO {
      stdWrap {
        setCurrent = de || en || it || es || fr
        current = 1
      }
      linkWrap = |
    }
    
    ACT < .NO
    ACT {
      doNotLinkIt = 1
      linkWrap = |
    }
  }
}

 

Vorteile:

  • Die Sprache kann in der aktiven Sprache ausgegeben werden (Lokalisierung)

Nachteile:

  • Das TypoScript muss aktualisiert werden, wenn neue Sprachen hinzugef├╝gt werden
  • Es wird ├╝berfl├╝ssiger Output generiert

Weg 3: Den aktuellen Sprach-RECORD rendern

Mit dem RECORD Top Level Object (TLO) bietet TypoScript die M├Âglichkeit, Datens├Ątze aus jeglichen Tabellen zu rendern. 

 

currentLanguage = RECORDS
currentLanguage {
  if.isTrue.data = GP:L
  
  tables = sys_language
  dontCheckPid = 1
  source {
    data = GP:L
    intval = 1
  }
  
  conf.sys_language = TEXT
  conf.sys_language {
    field = title
    htmlSpecialChars = 1
  }
  
  stdWrap.override {
    cObject = TEXT
    cObject.value = Default language label
    if.isFalse.data = GP:L
  }
}

 

Vorteile:

  • Der Name des Language-Datensatzes dient als Name des Sprach-Labels, anstatt diese statisch im TypoScript zu definieren (mit Ausnahme des Standard-Labels)

Nachteile:

  • Das Standard-Label muss im TypoScript angepasst werden, womit es zwei Orte gibt, um die Labels zu verwalten

├ťber uns

land in sicht bietet digitale Lo╠łsungen fu╠łr Destinationen und Leistungstra╠łger im Tourismus: toubiz┬«-Infosystem fu╠łr touristische Infrastruktur, Webportale und das Frontend fu╠łr das TOMAS┬« Buchungssystem.

Standort Deutschland

Br├╝hlmatten 16
79295 Sulzburg

Telefon +49 7634 56956-0

Standort Schweiz

Letzistrasse 29
9015 St. Gallen

Telefon ÔÇş+41 71 571 069-0ÔÇČ