Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Auszug
hiddentrue

Nuclos Regeln lokalisieren: BusinessException, InputRequiredException, MessageContext, Lokalisierungsschlüssel, Locale, withArgs, DoNotTranslate.

globe with meridians Sprache: Deutsch · English

hammer and wrench Regeln lokalisieren

Regelmeldungen übersetzbar machen – BusinessException, InputRequiredException und MessageContext mit Schlüsseln, Locale und Platzhaltern.

Status
colourPurple
titleHow-to
Status
colourBlue
titleAnwendungsentwickler
Status
colourGreen
titleStand: Jul 2026
Status
colourGrey
titlegilt fuer Nuclos 4.2026.x

Panel
bgColor#F4F5F7

Auf dieser Seite

Inhalt
maxLevel2
minLevel2

Überblick

Regelmeldungen an den Benutzer lassen sich seit v4.2025.15 lokalisieren. Unterstützung bieten die Klassen BusinessException, InputRequiredException und MessageContext. Übergib nach Möglichkeit immer eine Locale – sonst versucht Nuclos, das Nuclet über das Package zu ermitteln.

Der schnelle Weg

Für statische Texte: automatische Schlüsselerzeugung per Boolean-Flag true.

Codeblock
languagejava
hier
Codeblock
languagejava
throw new BusinessException(new DoNotTranslate(machineApi.getErrorMessage()));

Der optimale Weg

Vergib einen festen, eindeutigen Lokalisierungsschlüssel. So kannst du den Ausgangstext später ändern, ohne dass Übersetzungen komplett neu aufgebaut werden.

Codeblock
languagejava
throw new BusinessException(new DoNotTranslate(machineApi.getErrorMessage()));

Lokalisierung verhindern

Text als DoNotTranslate-Objekt übergeben:

Codeblock
languagejava

Es wurde eine neue Möglichkeit geschaffen Meldungen an einen Benutzer zu lokalisieren, und hier beschreiben wir Ihnen wie Sie Ihre Regeln auf die Lokalisierung umstellen können. 

Inhalt
maxLevel2

Informationen wie die Lokalisierung zentral funktioniert und administriert wird finden Sie hier. Bitte lesen Sie den Abschnitt Nuclet und Regel API.

Info
titleVersionsverlauf

ab 4.2025.15 bis 4.2025.28: Beta

ab 4.2025.29: Released

Folgende Klassen bieten Unterstützung für Übersetzungen:

Der schnelle Weg

Schnell und unkompliziert kann eine Meldung auf eine automatische Generierung eines Lokalisierungsschlüssels umgestellt werden. Dies sollte aber nur für statische Texte erfolgen!

Wenn keine Locale mitgegeben wird versucht Nuclos anhand des Package zu ermitteln zu welchem Nuclet eine Lokalisierungsanfrage gehört. Am ermittelten Nuclet werden die verfügbaren (System-)Spachen ausgewertet. Kann über diesen Mechanismus keine Locale eindeutig ermittelt werden, wird dem Übersetzer auch keine Source-Locale übermittelt. 

Wenn möglich sollten die Aufrufe daher immer eine Locale mitgeben.

Codeblock
languagejava
titleBusinessException
throw new BusinessException("Bitte geben Sie ein Lieferdatum an"); // vor v4.2025.15
throw new BusinessException(true, "Bitte geben Sie ein Lieferdatum an"); // ab v4.2025.15
Codeblock
languagejava
titleInputRequiredException
throw new InputRequiredException(
				new InputSpecification(InputSpecification.CONFIRM_YES_NO, "my.nuclet.input.key.1",
"Soll eine Bestätigung gesendet werden?", "Rückfrage")); // vor v4.2025.15
throw new InputRequiredException(
				new InputSpecification(InputSpecification.CONFIRM_YES_NO, "my.nuclet.input.key.1",
true, "Soll eine Bestätigung gesendet werden?", "Rückfrage", Locale.GERMAN)); // ab v4.2025.15
Codeblock
languagejava
titleMessageContext
MessageContext.sendMessage("Das Formular wurde erzeugt und im Laufwerk abgelegt."); // vor v4.2025.15
MessageContext.sendMessage(true, "Das Formular wurde erzeugt und im Laufwerk abgelegt."); // ab v4.2025.15

