Mit Version 4.2025.15 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. 

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


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.


BusinessException
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
InputRequiredException
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
MessageContext
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.

BusinessException
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
InputRequiredException
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
MessageContext
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(machineApi.getErrorMessage()); // vor v4.2025.15
throw new BusinessException(new DoNotTranslate(machineApi.getErrorMessage())); // ab v4.2025.15

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.

BusinessException
throw new BusinessException("Die Liefermenge " + iMenge + " ist überschritten?"); // vor v4.2025.15
throw new BusinessException("org.nuclet.handel.delivery-quantity-exceeded", "Die Liefermenge {} ist überschritten?", Locale.GERMAN).withArgs(iMenge); // ab v4.2025.15
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
MessageContext
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


  • Keine Stichwörter