From f026a4fec6eaa8d279ccada3deb12d449eca19a9 Mon Sep 17 00:00:00 2001 From: Stef Date: Wed, 29 Oct 2025 13:49:50 +0100 Subject: [PATCH] Manually fallback to the fallback locale when a ResourceBundle is missing a resource key. Fallsback to "MISSING RESOUREC" if it's not present in the fallback. --- .../main/java/org/toop/local/AppContext.java | 27 ++++++++++++++++++- .../resource/resources/LocalizationAsset.java | 3 +++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/toop/local/AppContext.java b/app/src/main/java/org/toop/local/AppContext.java index 4d96fb4..04a1c08 100644 --- a/app/src/main/java/org/toop/local/AppContext.java +++ b/app/src/main/java/org/toop/local/AppContext.java @@ -1,6 +1,11 @@ package org.toop.local; import java.util.Locale; +import java.util.MissingResourceException; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.toop.framework.resource.ResourceLoader; import org.toop.framework.resource.ResourceManager; import org.toop.framework.resource.resources.LocalizationAsset; @@ -8,6 +13,8 @@ public class AppContext { private static final LocalizationAsset localization = ResourceManager.get("localization"); private static Locale locale = Locale.forLanguageTag("en"); + private static final Logger logger = LogManager.getLogger(AppContext.class); + public static LocalizationAsset getLocalization() { return localization; } @@ -22,6 +29,24 @@ public class AppContext { public static String getString(String key) { assert localization != null; - return localization.getString(key, locale); + + // TODO: Gebruik ResourceBundle.getBundle() zodat de fallback automatisch gaat. + // Hiervoor zou de assetManager aangepast moeten worden. + + try{ // Main return + return localization.getString(key, locale); + } + catch (MissingResourceException e) { + logger.error("Missing resource key: {}, in bundle: {}. ", key, locale, e); + } + + try{ // Fallback return + return localization.getString(key, localization.getFallback()); + } + catch (MissingResourceException e) { + logger.error("Missing resource key: {}, in default bundle!", key, e); + } + // Default return + return "MISSING RESOURCE"; } } diff --git a/framework/src/main/java/org/toop/framework/resource/resources/LocalizationAsset.java b/framework/src/main/java/org/toop/framework/resource/resources/LocalizationAsset.java index 3ec3328..cd1a89c 100644 --- a/framework/src/main/java/org/toop/framework/resource/resources/LocalizationAsset.java +++ b/framework/src/main/java/org/toop/framework/resource/resources/LocalizationAsset.java @@ -63,6 +63,9 @@ public class LocalizationAsset extends BaseResource implements LoadableResource, loaded = false; } + /** Returns the fallback locale used when locale is missing argument*/ + public Locale getFallback() {return this.fallback;} + /** * Checks whether this asset has been loaded. *