X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Futil%2FMessageManager.java;h=823fcc31a182783ae0717917c421458a18987646;hb=a94a9652cff4b0dddcf2c0128ed79cc3e2d40324;hp=71fc47ab1f59d5861dbc921082373791f0632820;hpb=6c52a1ff889b6320dd8b3767c77b0555f818352f;p=jalview.git diff --git a/src/jalview/util/MessageManager.java b/src/jalview/util/MessageManager.java index 71fc47a..823fcc3 100644 --- a/src/jalview/util/MessageManager.java +++ b/src/jalview/util/MessageManager.java @@ -21,10 +21,11 @@ package jalview.util; import java.text.MessageFormat; +import java.util.HashSet; import java.util.Locale; import java.util.ResourceBundle; -//import java.util.logging.Level; -//import java.util.logging.Logger; +import java.util.ResourceBundle.Control; +import java.util.Set; import org.apache.log4j.Logger; @@ -42,21 +43,22 @@ public class MessageManager private static ResourceBundle rb; - private static Logger log = Logger + private final static Logger log = Logger .getLogger(MessageManager.class.getCanonicalName()); - private static Locale loc; + private final static Locale loc; + + private final static Set reportedMissing = new HashSet<>(); static { + loc = Locale.getDefault(); try { - /* Localize Java dialogs */ - loc = Locale.getDefault(); - // Locale.setDefault(loc); /* Getting messages for GV */ log.info("Getting messages for lang: " + loc); - rb = ResourceBundle.getBundle("lang.Messages", loc); + Control control = Control.getControl(Control.FORMAT_PROPERTIES); + rb = ResourceBundle.getBundle("lang.Messages", loc, control); // if (log.isLoggable(Level.FINEST)) // { // // this might take a while, so we only do it if it will be shown @@ -84,7 +86,8 @@ public class MessageManager value = rb.getString(key); } catch (Exception e) { - log.warn("I18N missing: " + loc + "\t" + key); + String msg = "I18N missing: " + loc + "\t" + key; + logWarning(key, msg); } return value; } @@ -96,20 +99,20 @@ public class MessageManager public static String formatMessage(String key, Object... params) { - return MessageFormat.format(rb.getString(key), params); + return MessageFormat.format(getString(key), params); } public static String formatMessage(String key, String[] params) { - return MessageFormat.format(rb.getString(key), (Object[]) params); + return MessageFormat.format(getString(key), (Object[]) params); } /** - * lookup and return a key given a root and a human-readable(ish) name that + * Looks up and returns a key given a root and a human-readable(ish) name that * when combined might resolve to an i18n string. If the key doesn't resolve, - * then name is returned.if the key doesn't exist. Use this for - * programatically constructed keys that have have a human readable - * alternative used in the program (e.g. BLOSUM62 and label.score_blosum62) + * then name is returned. Use this for programmatically constructed keys that + * have a human readable alternative used in the program (e.g. BLOSUM62 and + * label.score_blosum62). * * @param keyroot * @param name @@ -123,9 +126,25 @@ public class MessageManager name = rb.getString(smkey); } catch (Exception x) { - log.info("I18N missing key with root " + keyroot + ": " + loc + "\t" - + smkey); // was FINEST + String msg = "I18N missing key with root " + keyroot + ": " + loc + "\t" + + smkey; + logWarning(smkey, msg); } return name; } + + /** + * Logs missing keys (each key once only per run) + * + * @param key + * @param msg + */ + private static void logWarning(String key, String msg) + { + if (!reportedMissing.contains(key)) + { + reportedMissing.add(key); + log.info(msg); + } + } }