Der optimale Weg

Vergeben Sie einen festen und eindeutigen Lokalisierungsschlüssel. Damit können Sie den Ausgangstext jederzeit anpassen, ohne das nachfolgende Lokalisierungen diese Texte ebenfalls komplett neu aufbauen müssen.

Codeblock
languagejava
titleBusinessException
throw new BusinessException("Bitte geben Sie ein Lieferdatum an"); // vor v4.2025.15
throw new BusinessException("org.nuclet.handel.enter-delivery-date", "Bitte geben Sie ein Lieferdatum an", Locale.GERMAN); // ab v4.2025.15
Codeblock
languagejava
titleInputRequiredException
throw new InputRequiredException(
				new InputSpecification(InputSpecification.CONFIRM_YES_NO, "org.nuclet.handel.input.key.1",
"Soll eine Bestätigung gesendet werden?", "Rückfrage")); // vor v4.2025.15
throw new InputRequiredException(
				new InputSpecification(InputSpecification.CONFIRM_YES_NO, "org.nuclet.handel.input.key.1",
"org.nuclet.handel.send-confirmation", "Soll eine Bestätigung gesendet werden?", "Rückfrage", Locale.GERMAN)); // ab v4.2025.15
Codeblock
languagejava
titleMessageContext
MessageContext.sendMessage("Das Formular wurde erzeugt und im Laufwerk abgelegt."); // vor v4.2025.15
MessageContext.sendMessage("org.nuclet.handel.pdf-created-and-stored", "Das Formular wurde erzeugt und im Laufwerk abgelegt.", /*no-title*/null, Locale.GERMAN); // ab v4.2025.15

Lokalisierung verhindern

Übergeben Sie den Text als Do-Not-Translate-Objekt.

...

throw new BusinessException(new DoNotTranslate(machineApi.getErrorMessage()));

...

Meldungen parametrisieren

Wenn eine Meldung an einigen Stellen dynamisch ersetzt werden soll, kann dies mit den "withArgs" Methoden erfolgen. Übersetzt wird dann nur das Template und im Anschluss werden die Teile ersetzt.

...

languagejava
titleBusinessException

...

Dynamische Teile über withArgs/withMessageArgs – übersetzt wird nur das Template mit {}-Platzhaltern:

Codeblock
languagejava

...

Verwandte Seiten

globe with meridians Lokalisierung


Übersicht.

Öffnen →

gear Regelwerke


Regeln.

Öffnen →

electric plug Unterstützende Klassen


Regel-API.

Öffnen →

InputRequiredException
throw new InputRequiredException(
 				new InputSpecification(InputSpecification.CONFIRM_YES_NO, "org.nuclet.handel.input.key.2",
"Ist die Liefermenge " + iMenge + " korrekt?", "Rückfrage")); // vor v4.2025.15
throw new InputRequiredException(
				new InputSpecification(InputSpecification.CONFIRM_YES_NO, "org.nuclet.handel.input.key.2",
"org.nuclet.handel.confirm-quantity", "Ist die Liefermenge {} korrekt?", "Rückfrage", Locale.GERMAN)
.withMessageArgs(iMenge)); // ab v4.2025.15
Codeblock
languagejava
titleMessageContext
MessageContext.sendMessage("Das Formular " + sName + " wurde erzeugt und im Laufwerk abgelegt."); // vor v4.2025.15 MessageContext.withMessageArgs(sName).sendMessage("org.nuclet.handel.pdf-created-and-stored", "Das Formular {} wurde erzeugt und im Laufwerk abgelegt.", /*no-title*/null, Locale.GERMAN); // ab v4.2025.15