1 26 package org.snipsnap.util; 27 28 import java.io.File ; 29 import java.io.FileInputStream ; 30 import java.io.IOException ; 31 import java.util.Iterator ; 32 import java.util.Properties ; 33 import java.util.TreeSet ; 34 35 public class LocaleComparator { 36 public static void main(String args[]) { 37 if(args.length >= 2) { 38 File messagesFile = new File (args[0]); 39 File referenceFile = new File (args[1]); 40 Properties messages = new Properties (); 41 Properties reference = new Properties (); 42 43 try { 44 messages.load(new FileInputStream (messagesFile)); 45 reference.load(new FileInputStream (referenceFile)); 46 } catch (IOException e) { 47 System.err.println("Error: "+e.getMessage()); 48 } 49 50 Properties changes[] = compareBundles(messages, reference); 51 if(!changes[0].isEmpty()) { 52 System.out.println("There are "+changes[0].size()+" missing messages in '"+messagesFile+"':"); 53 Iterator it = new TreeSet (changes[0].keySet()).iterator(); 54 while(it.hasNext()) { 55 String key = (String )it.next(); 56 System.out.println(key+"\t=\t"+changes[0].getProperty(key)); 57 } 58 } 59 if(!changes[1].isEmpty()) { 60 System.out.println("The following " + changes[1].size() + " messages are not translated in '" + messagesFile + "':"); 61 System.out.println("Ignore them if they are the same in other languages."); 62 Iterator it = new TreeSet (changes[1].keySet()).iterator(); 63 while (it.hasNext()) { 64 String key = (String ) it.next(); 65 System.out.println(key + "\t=\t" + changes[1].getProperty(key)); 66 } 67 } 68 } else { 69 System.err.println("usage: LocaleComparator <messages file> <reference file>"); 70 } 71 System.exit(0); 72 } 73 74 public static Properties [] compareBundles(Properties bundle, Properties refBundle) { 75 Properties missingKeys = new Properties (); 76 Properties nonTranslatedKeys = new Properties (); 77 78 Iterator refIt = refBundle.keySet().iterator(); 79 while(refIt.hasNext()) { 80 String key = (String )refIt.next(); 81 String value = refBundle.getProperty(key).trim(); 82 if(!bundle.containsKey(key)) { 83 missingKeys.setProperty(key, value); 84 } else if(value.equals(bundle.getProperty(key).trim())) { 85 nonTranslatedKeys.setProperty(key, value); 86 } 87 } 88 return new Properties [] { missingKeys, nonTranslatedKeys }; 89 } 90 91 } 92 | Popular Tags |