mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +00:00
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:
@@ -1,6 +1,11 @@
|
|||||||
package org.toop.local;
|
package org.toop.local;
|
||||||
|
|
||||||
import java.util.Locale;
|
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.ResourceManager;
|
||||||
import org.toop.framework.resource.resources.LocalizationAsset;
|
import org.toop.framework.resource.resources.LocalizationAsset;
|
||||||
|
|
||||||
@@ -8,6 +13,8 @@ public class AppContext {
|
|||||||
private static final LocalizationAsset localization = ResourceManager.get("localization");
|
private static final LocalizationAsset localization = ResourceManager.get("localization");
|
||||||
private static Locale locale = Locale.forLanguageTag("en");
|
private static Locale locale = Locale.forLanguageTag("en");
|
||||||
|
|
||||||
|
private static final Logger logger = LogManager.getLogger(AppContext.class);
|
||||||
|
|
||||||
public static LocalizationAsset getLocalization() {
|
public static LocalizationAsset getLocalization() {
|
||||||
return localization;
|
return localization;
|
||||||
}
|
}
|
||||||
@@ -22,6 +29,24 @@ public class AppContext {
|
|||||||
|
|
||||||
public static String getString(String key) {
|
public static String getString(String key) {
|
||||||
assert localization != null;
|
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";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,6 +63,9 @@ public class LocalizationAsset extends BaseResource implements LoadableResource,
|
|||||||
loaded = false;
|
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.
|
* Checks whether this asset has been loaded.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user