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.

This commit is contained in:
2025-10-29 13:49:50 +01:00
parent 3776167299
commit f026a4fec6
2 changed files with 29 additions and 1 deletions

View File

@@ -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";
}
}

View File

@@ -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.
*