CodamAIDocs
Themafertig

Sprache und Zeitzone

Woher die Sprache eines Dokuments kommt (Anfrage, CIAS, Standard der Installation) und woher die Zeitzone (Anfrage, TZ, UTC). Wie Zahlen, Datumsangaben und Zeitpunkte in der Vorlage formatiert werden.

Ausprägungen
Sprache aus der AnfrageSprache aus CIAS (LanguageSelection)Sprache aus codamai.i18n.default-localeZeitzone aus der AnfrageZeitzone aus TZZeitzone UTC

Worum es geht

Ein Dokument hat eine Sprache und eine Zeitzone. Die Sprache entscheidet zwei Dinge: welche Sprachvariante der Vorlage CRMS nimmt und wie Zahlen und Daten aussehen. Die Zeitzone entscheidet, welche Uhrzeit ein Zeitpunkt im Dokument zeigt.

Beides darfst du in der Anfrage angeben. Lässt du es weg, nimmt CRMS feste Rückfälle.

Woher die Sprache kommt

  1. 1
    Client→CRMS
    nennt locale in der Anfrage, etwa de-CH
    Ist sie gesetzt, gilt sie.
  2. 2
    CIAS
    hat für die laufende Anfrage eine Sprache gewählt
    In dieser Reihenfolge: Claim locale im Token, dann der Header Accept-Language, dann codamai.i18n.default-locale. CRMS liest selbst kein Token und keinen Header.
  3. 3
    CRMS
    außerhalb einer Anfrage: codamai.i18n.default-locale
    Ergebnis: die Sprache des Dokuments

Mit dieser Sprache sucht CRMS die passende Sprachvariante der Vorlage: erst genau de-CH, dann de, dann die Standardvariante der Vorlage. Wie das im Einzelnen geht, steht unter Wie CRMS die Vorlage findet. Welche Variante gegriffen hat, steht im Antwort-Header Crms-Template-Variant.

Zahlen und Daten formatiert CRMS immer in der angefragten Sprache, auch wenn eine Variante einer anderen Sprache gegriffen hat. Im PDF setzt CRMS die Sprache als lang an das <html>-Element, wenn die Vorlage keins setzt. Barrierefreie PDFs brauchen das.

Woher die Zeitzone kommt

  1. 1
    Client→CRMS
    nennt timeZone in der Anfrage, etwa Europe/Berlin
    Ist sie gesetzt, gilt sie.
  2. 2
    CRMS
    liest die Umgebungsvariable TZ des Containers
    Dieselbe Variable gilt für alle CodamAI-Module. Die POSIX-Form :Europe/Berlin ist auch erlaubt. Ist TZ keine bekannte Zeitzone, startet die Anwendung nicht.
  3. 3
    CRMS
    ohne TZ: UTC
    Ergebnis: die Zeitzone des Dokuments

Eine eigene Zeitzonen-Einstellung für CRMS gibt es nicht. Bei FINAL legt CRMS Sprache und Zeitzone mit dem Dokument ab.

Wie Werte im Dokument aussehen

Die Vorlage formatiert mit FreeMarker. Sprache und Zeitzone sind dabei schon gesetzt. Mit der Payload {"amount": 1234.5, "n": 1234567, "flag": true, "due": "2026-10-17", "at": "2026-10-17T08:30:00Z"}, due als DATE und at als DATETIME deklariert, und der Zeitzone Europe/Berlin kommt heraus:

In der Vorlagelocale: delocale: en
${amount}1.234,51,234.5
${amount?string('0.00')}1234,501234.50
${amount?c}1234.51234.5
${n}1.234.5671,234,567
${flag}truetrue
${due}17.10.2026Oct 17, 2026
${due?string.long}17. Oktober 2026October 17, 2026
${due?string('dd.MM.yyyy')}17.10.202617.10.2026
${at}17.10.2026, 10:30:00Oct 17, 2026, 10:30:00 AM
${at?string('dd.MM.yyyy HH:mm z')}17.10.2026 10:30 MESZ17.10.2026 10:30 CEST
  • ?c gibt eine Zahl ohne Formatierung aus, für Maschinen statt für Menschen. Das brauchst du etwa in Tabellenzellen, siehe Ausgabetypen und Formate.
  • Wahrheitswerte kommen immer als true oder false. Willst du „ja“ und „nein“, schreibe ${flag?string('ja', 'nein')}.
  • Der Zeitpunkt 08:30Z erscheint als 10:30, weil das Dokument in Europe/Berlin gerendert wird.
  • Ein Kalenderdatum (DATE) gilt als Mitternacht in der Zeitzone des Dokuments. Es verschiebt sich darum nicht auf den Vortag.

Fallen

Weiter

Suchen