X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2FI18nManager.java;h=87d1df4997c1ab78f5eb0ac4d0ac7dc95552c5c0;hb=52bf9e8686c916be37a26a0b75340393d4478b05;hp=c056fe24d743ccb5e4cccd4118e21a733fccda02;hpb=312fec956e43f5d0a38617da5d0add9c62563e2c;p=GpsPrune.git diff --git a/tim/prune/I18nManager.java b/tim/prune/I18nManager.java index c056fe2..87d1df4 100644 --- a/tim/prune/I18nManager.java +++ b/tim/prune/I18nManager.java @@ -1,7 +1,11 @@ package tim.prune; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; import java.util.Locale; import java.util.MissingResourceException; +import java.util.Properties; import java.util.ResourceBundle; /** @@ -15,12 +19,15 @@ public abstract class I18nManager private static final Locale BACKUP_LOCALE = new Locale("en", "GB"); private static ResourceBundle EnglishTexts = null; - private static ResourceBundle ExtraTexts = null; + private static ResourceBundle LocalTexts = null; + + /** External properties file for developer testing */ + private static Properties ExternalPropsFile = null; /** - * Initialize the library - * using the (optional) locale + * Initialize the library using the (optional) locale + * @param inLocale locale to use, or null for default */ public static void init(Locale inLocale) { @@ -30,16 +37,32 @@ public abstract class I18nManager // Get bundle for selected locale, if any if (inLocale != null) { - ExtraTexts = ResourceBundle.getBundle(BUNDLE_NAME, inLocale); + LocalTexts = ResourceBundle.getBundle(BUNDLE_NAME, inLocale); } else { // locale is null so just use the system default - ExtraTexts = ResourceBundle.getBundle(BUNDLE_NAME, Locale.getDefault()); + LocalTexts = ResourceBundle.getBundle(BUNDLE_NAME, Locale.getDefault()); } } + /** + * Add a language file + * @param inFilename filename of file + */ + public static void addLanguageFile(String inFilename) + { + try + { + File file = new File(inFilename); + ExternalPropsFile = new Properties(); + ExternalPropsFile.load(new FileInputStream(file)); + } + catch (IOException ioe) {} + } + + /** * Lookup the given key and return the associated text * @param inKey key to lookup @@ -48,12 +71,19 @@ public abstract class I18nManager public static String getText(String inKey) { String value = null; + // look in external props file if available + if (ExternalPropsFile != null) + { + value = ExternalPropsFile.getProperty(inKey); + if (value != null && !value.equals("")) + return value; + } // look in extra texts if available - if (ExtraTexts != null) + if (LocalTexts != null) { try { - value = ExtraTexts.getString(inKey); + value = LocalTexts.getString(inKey); if (value != null && !value.equals("")) return value; }