Index: tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/NormalizeKeys.java
===================================================================
--- tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/NormalizeKeys.java	(revision 1232)
+++ tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/NormalizeKeys.java	(revision 1233)
@@ -1,12 +1,10 @@
 package org.txm.rcp.translate.devtools;
 
-import java.util.HashSet;
-
 import org.eclipse.osgi.util.NLS;
 import org.txm.utils.BiHashMap;
 
 /**
- * Normalizes the keys using the message words.
+ * Normalizes the keys using the words of the message sentence.
  * eg. : "Error while computing." => errorWhileComputing
  * 
  * 
@@ -24,7 +22,7 @@
 	public static String preserve = "^(common_|error_|info_).*$"; 
 	
 	/**
-	 * 
+	 * Normalizes the keys of the specified messages map.
 	 * @param messages
 	 * @return
 	 */
@@ -45,30 +43,15 @@
 			}
 			
 			messages.put(normalize(messages.get(key)), messages.get(key));
+			//messages.removeByKey(key);
 		}
 		
 		return messages;
 	}
 	
-//	/**
-//	 * 
-//	 * @param strings
-//	 * @return
-//	 */
-//	public static HashSet<String> normalize(HashSet<String> strings)	{
-//		for (String str : strings) {
-//			if(debug)	{
-//				System.out.println(str);
-//				System.out.println("   => " + normalize(str));
-//			}
-//		}
-//		
-//		return strings;
-//	}
-	
-	
+
 	/**
-	 * 
+	 * Normalizes the specified string.
 	 * @param str
 	 */
 	public static String normalize(String str)	{
Index: tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/FindUnusedKeys.java
===================================================================
--- tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/FindUnusedKeys.java	(revision 1232)
+++ tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/FindUnusedKeys.java	(revision 1233)
@@ -1,5 +1,11 @@
 package org.txm.rcp.translate.devtools;
 
+/**
+ * Checks that all key defined in Messages.java are used in the source files.
+ * 
+ * @author sjacquot
+ *
+ */
 public class FindUnusedKeys {
 
 }
Index: tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/i18n/WorkspaceMessagesManager.java
===================================================================
--- tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/i18n/WorkspaceMessagesManager.java	(revision 1232)
+++ tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/i18n/WorkspaceMessagesManager.java	(revision 1233)
@@ -7,7 +7,7 @@
 import java.util.LinkedHashMap;
 
 /**
- * Manages the messages of the TXM projects of a RCP workspace
+ * Manages the messages of the TXM projects of an RCP workspace
  * 
  * @author mdecorde
  *
@@ -29,8 +29,11 @@
 	}
 	
 	public WorkspaceMessagesManager(File workspaceLocation) throws UnsupportedEncodingException, FileNotFoundException, IOException {
+		
 		this.workspaceLocation = workspaceLocation;
 		
+		//System.out.println("WorkspaceMessagesManager.WorkspaceMessagesManager(): workspace location = " + this.workspaceLocation);
+		
 		if (!workspaceLocation.exists()) return;
 		if (!workspaceLocation.isDirectory()) return;
 		
Index: tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/i18n/PluginMessages.java
===================================================================
--- tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/i18n/PluginMessages.java	(revision 1232)
+++ tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/i18n/PluginMessages.java	(revision 1233)
@@ -8,8 +8,10 @@
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.LinkedHashSet;
 import java.util.Properties;
 
@@ -34,8 +36,14 @@
 	BiHashMap<File, String> file2lang = new BiHashMap<File, String>();
 		
 	public PluginMessages(File projectDirectory, File messageFile) throws UnsupportedEncodingException, FileNotFoundException, IOException {
+		
 		this.messageFile = messageFile;
 		this.projectDirectory = projectDirectory;
+
+		System.out.println("********************************************************************************************************************");
+		System.out.println("PluginMessages.PluginMessages(): project directory = " + this.projectDirectory);
+		System.out.println("PluginMessages.PluginMessages(): message file = " + this.messageFile);
+		
 		File[] propFiles = messageFile.getParentFile().listFiles();
 		for (File propFile : propFiles) {
 			String name = propFile.getName();
@@ -206,28 +214,73 @@
 	}
 	
 	public void summary() {
+		
 		System.out.println(getMessageClassName());
+		
 		System.out.println("Messages keys");
 		for (String key : messageKeys) {
-			System.out.println(" $key");
+			System.out.println(key);
 		}
 		
 		System.out.println("Langs");
 		for (File lang : langs.keySet()) {
-			System.out.println(" '$lang'");
+			System.out.println("  ------------------------------------------------------------------------------------------------------------------------------");
+			System.out.println("  " + lang);
+			System.out.println("  ------------------------------------------------------------------------------------------------------------------------------");
 			BiHashMap<String, String> hash = langs.get(lang);
 			System.out.println(" keys="+ hash.getKeys());
 			for (String key : hash.getKeys()) {
-				System.out.println("  $key="+hash.get(key));
+				System.out.println("  " + key + "="+hash.get(key));
 			}
 		}
 	}
 	
+	
+    public void walk(File path, String fileExtension) {
+
+		File[] list = path.listFiles();
+
+		if (list == null) {
+			return;
+		}
+
+		for (File f : list) {
+			if (f.isDirectory()) {
+				this.walk(f, fileExtension);
+				// System.out.println( "Dir:" + f.getAbsoluteFile() );
+			}
+			else if (f.getName().endsWith(fileExtension)
+					//&& !f.equals(this.messageFile)
+					) {
+				
+				System.out.println("File: " + f.getAbsoluteFile());
+			}
+		}
+    }
+	
+    /**
+     * Returns all Java files using the specified message key.
+     * @param key
+     */
+	public void getFilesUsingKey(String key)	{
+		this.walk(this.projectDirectory, ".java");
+	}
+	
+	/**
+	 * 
+	 * @param args
+	 * @throws UnsupportedEncodingException
+	 * @throws FileNotFoundException
+	 * @throws IOException
+	 */
 	public static void main(String[] args) throws UnsupportedEncodingException, FileNotFoundException, IOException {
-		File projectFile = new File("/home/mdecorde/workspace047/org.txm.core");
+		File projectFile = new File(new File(System.getProperty("user.dir")).getParentFile().getAbsolutePath() + "/org.txm.core");
 		File messageFile = new File(projectFile, "src/java/org/txm/core/messages/TXMCoreMessages.java");
 		PluginMessages dict = new PluginMessages(projectFile, messageFile);
 		
+		
+		//dict.getFilesUsingKey("test");
+		
 		dict.summary();
 		//dict.saveChanges();
 	}
@@ -239,4 +292,12 @@
 	public HashMap<File, BiHashMap<String, String>> getLangs() {
 		return langs;
 	}
+
+	/**
+	 * Gets the project root directory.
+	 * @return the projectDirectory
+	 */
+	public File getProjectDirectory() {
+		return projectDirectory;
+	}
 }
