// Path: src/main/java/org/madlonkay/supertmxmerge/util/LocString.java
// public class LocString {
//     
//     private static final ResourceBundle bundle = ResourceBundle.getBundle("org/madlonkay/supertmxmerge/Strings");
//     
//     private static final List<ResourceBundle> moreBundles = new ArrayList<ResourceBundle>();
//     
//     private static final Logger LOGGER = Logger.getLogger(LocString.class.getName());
//     
//     public static String get(String id) {
//         for (int i = moreBundles.size() - 1; i >= 0; i--) {
//             try {
//                 return moreBundles.get(i).getString(id);
//             } catch (MissingResourceException ex) {
//                 LOGGER.log(Level.FINE, "Resource " + id + " not found in supplied resource bundle", ex);
//             }
//         }
//         return bundle.getString(id);
//     }
//     
//     public static String getFormat(String id, Object... var) {
//         return MessageFormat.format(get(id), var);
//     }
//     
//     public static void addBundle(ResourceBundle bundle) {
//         if (bundle == null) {
//             return;
//         }
//         if (!moreBundles.contains(bundle)) {
//             moreBundles.add(bundle);
//         }
//     }
// }


import java.util.Map;
import java.util.Map.Entry;
import java.util.MissingResourceException;
import java.util.TreeMap;
import org.jdesktop.beansbinding.Converter;
import org.madlonkay.supertmxmerge.util.LocString;
            sb.append(":</b> ");
            sb.append(toString(e.getValue()));
            sb.append("<br>");
        }
        sb.append("</html>");
        return sb.toString();
    }
    
    public static String mapToPlainText(Map<?, ?> map) {
        if (map == null || map.isEmpty()) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (Entry<Object, Object> e : new TreeMap<Object, Object>(map).entrySet()) {
            sb.append(" - ");
            sb.append(localize(toString(e.getKey())));
            sb.append(": ");
            sb.append(toString(e.getValue()));
            sb.append("\n");
        }
        return sb.toString();
    }

    @Override
    public Object convertReverse(Object value) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    private static String localize(String string) {
        try {
// Path: src/main/java/org/madlonkay/supertmxmerge/util/LocString.java
// public class LocString {
//     
//     private static final ResourceBundle bundle = ResourceBundle.getBundle("org/madlonkay/supertmxmerge/Strings");
//     
//     private static final List<ResourceBundle> moreBundles = new ArrayList<ResourceBundle>();
//     
//     private static final Logger LOGGER = Logger.getLogger(LocString.class.getName());
//     
//     public static String get(String id) {
//         for (int i = moreBundles.size() - 1; i >= 0; i--) {
//             try {
//                 return moreBundles.get(i).getString(id);
//             } catch (MissingResourceException ex) {
//                 LOGGER.log(Level.FINE, "Resource " + id + " not found in supplied resource bundle", ex);
//             }
//         }
//         return bundle.getString(id);
//     }
//     
//     public static String getFormat(String id, Object... var) {
//         return MessageFormat.format(get(id), var);
//     }
//     
//     public static void addBundle(ResourceBundle bundle) {
//         if (bundle == null) {
//             return;
//         }
//         if (!moreBundles.contains(bundle)) {
//             moreBundles.add(bundle);
//         }
//     }
// }


// Path: src/main/java/org/madlonkay/supertmxmerge/gui/MapToTextConverter.java
import java.util.Map;
import java.util.Map.Entry;
import java.util.MissingResourceException;
import java.util.TreeMap;
import org.jdesktop.beansbinding.Converter;
import org.madlonkay.supertmxmerge.util.LocString;

            sb.append(":</b> ");
            sb.append(toString(e.getValue()));
            sb.append("<br>");
        }
        sb.append("</html>");
        return sb.toString();
    }
    
    public static String mapToPlainText(Map<?, ?> map) {
        if (map == null || map.isEmpty()) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (Entry<Object, Object> e : new TreeMap<Object, Object>(map).entrySet()) {
            sb.append(" - ");
            sb.append(localize(toString(e.getKey())));
            sb.append(": ");
            sb.append(toString(e.getValue()));
            sb.append("\n");
        }
        return sb.toString();
    }

    @Override
    public Object convertReverse(Object value) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    private static String localize(String string) {
        try {
            return LocString.get("STM_METADATA_" + string.toUpperCase());