package net.sf.openrocket.utils; import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; public class L10nPropertyReport { private static String[] supportedLocales = new String[] { "en", "de", "es", "fr", "it", "ru", "cs", "pl", "ja", "pt", "tr", "zh_CN", "uk_UA" }; public static void main(String[] args) throws Exception { Properties english; Map<String, Properties> langs = new HashMap<String, Properties>(); System.out.println("Loading All Resource files"); english = new Properties(); InputStream in = L10nPropertyReport.class.getResourceAsStream("/l10n/messages.properties"); english.load(in); System.out.println("en contains " + english.keySet().size()); for (String localename : supportedLocales) { if ("en".equals(localename)) { continue; } Properties p = new Properties(); in = L10nPropertyReport.class.getResourceAsStream("/l10n/messages_" + localename + ".properties"); p.load(in); System.out.println(localename + " contains " + p.keySet().size()); langs.put(localename, p); } // check for languages missing an en key: List<String> sortedKeys = getSortedKeys(english); for (String key : sortedKeys) { List<String> missing = new ArrayList<String>(10); for (Map.Entry<String, Properties> en : langs.entrySet()) { if (en.getValue().getProperty(key) != null) { continue; } missing.add(en.getKey()); } if (missing.size() > 0) { System.out.println(key + " missing from " + missing); } } // Check each locale for extra keys: for (Map.Entry<String, Properties> lang : langs.entrySet()) { System.out.println("Extra keys in " + lang.getKey()); sortedKeys = getSortedKeys(lang.getValue()); for (String key : sortedKeys) { if (english.getProperty(key) == null) { System.out.println("\t" + key); } } } } private static List<String> getSortedKeys(Properties p) { List<String> sortedKeys = new ArrayList<String>(p.keySet().size()); for (Object obj : p.keySet()) { sortedKeys.add((String) obj); } Collections.sort(sortedKeys); return sortedKeys; } }