import java.util.ResourceBundle.Control;
import java.util.Set;
-import org.apache.log4j.Logger;
+import jalview.log.JLoggerLog4j;
/**
*
*/
public class MessageManager
{
-
- // BH 2018 switched to org.apache.llog4j.Logger
-
private static ResourceBundle rb;
- private static Logger log = Logger
+ private static JLoggerLog4j log = JLoggerLog4j
.getLogger(MessageManager.class.getCanonicalName());
private static Locale loc;
/* Getting messages for GV */
log.info("Getting messages for lang: " + loc);
Control control = Control.getControl(Control.FORMAT_PROPERTIES);
- rb = ResourceBundle.getBundle("lang.Messages", loc, control);
+ rb = ResourceBundle.getBundle("lang.Messages", Platform.getLocaleOrNone(loc), control);
// if (log.isLoggable(Level.FINEST))
// {
// // this might take a while, so we only do it if it will be shown
}
+ /**
+ * Returns the resource bundle text for the given key, or if not found, the
+ * key prefixed by "[missing key]"
+ *
+ * @param key
+ * @return
+ */
public static String getString(String key)
{
String value = "[missing key] " + key;
} catch (Exception e)
{
String msg = "I18N missing: " + loc + "\t" + key;
- logWarning(key, msg);
+ logWarning(key, msg);
}
return value;
}
return loc;
}
+ /**
+ * Returns the resource bundle text for the given key, with tokens {@code {0},
+ * {1} etc replaced by the supplied parameters. If the key is not found,
+ * returns the key and values prefixed by "[missing key]"
+ *
+ * @param key
+ *
+ * @return
+ */
public static String formatMessage(String key, Object... params)
{
- return MessageFormat.format(getString(key), params);
+ try
+ {
+ return MessageFormat.format(rb.getString(key), params);
+ } catch (Exception e)
+ {
+ log.warn("I18N missing: " + loc + "\t" + key);
+ }
+ String value = "[missing key] " + key + "";
+ for (Object p : params)
+ {
+ value += " '" + p.toString() + "'";
+ }
+ return value;
}
+ /**
+ * Returns the resource bundle text for the given key, with tokens {@code {0},
+ * {1} etc replaced by the supplied parameters. If the key is not found,
+ * returns the key and values prefixed by "[missing key]"
+ *
+ * @param key
+ *
+ * @return
+ */
public static String formatMessage(String key, String[] params)
{
- return MessageFormat.format(getString(key), (Object[]) params);
+ return formatMessage(key, (Object[]) params);
}
/**
- * 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. Use this for programmatically constructed keys that
- * have a human readable alternative used in the program (e.g. BLOSUM62 and
+ * Returns resource bundle text given a root and a human-readable(ish) name
+ * that when combined might resolve to an i18n string. {@code name} is forced
+ * to lower case, with any spaces removed, and concatenated to {@code keyroot}
+ * to form a lookup key.
+ * <p>
+ * If the key doesn't resolve, then {@code name} is returned.
+ * <p>
+ * Use this for programmatically constructed keys that might have a human
+ * readable alternative used in the program (e.g. BLOSUM62 and
* label.score_blosum62).
*
* @param keyroot
*/
public static String getStringOrReturn(String keyroot, String name)
{
- String smkey = keyroot + name.toLowerCase().replaceAll(" ", "");
+ String smkey = keyroot
+ + name.toLowerCase(Locale.ROOT).replaceAll(" ", "");
try
{
name = rb.getString(smkey);
} catch (Exception x)
{
- String msg = "I18N missing key with root " + keyroot + ": " + loc + "\t"
- + smkey;
- logWarning(smkey, msg);
+ String msg = "I18N missing key with root " + keyroot + ": " + loc
+ + "\t" + smkey;
+ logWarning(smkey, msg);
}
return name;
}
* @param key
* @param msg
*/
- private static void logWarning(String key, String msg)
+ private static void logWarning(String key, String msg)
{
- if (!reportedMissing.contains(key))
- {
+ if (!reportedMissing.contains(key))
+ {
reportedMissing.add(key);
- log.info(msg);
- }
+ log.info(msg);
+ }
}
}