diff --git a/src/eu/telecom_bretagne/praxis/common/Configuration.java b/src/eu/telecom_bretagne/praxis/common/Configuration.java index 99d7fe2e0a9bce110ac5cba007d42a083ebee32a..93b5a789d325dc16cb6ba7273d49c336333b875c 100644 --- a/src/eu/telecom_bretagne/praxis/common/Configuration.java +++ b/src/eu/telecom_bretagne/praxis/common/Configuration.java @@ -612,9 +612,7 @@ public final class Configuration { if (language == null) language = "en"; - Locale locale = new Locale(language); - Locale.setDefault(locale); - I18N.reinit(); + I18N.setLocale(new Locale(language)); } /** diff --git a/src/eu/telecom_bretagne/praxis/common/I18N.java b/src/eu/telecom_bretagne/praxis/common/I18N.java index e1932950dee8514a96eadeaee72f5d413f261ac7..1e82875abd606133ae825cc93ecac4ff156ec38c 100644 --- a/src/eu/telecom_bretagne/praxis/common/I18N.java +++ b/src/eu/telecom_bretagne/praxis/common/I18N.java @@ -15,23 +15,28 @@ public class I18N private static ResourceBundle applicationSpecific; - private static MessageFormat msg_fmt; + private static final MessageFormat msg_fmt = new MessageFormat(""); + static { - reinit(); + setLocale(Locale.getDefault()); } - public static void reinit() + public static void setLocale(Locale locale) { - praxis = ResourceBundle.getBundle("data/i18n/praxis", Locale.getDefault()); + praxis = ResourceBundle.getBundle("data/i18n/praxis", locale); String appSpecific = Configuration.get("i18n", ""); if (!"".equals(appSpecific)) - applicationSpecific = ResourceBundle.getBundle(appSpecific, Locale.getDefault()); + applicationSpecific = ResourceBundle.getBundle(appSpecific, locale); else applicationSpecific = null; - msg_fmt = new MessageFormat(""); - Log.log.log(java.util.logging.Level.INFO, "Setting locale: {0}", Locale.getDefault()); - msg_fmt.setLocale(Locale.getDefault()); + Log.log.log(java.util.logging.Level.INFO, "Setting locale: {0}", locale); + synchronized(msg_fmt) { msg_fmt.setLocale(locale); } + } + + public static Locale getLocale() + { + synchronized(msg_fmt) { return msg_fmt.getLocale(); } } /** @@ -65,7 +70,7 @@ public class I18N */ static public String s(String key, Object args) { - String fmt = ""; + String fmt = key; try { if (applicationSpecific != null) @@ -81,8 +86,6 @@ public class I18N } else fmt = praxis.getString(key); - msg_fmt.applyPattern(fmt); - return msg_fmt.format(args); } catch (java.util.MissingResourceException e) { @@ -92,8 +95,11 @@ public class I18N { Log.log.log(Level.SEVERE, "I18N: could format " + fmt, e); } - msg_fmt.applyPattern(key); - return msg_fmt.format(args); + synchronized (msg_fmt) + { + msg_fmt.applyPattern(fmt); + return msg_fmt.format(args); + } } /**