convert to eclipse 3.1 message bundle
diff --git a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/AbstractDBPreferenceFieldPage.java b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/AbstractDBPreferenceFieldPage.java
index 08904d4..48fdc67 100644
--- a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/AbstractDBPreferenceFieldPage.java
+++ b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/AbstractDBPreferenceFieldPage.java
@@ -22,6 +22,7 @@
 import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.Rectangle;
@@ -138,7 +139,10 @@
             String name = id;
             if (name == null)
             {
-                Activator.getDefault().log(Messages.getString("AbstractDBPreferenceFieldPage.nodb", id)); //$NON-NLS-1$
+                Activator.getDefault().log(NLS.bind(Messages.AbstractDBPreferenceFieldPage_nodb, (new Object[]
+				{
+				    id
+				}))); //$NON-NLS-1$
                 continue;
             }
             IDataServerPreferenceSection section = (IDataServerPreferenceSection)sections.get(id);
diff --git a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/Messages.java b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/Messages.java
index 25053f7..d75b130 100644
--- a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/Messages.java
@@ -11,79 +11,19 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.common.ui.preferences;
 
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- *
- */
-public class Messages
-{
-    private static final String         BUNDLE_NAME     = "org.eclipse.datatools.common.ui.preferences.messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.common.ui.preferences.messages";//$NON-NLS-1$
 
-    private Messages()
-    {
-    }
+	private Messages() {
+		// Do not instantiate
+	}
 
-    public static String getString(String key)
-    {
-        // TODO Auto-generated method stub
-        try
-        {
-            return RESOURCE_BUNDLE.getString(key);
-        }
-        catch (MissingResourceException e)
-        {
-            return '!' + key + '!';
-        }
-    }
+	public static String AbstractDBPreferenceFieldPage_nodb;
 
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]
-        {
-            arg0
-        }
-        );
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]
-        {
-            arg0,arg1
-        }
-        );
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]
-        {
-            arg0,arg1,arg2
-        }
-        );
-    }
-
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++)
-            {
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-}
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/messages.properties b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/messages.properties
index d4709de..13a0df5 100644
--- a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/preferences/messages.properties
@@ -1 +1 @@
-AbstractDBPreferenceFieldPage.nodb=Cannot find database name by id: {0} 
+AbstractDBPreferenceFieldPage_nodb=Cannot find database name by id: {0}
diff --git a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/HTML2TextReader.java b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/HTML2TextReader.java
index cbefb28..9789adb 100644
--- a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/HTML2TextReader.java
+++ b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/HTML2TextReader.java
@@ -214,7 +214,7 @@
 
         if ("li".equals(html)) //$NON-NLS-1$
         {
-            return LINE_DELIM + Messages.getString("HTML2TextReader.listItemPrefix");
+            return LINE_DELIM + Messages.HTML2TextReader_listItemPrefix;
         }
         //$NON-NLS-1$ //$NON-NLS-2$
 
diff --git a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/HTMLTextPresenter.java b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/HTMLTextPresenter.java
index 6a2483c..8182b63 100644
--- a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/HTMLTextPresenter.java
+++ b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/HTMLTextPresenter.java
@@ -169,7 +169,7 @@
             if (line != null)
             {
                 append(buffer, _LINE_DELIM, lineFormatted ? presentation : null);
-                append(buffer, Messages.getString("HTMLTextPresenter.ellipse"), presentation); //$NON-NLS-1$
+                append(buffer, Messages.HTMLTextPresenter_ellipse, presentation); 
             }
 
             return trim(buffer, presentation);
diff --git a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/Messages.java b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/Messages.java
index 82d0e1e..3fefbba 100644
--- a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/Messages.java
@@ -11,70 +11,20 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.common.ui.util;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.common.ui.util.messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.common.ui.util.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
+	public static String HTML2TextReader_listItemPrefix;
+	public static String HTMLTextPresenter_ellipse;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/messages.properties b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/messages.properties
index 7206c98..d1a68cd 100644
--- a/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.common.ui/src/org/eclipse/datatools/sqltools/common/ui/util/messages.properties
@@ -1,2 +1,2 @@
-HTML2TextReader.listItemPrefix=\t- 
-HTMLTextPresenter.ellipse= ...
+HTML2TextReader_listItemPrefix=\t-
+HTMLTextPresenter_ellipse= ...
diff --git a/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/Activator.java b/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/Activator.java
index 03b5772..120d9c5 100644
--- a/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/Activator.java
+++ b/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/Activator.java
@@ -115,7 +115,7 @@
     
     public IStatus createErrorStatus(Throwable e) {
         return new Status(IStatus.ERROR, getBundle().getSymbolicName(),
-                INTERNAL_ERROR, Messages.getString("plugin.internal_error"), e); //$NON-NLS-1$
+                INTERNAL_ERROR, Messages.plugin_internal_error, e); 
     }
     
 }
diff --git a/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/internal/Messages.java b/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/internal/Messages.java
index a627477..292e84b 100644
--- a/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/internal/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/internal/Messages.java
@@ -11,70 +11,22 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.db.derby.internal;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = Messages.class.getPackage().getName() + ".messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.db.derby.internal.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
+	public static String SQLParser_datatype_judgeLength;
+	public static String SQLParser_datatype_judgeLengthAndScale;
+	public static String SQLParser_datatype_exceed_maxlength;
+	public static String plugin_internal_error;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/internal/messages.properties b/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/internal/messages.properties
index 29edc58..cf49c5a 100644
--- a/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/internal/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/internal/messages.properties
@@ -1,7 +1,8 @@
 ####################################################
 #  SQL ParserExpection Message
 ####################################################
-SQLParser.datatype.judgeLength = Precision must be great than zero 
-SQLParser.datatype.judgeLengthAndScale = You must specify a scale that is less than or equal to the size
-SQLParser.datatype.exceed.maxlength = The maximum length in bytes of the string allowed is 32767.
+SQLParser_datatype_judgeLength = Precision must be great than zero
+SQLParser_datatype_judgeLengthAndScale = You must specify a scale that is less than or equal to the size
+SQLParser_datatype_exceed_maxlength = The maximum length in bytes of the string allowed is 32767.
 
+plugin_internal_error=Internal error
diff --git a/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/parser/DerbySQLParser.java b/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/parser/DerbySQLParser.java
index c36234d..bf270ab 100644
--- a/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/parser/DerbySQLParser.java
+++ b/plugins/org.eclipse.datatools.sqltools.db.derby/src/org/eclipse/datatools/sqltools/db/derby/parser/DerbySQLParser.java
@@ -1968,7 +1968,7 @@
             jj_consume_token(CLOSEPAREN);
                                                     if ((length < scale))
                                                     {
-                                                            ParseException e = new ParseException(Messages.getString("SQLParser.datatype.judgeLengthAndScale"));
+                                                            ParseException e = new ParseException(Messages.SQLParser_datatype_judgeLengthAndScale);
                                                             e.currentToken = t.next;
                                                             exceptions.add(e);
                                                     }
diff --git a/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/GenericPlugin.java b/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/GenericPlugin.java
index c2a071d..698a9f0 100644
--- a/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/GenericPlugin.java
+++ b/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/GenericPlugin.java
@@ -114,7 +114,7 @@
     
     public IStatus createErrorStatus(Throwable e) {
         return new Status(IStatus.ERROR, getBundle().getSymbolicName(),
-                INTERNAL_ERROR, Messages.getString("plugin.internal_error"), e); //$NON-NLS-1$
+                INTERNAL_ERROR, Messages.plugin_internal_error, e); 
     }
 
 
diff --git a/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/Messages.java b/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/Messages.java
index 197605d..fefce99 100644
--- a/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/Messages.java
@@ -11,70 +11,22 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.db.generic.internal;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.db.generic.internal.messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.db.generic.internal.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
+	public static String SQLParser_datatype_judgeLength;
+	public static String SQLParser_datatype_judgeLengthAndScale;
+	public static String SQLParser_datatype_exceed_maxlength;
+	public static String plugin_internal_error;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/messages.properties b/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/messages.properties
index 29edc58..aa20ff2 100644
--- a/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/internal/messages.properties
@@ -1,7 +1,8 @@
 ####################################################
 #  SQL ParserExpection Message
 ####################################################
-SQLParser.datatype.judgeLength = Precision must be great than zero 
-SQLParser.datatype.judgeLengthAndScale = You must specify a scale that is less than or equal to the size
-SQLParser.datatype.exceed.maxlength = The maximum length in bytes of the string allowed is 32767.
+SQLParser_datatype_judgeLength = Precision must be great than zero
+SQLParser_datatype_judgeLengthAndScale = You must specify a scale that is less than or equal to the size
+SQLParser_datatype_exceed_maxlength = The maximum length in bytes of the string allowed is 32767.
 
+plugin_internal_error=Internal error
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/parser/GenericSQLParser.java b/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/parser/GenericSQLParser.java
index 4baccb5..5fbef37 100644
--- a/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/parser/GenericSQLParser.java
+++ b/plugins/org.eclipse.datatools.sqltools.db.generic/src/org/eclipse/datatools/sqltools/db/generic/parser/GenericSQLParser.java
@@ -1791,7 +1791,7 @@
             jj_consume_token(CLOSEPAREN);
                                                     if ((length < scale))
                                                     {
-                                                            ParseException e = new ParseException(Messages.getString("SQLParser.datatype.judgeLengthAndScale"));
+                                                            ParseException e = new ParseException(Messages.SQLParser_datatype_judgeLengthAndScale);
                                                             e.currentToken = t.next;
                                                             exceptions.add(e);
                                                     }
diff --git a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/breakpoint/SPLineBreakpoint.java b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/breakpoint/SPLineBreakpoint.java
index 52b2e07..82bca91 100644
--- a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/breakpoint/SPLineBreakpoint.java
+++ b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/breakpoint/SPLineBreakpoint.java
@@ -154,7 +154,7 @@
         String name = (String) m.getAttribute(ATTR_PROCIDENTIFIER, ""); //$NON-NLS-1$
         if (name == null || name.length() == 0) 
         {
-            throw new CoreException(new Status(IStatus.ERROR, DebuggerCorePlugin.PLUGIN_ID, 0, DebuggerMessages.getString("SPLineBreakpoint.invalidProcIdentifier"), null));  //$NON-NLS-1$
+            throw new CoreException(new Status(IStatus.ERROR, DebuggerCorePlugin.PLUGIN_ID, 0, DebuggerMessages.SPLineBreakpoint_invalidProcIdentifier, null));  
         }
 
         try
@@ -164,7 +164,7 @@
         catch (ParseException ex)
         {
             throw new CoreException(new Status(IStatus.ERROR, DebuggerCorePlugin.PLUGIN_ID, 0,
-                DebuggerMessages.getString("SPLineBreakpoint.invalidProcIdentifier") + name, null)); //$NON-NLS-1$
+                DebuggerMessages.SPLineBreakpoint_invalidProcIdentifier + name, null)); 
         }
     }
 
diff --git a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/DebuggerCorePlugin.java b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/DebuggerCorePlugin.java
index 9469b85..5776dba 100644
--- a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/DebuggerCorePlugin.java
+++ b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/DebuggerCorePlugin.java
@@ -117,7 +117,7 @@
     
     public IStatus createErrorStatus(Throwable e) {
         return new Status(IStatus.ERROR, getBundle().getSymbolicName(),
-                INTERNAL_ERROR, DebuggerMessages.getString("plugin.internal_error"), e); //$NON-NLS-1$
+                INTERNAL_ERROR, DebuggerMessages.plugin_internal_error, e); 
     }
 
     /**
diff --git a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/DebuggerMessages.java b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/DebuggerMessages.java
index d587647..0280282 100644
--- a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/DebuggerMessages.java
+++ b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/DebuggerMessages.java
@@ -11,79 +11,77 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.debugger.core.internal;
 
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- *
- */
-public class DebuggerMessages
-{
-    private static final String         BUNDLE_NAME     = "org.eclipse.datatools.sqltools.debugger.core.internal.messages"; //$NON-NLS-1$
+public final class DebuggerMessages extends NLS {
 
-    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.debugger.core.internal.messages";//$NON-NLS-1$
 
-    private DebuggerMessages()
-    {
-    }
+	private DebuggerMessages() {
+		// Do not instantiate
+	}
 
-    public static String getString(String key)
-    {
-        // TODO Auto-generated method stub
-        try
-        {
-            return RESOURCE_BUNDLE.getString(key);
-        }
-        catch (MissingResourceException e)
-        {
-            return '!' + key + '!';
-        }
-    }
+	public static String plugin_internal_error;
+	public static String RowsView_name;
+	public static String RowsView_errorWhenUpdate;
+	public static String GlobalVariablesLabelProvider_unknown;
+	public static String DisconnectAction_label;
+	public static String DisconnectAction_fail;
+	public static String DisconnectAction_disconnectFailInuse;
+	public static String DebugAttachAction_label;
+	public static String DebugAttachAction_error;
+	public static String DebugAttachAction_attachFailMessage;
+	public static String DebugDetachAction_label;
+	public static String RefreshAction_label;
+	public static String SPBreakpointPage_error;
+	public static String SPLaunchShortcut_error;
+	public static String SPBreakpointPage_errorSaving;
+	public static String SPLaunchShortcut_selectNotSP;
+	public static String SPLaunchShortcut_selectNotEnableEvent;
+	public static String SPBreakpointPage_procedureName;
+	public static String SPLineBreakpoint_invalidProcIdentifier;
+	public static String SPBreakpointPage_lineNumber;
+	public static String SPDebugElement_notSupported;
+	public static String SPDebugTarget_Run_notSupported;
+	public static String SPBreakpointPage_enabledCondition;
+	public static String SPBreakpointPropertiesRulerAction_label;
+	public static String SPBreakpointPage_failed_to_create_labels;
+	public static String SPBreakpointPage_failed_to_create_page;
+	public static String SPBreakpointPage_enabled;
+	public static String SPLaunchShortcut_launchFailMessage;
+	public static String SPLaunchShortcut_notStoreProcedure;
+	public static String SPLocalVariable_threadNotSuspended;
+	public static String ManageBreakpointRulerAction_label;
+	public static String ManageBreakpointRulerAction_error;
+	public static String ManageBreakpointRulerAction_fail;
+	public static String EnableDisableBreakpointRulerAction_enableBreakpoint;
+	public static String EnableDisableBreakpointRulerAction_error;
+	public static String EnableDisableBreakpointRulerAction_enableFailed;
+	public static String EnableDisableBreakpointRulerAction_disableBreakpoint;
+	public static String SPWatchExpressionDelegate_error;
+	public static String SPWatchExpressionDelegate_unsupported;
+	public static String AbstractControlConnection_connection_already_being_debugged;
+	public static String AbstractControlConnection_invalid_store_procedure_description;
+	public static String SPLaunchConfigurationDelegate_Launching;
+	public static String SPLaunchConfigurationDelegate_UnsupportedServerType;
+	public static String SPLaunchConfigurationDelegate_notsupported;
+	public static String SPLaunchConfigurationDelegate_CreatingClientConn;
+	public static String SPLaunchConfigurationDelegate_AttachingConn;
+	public static String SPLaunchConfigurationDelegate_NoPermission;
+	public static String SPLaunchConfigurationDelegate_CreatingDebugger;
+	public static String perspective_DebuggerPerspective_activeWinNull1;
+	public static String perspective_DebuggerPerspective_activeWinNull2;
+	public static String perspective_DebuggerPerspective_changePerspectiveException;
+	public static String SPVariable_unknown;
+	public static String ToggleBreakpointAdapter_canToggleLineBreakpoints_title;
+	public static String ToggleBreakpointAdapter_canToggleLineBreakpoints_message;
+	public static String ToggleBreakpointAdapter_canToggleLineBreakpoints_toggleMessage;
+	public static String AutoAttachUtil_information;
+	public static String AutoAttachUtil_auto_attach_for_profile;
+	public static String AutoAttachUtil_enabled_by_system;
+	public static String ManageBreakpointRulerAction_exception_getControlConnection;
 
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]
-        {
-            arg0
-        }
-        );
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]
-        {
-            arg0,arg1
-        }
-        );
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]
-        {
-            arg0,arg1,arg2
-        }
-        );
-    }
-
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++)
-            {
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-}
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, DebuggerMessages.class);
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/messages.properties b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/messages.properties
index 374370b..7e3b8f7 100644
--- a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/core/internal/messages.properties
@@ -1,56 +1,69 @@
-plugin.internal_error=Internal error occurred
+plugin_internal_error=Internal error occurred
 
-RowsView.name=Name
-RowsView.errorWhenUpdate=Error during update of row in the row view
-GlobalVariablesLabelProvider.unknown=unknown
-DisconnectAction.label=&Disconnect
-DisconnectAction.fail=Fail
-DisconnectAction.disconnectFailInuse=Disconnect failed, connection in use
-DebugAttachAction.label=&Attach Client Connection
-DebugAttachAction.error=Error
-DebugAttachAction.attachFailMessage=Failed to attach and debug the connection
-DebugDetachAction.label=&Detach Client Connection
-RefreshAction.label=&Refresh Client Connections
-SPBreakpointPage.error=Error
-SPLaunchShortcut.error=Error
-SPBreakpointPage.errorSaving=Error saving breakpoint information
-SPLaunchShortcut.selectNotSP=The selection is not a stored procedure.
-SPLaunchShortcut.selectNotEnableEvent=Cannot run a disabled event handler, please enable it first.
-SPBreakpointPage.procedureName=Procedure Name:
-SPLineBreakpoint.invalidProcIdentifier=Invalid proc identifier 
-SPBreakpointPage.lineNumber=Line Number:
-SPDebugElement.notSupported=Not supported
-SPDebugTarget_Run.notSupported=Not supported
-SPBreakpointPage.enabledCondition=Enabled Condition
-SPBreakpointPropertiesRulerAction.label=Breakpoint Properties...
-SPBreakpointPage.failed.to.create.labels=failed to create labels
-SPBreakpointPage.failed.to.create.page=failed to create page
-SPBreakpointPage.enabled=Enabled
-SPLaunchShortcut.launchFailMessage=Launch failed: {0}
-SPLaunchShortcut.notStoreProcedure=Not a database object (store procedure) editor
-SPLocalVariable.threadNotSuspended=Thread not suspended
-ManageBreakpointRulerAction.label=Toggle Breakpoint
-ManageBreakpointRulerAction.error=Error
-ManageBreakpointRulerAction.fail=Failed to toggle breakpoint
-EnableDisableBreakpointRulerAction.enableBreakpoint=Enable Breakpoint
-EnableDisableBreakpointRulerAction.error=Error
-EnableDisableBreakpointRulerAction.enableFailed=Enable breakpoint failed
-EnableDisableBreakpointRulerAction.disableBreakpoint=Disable Breakpoint
-SPWatchExpressionDelegate.error=Watch evaluation error
-SPWatchExpressionDelegate.unsupported = {0} does not support watch fucntion
+RowsView_name=Name
+RowsView_errorWhenUpdate=Error during update of row in the row view
+GlobalVariablesLabelProvider_unknown=unknown
+DisconnectAction_label=&Disconnect
+DisconnectAction_fail=Fail
+DisconnectAction_disconnectFailInuse=Disconnect failed, connection in use
+DebugAttachAction_label=&Attach Client Connection
+DebugAttachAction_error=Error
+DebugAttachAction_attachFailMessage=Failed to attach and debug the connection
+DebugDetachAction_label=&Detach Client Connection
+RefreshAction_label=&Refresh Client Connections
+SPBreakpointPage_error=Error
+SPLaunchShortcut_error=Error
+SPBreakpointPage_errorSaving=Error saving breakpoint information
+SPLaunchShortcut_selectNotSP=The selection is not a stored procedure.
+SPLaunchShortcut_selectNotEnableEvent=Cannot run a disabled event handler, please enable it first.
+SPBreakpointPage_procedureName=Procedure Name:
+SPLineBreakpoint_invalidProcIdentifier=Invalid proc identifier
+SPBreakpointPage_lineNumber=Line Number:
+SPDebugElement_notSupported=Not supported
+SPDebugTarget_Run_notSupported=Not supported
+SPBreakpointPage_enabledCondition=Enabled Condition
+SPBreakpointPropertiesRulerAction_label=Breakpoint Properties...
+SPBreakpointPage_failed_to_create_labels=failed to create labels
+SPBreakpointPage_failed_to_create_page=failed to create page
+SPBreakpointPage_enabled=Enabled
+SPLaunchShortcut_launchFailMessage=Launch failed: {0}
+SPLaunchShortcut_notStoreProcedure=Not a database object (store procedure) editor
+SPLocalVariable_threadNotSuspended=Thread not suspended
+ManageBreakpointRulerAction_label=Toggle Breakpoint
+ManageBreakpointRulerAction_error=Error
+ManageBreakpointRulerAction_fail=Failed to toggle breakpoint
+EnableDisableBreakpointRulerAction_enableBreakpoint=Enable Breakpoint
+EnableDisableBreakpointRulerAction_error=Error
+EnableDisableBreakpointRulerAction_enableFailed=Enable breakpoint failed
+EnableDisableBreakpointRulerAction_disableBreakpoint=Disable Breakpoint
+SPWatchExpressionDelegate_error=Watch evaluation error
+SPWatchExpressionDelegate_unsupported = {0} does not support watch fucntion
 
-AbstractControlConnection.connection.already.being.debugged=Connection {0} is already being debugged
-AbstractControlConnection.invalid.store.procedure.description=Invalid store procedure description
+AbstractControlConnection_connection_already_being_debugged=Connection {0} is already being debugged
+AbstractControlConnection_invalid_store_procedure_description=Invalid store procedure description
 
-SPLaunchConfigurationDelegate.Launching=Launching
-SPLaunchConfigurationDelegate.UnsupportedServerType=Unsupported server type: 
-SPLaunchConfigurationDelegate.notsupported=This mode is not supported yet!
-SPLaunchConfigurationDelegate.CreatingClientConn=Creating client connection
-SPLaunchConfigurationDelegate.AttachingConn=Attaching to connection
-SPLaunchConfigurationDelegate.NoPermission=Cannot debug. Maybe you do not have enough permission.
-SPLaunchConfigurationDelegate.CreatingDebugger=Creating debugger
+SPLaunchConfigurationDelegate_Launching=Launching
+SPLaunchConfigurationDelegate_UnsupportedServerType=Unsupported server type:
+SPLaunchConfigurationDelegate_notsupported=This mode is not supported yet!
+SPLaunchConfigurationDelegate_CreatingClientConn=Creating client connection
+SPLaunchConfigurationDelegate_AttachingConn=Attaching to connection
+SPLaunchConfigurationDelegate_NoPermission=Cannot debug. Maybe you do not have enough permission.
+SPLaunchConfigurationDelegate_CreatingDebugger=Creating debugger
 
 
-perspective.DebuggerPerspective.activeWinNull1=Failed to change perspective, as the active window could not be retrieved
-perspective.DebuggerPerspective.activeWinNull2=Failed to change perspective, still the active window could not be retrieved
-perspective.DebuggerPerspective.changePerspectiveException=Failed to change perspective
+perspective_DebuggerPerspective_activeWinNull1=Failed to change perspective, as the active window could not be retrieved
+perspective_DebuggerPerspective_activeWinNull2=Failed to change perspective, still the active window could not be retrieved
+perspective_DebuggerPerspective_changePerspectiveException=Failed to change perspective
+
+SPVariable_unknown=unknown
+
+ToggleBreakpointAdapter_canToggleLineBreakpoints_title=Disable breakpoint toggling
+ToggleBreakpointAdapter_canToggleLineBreakpoints_message=Toggle breakpoint is disabled when editor is dirty
+ToggleBreakpointAdapter_canToggleLineBreakpoints_toggleMessage=Do not show this again
+
+AutoAttachUtil_information=Information
+AutoAttachUtil_auto_attach_for_profile=Auto attach for profile "
+AutoAttachUtil_enabled_by_system=" enabled by system
+
+ManageBreakpointRulerAction_exception_getControlConnection=Failed to get control connection
+
diff --git a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPDebugElement.java b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPDebugElement.java
index 39c4efd..cf6269d 100644
--- a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPDebugElement.java
+++ b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPDebugElement.java
@@ -177,7 +177,7 @@
      */
     public void notSupported() throws DebugException
     {
-        throwDebugException(DebuggerMessages.getString("SPDebugElement.notSupported"), DebugException.NOT_SUPPORTED, null); //$NON-NLS-1$
+        throwDebugException(DebuggerMessages.SPDebugElement_notSupported, DebugException.NOT_SUPPORTED, null); 
     }
 
     /**
diff --git a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPLocalVariable.java b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPLocalVariable.java
index 6123084..87a6d3f 100644
--- a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPLocalVariable.java
+++ b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPLocalVariable.java
@@ -46,6 +46,6 @@
     {
         if (!thread.isSuspended())
         throw new DebugException(new Status(IStatus.ERROR, DebuggerCorePlugin.PLUGIN_ID,
-            0, DebuggerMessages.getString("SPLocalVariable.threadNotSuspended"), null)); //$NON-NLS-1$
+            0, DebuggerMessages.SPLocalVariable_threadNotSuspended, null)); 
     }
 }
diff --git a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPVariable.java b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPVariable.java
index b170d9e..ba31f60 100644
--- a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPVariable.java
+++ b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPVariable.java
@@ -68,7 +68,7 @@
         if (v != null)
         return v.getReferenceTypeName();
         else
-        return DebuggerMessages.getString("SPVariable.unknown"); //$NON-NLS-1$
+        return DebuggerMessages.SPVariable_unknown; 
     }
 
     /*
diff --git a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPWatchExpressionDelegate.java b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPWatchExpressionDelegate.java
index e86a1c1..e7c289d 100644
--- a/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPWatchExpressionDelegate.java
+++ b/plugins/org.eclipse.datatools.sqltools.debugger.core/src/org/eclipse/datatools/sqltools/debugger/model/SPWatchExpressionDelegate.java
@@ -25,6 +25,7 @@
 import org.eclipse.debug.core.model.IWatchExpressionDelegate;
 import org.eclipse.debug.core.model.IWatchExpressionListener;
 import org.eclipse.debug.core.model.IWatchExpressionResult;
+import org.eclipse.osgi.util.NLS;
 
 /**
  * A delegate which computes the value of a SQL watch expression
@@ -74,9 +75,15 @@
                     //For now, ASE debugger API doesn't support the watch function, we throw an exception
                     //the error message will be displayed in the expressions view
                     DebugException de = new DebugException(new Status(IStatus.WARNING, DebuggerCorePlugin.PLUGIN_ID, 0,
-                        DebuggerMessages.getString("SPWatchExpressionDelegate.unsupported", spThread.getDatabaseIdentifier().toString()),
-                        new Exception(DebuggerMessages.getString("SPWatchExpressionDelegate.unsupported", spThread
-                        .getDatabaseIdentifier().toString()))));
+                        NLS.bind(DebuggerMessages.SPWatchExpressionDelegate_unsupported, (new Object[]
+						{
+						    spThread.getDatabaseIdentifier().toString()
+						})),
+                        new Exception(NLS.bind(DebuggerMessages.SPWatchExpressionDelegate_unsupported, (new Object[]
+						{
+						    spThread
+							                        .getDatabaseIdentifier().toString()
+						})))));
                     throw de;
                 }
                 else
@@ -121,8 +128,7 @@
             else if (ex instanceof CoreException)
             debugex = new DebugException(((CoreException) ex).getStatus());
             else
-            debugex = new DebugException(new Status(IStatus.ERROR, DebuggerCorePlugin.PLUGIN_ID, 0, DebuggerMessages
-                .getString("SPWatchExpressionDelegate.error"), ex)); //$NON-NLS-1$
+            debugex = new DebugException(new Status(IStatus.ERROR, DebuggerCorePlugin.PLUGIN_ID, 0, DebuggerMessages.SPWatchExpressionDelegate_error, ex)); //$NON-NLS-1$
 
             expressionResult = new IWatchExpressionResult()
             {
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/EditorCorePlugin.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/EditorCorePlugin.java
index 0331025..6f16bf1 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/EditorCorePlugin.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/EditorCorePlugin.java
@@ -116,7 +116,7 @@
 
  	public IStatus createErrorStatus(Throwable e) {
  		return new Status(IStatus.ERROR, getBundle().getSymbolicName(),
- 				INTERNAL_ERROR, Messages.getString("plugin.internal_error"), e); //$NON-NLS-1$
+ 				INTERNAL_ERROR, Messages.plugin_internal_error, e); 
  	}
 
     public IStatus createErrorStatus(String message, Throwable e) {
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/IDatabaseSetting.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/IDatabaseSetting.java
index b339717..aeac235 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/IDatabaseSetting.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/IDatabaseSetting.java
@@ -13,6 +13,7 @@
 package org.eclipse.datatools.sqltools.core;
 
 import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.osgi.util.NLS;
 
 /**
  * Holds database configuration properties. Database level configurations will be retrieved from server by using
@@ -39,7 +40,7 @@
          */
         public NotSupportedSettingException(String propName)
         {
-            super(Messages.getString("NotSupportedSettingException.cause", propName));
+            super(NLS.bind(Messages.NotSupportedConfigurationException_cause, propName));
         }
     }
 
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/Messages.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/Messages.java
index 48d5788..122568e 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/Messages.java
@@ -1,80 +1,35 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2005 Sybase, Inc. and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Sybase, Inc. - initial API and implementation
- *******************************************************************************/
+* Copyright (c) 2004, 2005 Sybase, Inc. and others.
+
+* AAll rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*     Sybase, Inc. - initial API and implementation
+*******************************************************************************/
 package org.eclipse.datatools.sqltools.core;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.core.messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.core.messages";//$NON-NLS-1$
 
-	private Messages() {
-	}
+private Messages() {
+// Do not instantiate
+}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
-	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
+public static String DefaultDBFactory_version;
+public static String NotSupportedConfigurationException_cause;
+public static String plugin_internal_error;
+public static String ProcIdentifierImpl_map_cant_be_null;
+public static String ProcIdentifierImpl_invalid_identifier_string;
+public static String DefaultDBFactory_vendor;
+public static String DefaultSQLSyntax_exception_splitSQL;
 
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
+static {
+NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+}
 }
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/ProcIdentifierImpl.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/ProcIdentifierImpl.java
index 808985d..2e1833b 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/ProcIdentifierImpl.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/ProcIdentifierImpl.java
@@ -47,7 +47,7 @@
         this._database = db;
         if (map == null)
         {
-            throw new IllegalArgumentException(Messages.getString("ProcIdentifierImpl.map.cant.be.null")); //$NON-NLS-1$
+            throw new IllegalArgumentException(Messages.ProcIdentifierImpl_map_cant_be_null); 
         }
         propertyMap = map;
     }
@@ -204,7 +204,7 @@
 
         if (profile == null || dbname == null || typestr == null)
         {
-            throw new ParseException(Messages.getString("ProcIdentifierImpl.invalid.identifier.string"), -1); //$NON-NLS-1$
+            throw new ParseException(Messages.ProcIdentifierImpl_invalid_identifier_string, -1); 
         }
 
         try
@@ -220,7 +220,7 @@
         }
         catch(NumberFormatException ex)
         {
-            throw new ParseException(Messages.getString("ProcIdentifierImpl.invalid.identifier.string"), -1); //$NON-NLS-1$
+            throw new ParseException(Messages.ProcIdentifierImpl_invalid_identifier_string, -1); 
         }
     }
 
@@ -233,7 +233,7 @@
 
         if (profile == null || dbname == null || typestr == null)
         {
-            throw new ParseException(Messages.getString("ProcIdentifierImpl.invalid.identifier.string"), -1); //$NON-NLS-1$
+            throw new ParseException(Messages.ProcIdentifierImpl_invalid_identifier_string, -1); 
         }
 
         try
@@ -249,7 +249,7 @@
         }
         catch(NumberFormatException ex)
         {
-            throw new ParseException(Messages.getString("ProcIdentifierImpl.invalid.identifier.string"), -1); //$NON-NLS-1$
+            throw new ParseException(Messages.ProcIdentifierImpl_invalid_identifier_string, -1); 
         }
     }
 
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/SQLDevToolsConfiguration.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/SQLDevToolsConfiguration.java
index 9d70440..fe4807e 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/SQLDevToolsConfiguration.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/SQLDevToolsConfiguration.java
@@ -44,9 +44,7 @@
 	private static SQLDevToolsConfiguration _instance = new SQLDevToolsConfiguration();
 
 	protected SQLDevToolsConfiguration() {
-		_dbdefinitionId = new DatabaseVendorDefinitionId(Messages
-				.getString("DefaultDBFactory.vendor"), Messages
-				.getString("DefaultDBFactory.version"));
+		_dbdefinitionId = new DatabaseVendorDefinitionId(Messages.DefaultDBFactory_vendor, Messages.DefaultDBFactory_version);
 	}
 
 	public static SQLDevToolsConfiguration getDefaultInstance() {
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/messages.properties b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/messages.properties
index c749ff1..d9064df 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/messages.properties
@@ -1,16 +1,13 @@
-DefaultDBFactory.product=Generic Database
-DefaultDBFactory.version=1.0
-DefaultDBFactory.description=Provides a portion of SQL 92 support
-NotSupportedConfigurationException.cause=The property {0} is not supported
+DefaultDBFactory_version=1.0
+NotSupportedConfigurationException_cause=The property {0} is not supported
 
-plugin.internal_error=Editor core plugin internal error
+plugin_internal_error=Editor core plugin internal error
 
-ProcIdentifierImpl.map.cant.be.null=Map cannot be null
-ProcIdentifierImpl.invalid.identifier.string=Invalid identifier string
+ProcIdentifierImpl_map_cant_be_null=Map cannot be null
+ProcIdentifierImpl_invalid_identifier_string=Invalid identifier string
 
-DefaultDBFactory.vendor=Undefined
-DefaultDBFactory.version=x
+DefaultDBFactory_vendor=Undefined
 
-DefaultSQLSyntax.exception.splitSQL=Exception occurred while splitting sql: {0}
+DefaultSQLSyntax_exception_splitSQL=Exception occurred while splitting sql: {0}
 
 
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/profile/NoSuchProfileException.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/profile/NoSuchProfileException.java
index 2f138f9..cd56f1d 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/profile/NoSuchProfileException.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/profile/NoSuchProfileException.java
@@ -12,6 +12,8 @@
 
 package org.eclipse.datatools.sqltools.core.profile;
 
+import org.eclipse.osgi.util.NLS;
+
 
 /**
  * An exception indicates a connection profile does not exist for the given name.
@@ -30,7 +32,7 @@
      */
     public NoSuchProfileException(String name)
     {
-        super(Messages.getString("NoSuchProfileException.cant.find.profile", name)); //$NON-NLS-1$
+        super(NLS.bind(Messages.NoSuchProfileException_cant_find_profile, (new Object[]{name}))); 
     }
 
 }
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/profile/ProfileUtil.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/profile/ProfileUtil.java
index 87c6006..454c18c 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/profile/ProfileUtil.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/profile/ProfileUtil.java
@@ -36,6 +36,7 @@
 import org.eclipse.datatools.sqltools.core.SQLDevToolsConfiguration;
 import org.eclipse.datatools.sqltools.core.SQLToolsConstants;
 import org.eclipse.datatools.sqltools.core.SQLToolsFacade;
+import org.eclipse.osgi.util.NLS;
 
 /**
  * Utility class for <code>IConnectionProfile</code> in connectivity layer. Encapsulating all the code to processing
@@ -112,7 +113,7 @@
     		String driverID = profile.getBaseProperties().getProperty(
     				ConnectionProfileConstants.PROP_DRIVER_DEFINITION_ID);
     		if (driverID == null) {
-    			EditorCorePlugin.getDefault().log(Messages.getString("ProfileUtil.error.getdriver", profileName));
+    			EditorCorePlugin.getDefault().log(NLS.bind(Messages.ProfileUtil_error_getdriver, (new Object[]{profileName})));
     		}
     		else
     		{
@@ -205,7 +206,7 @@
 				if ( expectedDB != null && !expectedDB.equals(realDB))
 				{
 					//this should not happen if connection profile can handle multiple db well
-					EditorCorePlugin.getDefault().log(Messages.getString("ProfileUtil.error.wrong.database.name", realDB, databaseIdentifier.getProfileName(), expectedDB));
+					EditorCorePlugin.getDefault().log(NLS.bind(Messages.ProfileUtil_error_wrong_database_name, (new Object[]{realDB,databaseIdentifier.getProfileName(),expectedDB})));
 				}
 				return ci.getSharedDatabase();
 			}
@@ -230,7 +231,7 @@
     	IManagedConnection managedConn = profile.getManagedConnection("java.sql.Connection");
     	if (managedConn == null || !managedConn.isConnected())
     	{
-    		throw new SQLException(Messages.getString("ProfileUtil.error.getReusableConnection", databaseIdentifier.toString()));
+    		throw new SQLException(NLS.bind(Messages.ProfileUtil_error_getReusableConnection, (new Object[]{databaseIdentifier.toString()})));
     	}
     	
     	IConnection iconn = managedConn.getConnection();
@@ -283,8 +284,8 @@
                 }
                 else
                 {
-                    throw new SQLException(Messages.getString("ProfileUtil.unkown.connection.type", c
-                        .getClass().getName(), profile.getName()));
+                    throw new SQLException(NLS.bind(Messages.ProfileUtil_unkown_connection_type, (new Object[]{c
+					.getClass().getName(),profile.getName()})));
                 }
 
             }
@@ -292,7 +293,7 @@
         }
         catch (Exception e)
         {
-            EditorCorePlugin.getDefault().log(Messages.getString("ProfileUtil.error.create.connection", profile.getName()),e);
+            EditorCorePlugin.getDefault().log(NLS.bind(Messages.ProfileUtil_error_create_connection, (new Object[]{profile.getName()})),e);
             return null;
         }
     }
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/services/SQLService.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/services/SQLService.java
index 93a6092..483d7c3 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/services/SQLService.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/core/services/SQLService.java
@@ -26,6 +26,7 @@
 import org.eclipse.datatools.sqltools.sql.parser.ast.Node;
 import org.eclipse.jface.text.Document;
 import org.eclipse.jface.text.IDocument;
+import org.eclipse.osgi.util.NLS;
 
 
 /**
@@ -125,7 +126,7 @@
 	    }
 	    catch (Exception e1)
 	    {
-	        EditorCorePlugin.getDefault().log(Messages.getString("DefaultSQLSyntax.exception.splitSQL", sql), e1);
+	        EditorCorePlugin.getDefault().log(NLS.bind(Messages.DefaultSQLSyntax_exception_splitSQL, sql), e1);
 	    }
 	    return (String[]) groups.toArray(new String[groups.size()]);
 	}
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/AbstractControlConnection.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/AbstractControlConnection.java
index 7c703f8..b4a8018 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/AbstractControlConnection.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/AbstractControlConnection.java
@@ -44,7 +44,6 @@
 import org.eclipse.datatools.sqltools.core.dbitem.IDBItem;
 import org.eclipse.datatools.sqltools.core.dbitem.IItemWithCode;
 import org.eclipse.datatools.sqltools.core.internal.dbitem.SQLObjectItem;
-import org.eclipse.datatools.sqltools.core.profile.Messages;
 import org.eclipse.datatools.sqltools.core.profile.NoSuchProfileException;
 import org.eclipse.datatools.sqltools.core.profile.ProfileUtil;
 import org.eclipse.datatools.sqltools.core.services.ConnectionService;
@@ -277,8 +276,7 @@
 		} else {
 			// should not happen
 			throw new SQLException(
-					Messages
-							.getString("AbstractControlConnection.invalid.store.procedure.description")); //$NON-NLS-1$
+					Messages.AbstractControlConnection_invalid_store_procedure_description); //$NON-NLS-1$
 		}
 	}
 
@@ -297,8 +295,7 @@
 		} else {
 			// should not happen
 			throw new SQLException(
-					Messages
-							.getString("AbstractControlConnection.invalid.store.procedure.description")); //$NON-NLS-1$
+					Messages.AbstractControlConnection_invalid_store_procedure_description); //$NON-NLS-1$
 		}
 	}
 
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/ControlConnectionManager.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/ControlConnectionManager.java
index d1ab5fb..a7f2382 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/ControlConnectionManager.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/ControlConnectionManager.java
@@ -27,6 +27,7 @@
 import org.eclipse.datatools.sqltools.core.SQLToolsFacade;
 import org.eclipse.datatools.sqltools.core.profile.NoSuchProfileException;
 import org.eclipse.jface.util.ListenerList;
+import org.eclipse.osgi.util.NLS;
 
 
 /**
@@ -64,8 +65,7 @@
             //TODO differentiate unknow server type and other exception
             if (con == null)
             {
-                throw new SQLException(Messages.getString(
-                    "ControlConnectionManager.unknownServerType", databaseIdentifier.getProfileName())); //$NON-NLS-1$
+                throw new SQLException(NLS.bind(Messages.ControlConnectionManager_unknownServerType, (new Object[]{databaseIdentifier.getProfileName()}))); 
             }
             _controlConnectionMap.put(databaseIdentifier, con);
             this.fireAdded(con);
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/Messages.java b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/Messages.java
index 757a27c..8f9d066 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/Messages.java
@@ -11,70 +11,21 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.internal.core;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.internal.core.messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.internal.core.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
+	public static String ControlConnectionManager_unknownServerType;
+	public static String AbstractControlConnection_connection_already_being_debugged;
+	public static String AbstractControlConnection_invalid_store_procedure_description;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/messages.properties b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/messages.properties
index 52f8c42..be0f33e 100644
--- a/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.editor.core/src/org/eclipse/datatools/sqltools/internal/core/messages.properties
@@ -1,4 +1,4 @@
-ControlConnectionManager.unknownServerType=Can not determine the correct server type by the conection profile: {0}
+ControlConnectionManager_unknownServerType=Can not determine the correct server type by the conection profile: {0}
 
-AbstractControlConnection.connection.already.being.debugged=Connection {0} is already being debugged
-AbstractControlConnection.invalid.store.procedure.description=Invalid store procedure description
+AbstractControlConnection_connection_already_being_debugged=Connection {0} is already being debugged
+AbstractControlConnection_invalid_store_procedure_description=Invalid store procedure description
diff --git a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/internal/RoutineEditorActivator.java b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/internal/RoutineEditorActivator.java
index b88973d..ffc991d 100644
--- a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/internal/RoutineEditorActivator.java
+++ b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/internal/RoutineEditorActivator.java
@@ -108,7 +108,7 @@
 
  	public IStatus createErrorStatus(Throwable e) {
  		return new Status(IStatus.ERROR, getBundle().getSymbolicName(),
- 				INTERNAL_ERROR, Messages.getString("plugin.internal_error"), e); //$NON-NLS-1$
+ 				INTERNAL_ERROR, Messages.plugin_internal_error, e); 
  	}
 
     public IStatus createErrorStatus(String message, Throwable e) {
diff --git a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/result/CallableSQLResultRunnable.java b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/result/CallableSQLResultRunnable.java
index a38f17e..6786539 100644
--- a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/result/CallableSQLResultRunnable.java
+++ b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/result/CallableSQLResultRunnable.java
@@ -36,7 +36,6 @@
 import org.eclipse.datatools.sqltools.routineeditor.parameter.ParameterInOutWrapper;
 import org.eclipse.datatools.sqltools.routineeditor.ui.launching.LaunchUI;
 import org.eclipse.datatools.sqltools.sql.util.SQLUtil;
-import org.eclipse.datatools.sqltools.sqleditor.result.Messages;
 import org.eclipse.datatools.sqltools.sqleditor.result.ResultSupportRunnable;
 import org.eclipse.debug.core.ILaunchConfiguration;
 
@@ -157,11 +156,11 @@
 
                 catch (SQLException e1)
                 {
-                    RoutineEditorActivator.getDefault().log(Messages.getString("CallableSQLResultRunnable.getStatementOutParam"), e1); //$NON-NLS-1$
+                    RoutineEditorActivator.getDefault().log(Messages.CallableSQLResultRunnable_getStatementOutParam_debug, e1); 
                 }
                 catch (NumberFormatException e1)
                 {
-                	RoutineEditorActivator.getDefault().log(Messages.getString("CallableSQLResultRunnable.getStatementOutParam"), e1); //$NON-NLS-1$
+                	RoutineEditorActivator.getDefault().log(Messages.CallableSQLResultRunnable_getStatementOutParam_debug, e1); 
                 }
             }
         }
@@ -311,11 +310,11 @@
             }
             catch (NoSuchProfileException e1)
             {
-            	RoutineEditorActivator.getDefault().log(Messages.getString("CallableSQLResultRunnable.prepareStatement"), e1); //$NON-NLS-1$
+            	RoutineEditorActivator.getDefault().log(Messages.CallableSQLResultRunnable_prepareStatement, e1); 
             }
             catch (CoreException e)
             {
-            	RoutineEditorActivator.getDefault().log(Messages.getString("CallableSQLResultRunnable.prepareStatement"), e); //$NON-NLS-1$
+            	RoutineEditorActivator.getDefault().log(Messages.CallableSQLResultRunnable_prepareStatement, e); 
             }
         }
         return cstmt;
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/Messages.java b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/Messages.java
index f35ad38..cb4fed4 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/Messages.java
@@ -11,70 +11,19 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.sql.internal;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.sql.internal.messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.sql.internal.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
+	public static String plugin_internal_error;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/SQLActivator.java b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/SQLActivator.java
index d5fda71..cbb5e59 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/SQLActivator.java
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/SQLActivator.java
@@ -115,7 +115,7 @@
     
     public IStatus createErrorStatus(Throwable e) {
         return new Status(IStatus.ERROR, getBundle().getSymbolicName(),
-                INTERNAL_ERROR, Messages.getString("plugin.internal_error"), e); //$NON-NLS-1$
+                INTERNAL_ERROR, Messages.plugin_internal_error, e); 
     }
 
 }
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/messages.properties b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/messages.properties
index e29bf32..14cd5ed 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/internal/messages.properties
@@ -1 +1 @@
-plugin.internal_error=Internal error occurred
\ No newline at end of file
+plugin_internal_error=Internal error occurred
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/JavaCharStream.java b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/JavaCharStream.java
index 5d0c320..e99eb50 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/JavaCharStream.java
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/JavaCharStream.java
@@ -11,6 +11,8 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.sql.parser;
 
+import org.eclipse.osgi.util.NLS;
+
 
 /**
  * An implementation of interface CharStream, where the stream is assumed to
@@ -331,7 +333,7 @@
             }
             catch(java.io.IOException e)
             {
-                throw new Error(Messages.getString("JavaCharStream.invalid.escape", "" + line, "" + column));
+                throw new Error(NLS.bind("JavaCharStream.invalid.escape", (new Object[]{"" + line,"" + column})));
             }
 
             if (backSlashCnt == 1)
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/Messages.java b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/Messages.java
index 9c06989..9c74f55 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/Messages.java
@@ -11,70 +11,34 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.sql.parser;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.sql.parser.messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.sql.parser.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
+	public static String ParseException_expecting;
+	public static String ParseException_encountered;
+	public static String ParseException_atline;
+	public static String ParseException_atcolumn;
+	public static String ParseException_period;
+	public static String ParseException_expection_oneof;
+	public static String JavaCharStream_invalid_escape;
+	public static String SimpleNode_1;
+	public static String SimpleNode_2;
+	public static String SimpleNode_3;
+	public static String SQLParser_datatype_judgeLength;
+	public static String SQLParser_datatype_judgeLengthAndScale;
+	public static String SQLParser_datatype_exceed_maxlength;
+	public static String TokenMgrError_lexical_error;
+	public static String TokenMgrError_eof;
+	public static String TokenMgrError_currentchar;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/ParseException.java b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/ParseException.java
index 486b912..0cfb3ef 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/ParseException.java
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/ParseException.java
@@ -123,7 +123,7 @@
              */
             expected.append(eol).append("    "); //$NON-NLS-1$
         }
-        StringBuffer retval = new StringBuffer(Messages.getString("ParseException.encountered")); //$NON-NLS-1$
+        StringBuffer retval = new StringBuffer(Messages.ParseException_encountered); 
         Token tok = currentToken.next;
         for (int i = 0; i < maxSize; i++) 
         {
@@ -140,14 +140,14 @@
         //since the task/problem view already shows the line number, don't duplicate them in the description
         //retval
         //    .append(DmpMessages.getString("ParseException.atline")).append(currentToken.next.beginLine).append(DmpMessages.getString("ParseException.atcolumn")).append(currentToken.next.beginColumn); //$NON-NLS-1$ //$NON-NLS-2$
-        retval.append(Messages.getString("ParseException.period") + eol); //$NON-NLS-1$
+        retval.append(Messages.ParseException_period + eol); 
         if (expectedTokenSequences.length == 1)
         {
-            retval.append(Messages.getString("ParseException.expecting")).append(eol).append("    "); //$NON-NLS-1$ //$NON-NLS-2$
+            retval.append(Messages.ParseException_expecting).append(eol).append("    "); 
         }
         else 
         {
-            retval.append(Messages.getString("ParseException.expection.oneof")).append(eol).append("    "); //$NON-NLS-1$ //$NON-NLS-2$
+            retval.append(Messages.ParseException_expection_oneof).append(eol).append("    "); 
         }
         retval.append(expected);
         return retval.toString();
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/Token.java b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/Token.java
index 01e3d84..6b50c97 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/Token.java
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/Token.java
@@ -123,7 +123,7 @@
         }
         catch (BadLocationException e1)
         {
-            SQLActivator.getDefault().log(Messages.getString("SimpleNode.1"), e1); //$NON-NLS-1$
+            SQLActivator.getDefault().log(Messages.SimpleNode_1, e1); 
         }
 
         return offset;
@@ -140,7 +140,7 @@
         }
         catch (BadLocationException e1)
         {
-            SQLActivator.getDefault().log(Messages.getString("SimpleNode.1"), e1); //$NON-NLS-1$
+            SQLActivator.getDefault().log(Messages.SimpleNode_1, e1); 
         }
 
         return offset;
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/TokenMgrError.java b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/TokenMgrError.java
index 523cd61..fbc6813 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/TokenMgrError.java
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/TokenMgrError.java
@@ -11,6 +11,8 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.sql.parser;
 
+import org.eclipse.osgi.util.NLS;
+
 
 public class TokenMgrError extends Error
 {
@@ -117,11 +119,11 @@
         {
             String.valueOf(errorLine),
                 String.valueOf(errorColumn),
-                (EOFSeen ? Messages.getString("TokenMgrError.eof") : Messages.getString("TokenMgrError.currentchar", addEscapes(String.valueOf(curChar)), String.valueOf((int) curChar))),
+                (EOFSeen ? Messages.TokenMgrError_eof : NLS.bind("TokenMgrError.currentchar", (new Object[]{addEscapes(String.valueOf(curChar)),String.valueOf((int) curChar)}))),
                 addEscapes(errorAfter)
         }
         ;
-        return (Messages.getString("TokenMgrError.lexical.error", args));
+        return (NLS.bind("TokenMgrError.lexical.error", args));
     }
 
     /**
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/ast/SimpleNode.java b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/ast/SimpleNode.java
index df0a9db..0f0d9ac 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/ast/SimpleNode.java
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/ast/SimpleNode.java
@@ -204,7 +204,7 @@
             }
             catch (BadLocationException e1)
             {
-                SQLActivator.getDefault().log( Messages.getString("SimpleNode.1"), e1); //$NON-NLS-1$
+                SQLActivator.getDefault().log( Messages.SimpleNode_1, e1); 
             }
         }
         return offset;
@@ -410,7 +410,7 @@
         }
         catch (BadLocationException e)
         {
-            SQLActivator.getDefault().log( Messages.getString("SimpleNode.2"), e); //$NON-NLS-1$
+            SQLActivator.getDefault().log( Messages.SimpleNode_2, e); 
         }
         return ""; //$NON-NLS-1$
     }
@@ -439,7 +439,7 @@
             }
             catch (BadLocationException e1)
             {
-                SQLActivator.getDefault().log( Messages.getString("SimpleNode.1"), e1); //$NON-NLS-1$
+                SQLActivator.getDefault().log( Messages.SimpleNode_1, e1); 
             }
         }
         return offset;
diff --git a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/messages.properties b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/messages.properties
index 788ede4..d47a70b 100644
--- a/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.sql/src/org/eclipse/datatools/sqltools/sql/parser/messages.properties
@@ -1,24 +1,24 @@
-ParseException.expecting=Was expecting:
-ParseException.encountered=Encountered "
-ParseException.atline=" at line 
-ParseException.atcolumn=, column 
-ParseException.period=.
-ParseException.expection.oneof=Was expecting one of:
+ParseException_expecting=Was expecting:
+ParseException_encountered=Encountered "
+ParseException_atline=" at line
+ParseException_atcolumn=, column
+ParseException_period=.
+ParseException_expection_oneof=Was expecting one of:
 
-JavaCharStream.invalid.escape=Invalid escape character at line {0} column {0}.
- 
-SimpleNode.1=Error while trying to get position of node:
-SimpleNode.2=Error to getSQLText:
-SimpleNode.3=Error while trying to delete node:
+JavaCharStream_invalid_escape=Invalid escape character at line {0} column {0}.
+
+SimpleNode_1=Error while trying to get position of node:
+SimpleNode_2=Error to getSQLText:
+SimpleNode_3=Error while trying to delete node:
 
 ####################################################
 #  SQL ParserExpection Message
 ####################################################
-SQLParser.datatype.judgeLength = Precision must be great than zero 
-SQLParser.datatype.judgeLengthAndScale = You must specify a scale that is less than or equal to the size
-SQLParser.datatype.exceed.maxlength = The maximum length in bytes of the string allowed is 32767.
+SQLParser_datatype_judgeLength = Precision must be great than zero
+SQLParser_datatype_judgeLengthAndScale = You must specify a scale that is less than or equal to the size
+SQLParser_datatype_exceed_maxlength = The maximum length in bytes of the string allowed is 32767.
 
-TokenMgrError.lexical.error=Lexical error at line {0}, column {1}.  Encountered: {2}, after : "{3}"
-TokenMgrError.eof=<EOF> 
-TokenMgrError.currentchar="{0}" ({1})
- 
\ No newline at end of file
+TokenMgrError_lexical_error=Lexical error at line {0}, column {1}.  Encountered: {2}, after : "{3}"
+TokenMgrError_eof=<EOF>
+TokenMgrError_currentchar="{0}" ({1})
+
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditor.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditor.java
index cb8c8ab..db40aef 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditor.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditor.java
@@ -69,6 +69,7 @@
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.widgets.Composite;
@@ -514,16 +515,15 @@
             catch (InvocationTargetException e)
             {
                 Throwable targetExc = e.getTargetException();
-                String title = SQLEditorResources.getString("EditorManager.operationFailed", new Object[]
-                {
-                    SQLEditorResources.getString("Save")
-                }
-                ); //$NON-NLS-1$
+                String title = NLS.bind(SQLEditorResources.EditorManager_operationFailed, (new Object[]
+				{
+				    SQLEditorResources.Save
+				})); //$NON-NLS-1$
                 String message = targetExc.getMessage();
                 message = message == null? "":message;
 				IStatus status = new Status(IStatus.WARNING, SQLEditorPlugin.PLUGIN_ID, IStatus.OK,message, targetExc );
                 SQLEditorPlugin.getDefault().log(status);
-                MessageDialog.openError(getEditorSite().getShell(), SQLEditorResources.getString("common.error"), //$NON-NLS-1$
+                MessageDialog.openError(getEditorSite().getShell(), SQLEditorResources.common_error, 
                 title + ':' + message);
             }
             catch (InterruptedException e)
@@ -788,7 +788,7 @@
         catch (Throwable e)
         {
             // Might caught LookaheadSuccess
-            SQLEditorPlugin.getDefault().log(SQLEditorResources.getString("SQLEditor.error.while.trying.to.install.sql.updater"), e); //$NON-NLS-1$
+            SQLEditorPlugin.getDefault().log(SQLEditorResources.SQLEditor_error_while_trying_to_install_sql_updater, e); 
         }
     }
 
@@ -914,7 +914,7 @@
                     statusLineMgr.setMessage( connStatus );
                 }
                 else {
-                    String connStatus = SQLEditorResources.getString( "SQLEditor.connection.status.noConnection" ); //$NON-NLS-1$
+                    String connStatus = SQLEditorResources.SQLEditor_connection_status_noConnection; 
                     statusLineMgr.setErrorMessage( connStatus );
                 }
                 actionBars.updateActionBars();
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditorConnectionInfo.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditorConnectionInfo.java
index 8d52250..dc23d63 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditorConnectionInfo.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditorConnectionInfo.java
@@ -20,6 +20,7 @@
 import org.eclipse.datatools.sqltools.editor.core.connection.ISQLEditorConnectionInfo;
 import org.eclipse.datatools.sqltools.sqleditor.internal.SQLEditorPlugin;
 import org.eclipse.datatools.sqltools.sqleditor.internal.SQLEditorResources;
+import org.eclipse.osgi.util.NLS;
 
 /**
  * This class provides the default implementation for <code>ISQLEditorConnectionInfo</code>.
@@ -159,7 +160,7 @@
 	{
 		if (code == null || !code.matches(".*:.*:.*:.*"))
 		{
-			SQLEditorPlugin.getDefault().log(SQLEditorResources.getString("SQLEditorConnectionInfo.decode.error", new String[]{code}));
+			SQLEditorPlugin.getDefault().log(NLS.bind(SQLEditorResources.SQLEditorConnectionInfo_decode_error, (new String[]{code})));
 			return DEFAULT_SQLEDITOR_CONNECTION_INFO;
 		}
 		int i = 0;
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditorStorage.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditorStorage.java
index 243b9d2..79ced68 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditorStorage.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/SQLEditorStorage.java
@@ -41,7 +41,7 @@
      */
     public SQLEditorStorage( String source ) 
     {
-        this( SQLEditorResources.getString("SQLEditorStorage.default.name"), source );
+        this( SQLEditorResources.SQLEditorStorage_default_name, source );
     }
 
     /**
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/ConstructedSQLEditorResources.properties b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/ConstructedSQLEditorResources.properties
new file mode 100644
index 0000000..4a2a2c2
--- /dev/null
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/ConstructedSQLEditorResources.properties
@@ -0,0 +1,51 @@
+## *******************************************************************************
+## Copyright (c) 2000, 2005 IBM Corporation and others.
+## All rights reserved. This program and the accompanying materials 
+## are made available under the terms of the Eclipse Public License v1.0
+## which is available at
+## http://www.eclipse.org/legal/epl-v10.html
+## 
+## Contributors:
+##     IBM Corporation - initial API and implementation
+## *******************************************************************************/
+
+## Resources for the standard editor actions
+
+ContentAssistProposal.label       =Co&ntent Assist@Ctrl+SPACE
+ContentAssistProposal.tooltip     =Content Assist
+ContentAssistProposal.image       =
+ContentAssistProposal.description =Content Assist
+
+ContentAssistTip.label       =Content Tip@Ctrl+SHIFT+SPACE
+ContentAssistTip.tooltip     =Content Tip
+ContentAssistTip.image       =
+ContentAssistTip.description =Content Tip
+
+ContentFormat.label       =F&ormat SQL@Ctrl+SHIFT+F
+ContentFormat.tooltip     =Format SQL
+ContentFormat.image       =
+ContentFormat.description =Format SQL source
+
+## Resources for SQL Editor-specific actions
+
+# Note: the image entry is the relative path from the xxxAction.class file to the yyy.gif file
+SQLEditor.connectAction.label       =Connect to Data&base
+SQLEditor.connectAction.tooltip     =Select or create a database connection
+SQLEditor.connectAction.image       =
+SQLEditor.connectAction.description =Select or create the database connection for this editor
+
+SQLEditor.disconnectAction.label       =Disconnect fro&m Database
+SQLEditor.disconnectAction.tooltip     =Disconnect the editor from the database
+SQLEditor.disconnectAction.image       =
+SQLEditor.disconnectAction.description =Disconnect the editor from connected the database
+
+SQLEditor.runAction.label       =Run S&QL
+SQLEditor.runAction.tooltip     =Run the SQL statements
+SQLEditor.runAction.image       =
+SQLEditor.runAction.description =Run the SQL statements in the editor on the connected database
+
+SQLEditor.setStatementTerminatorAction.label       =Set Statement T&erminator
+SQLEditor.setStatementTerminatorAction.tooltip     =Set the statement terminator
+SQLEditor.setStatementTerminatorAction.image       =
+SQLEditor.setStatementTerminatorAction.description =Set the string that the editor should use to separate SQL statements
+
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorPlugin.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorPlugin.java
index 3eacc1c..5ac5c08 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorPlugin.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorPlugin.java
@@ -148,7 +148,7 @@
 
  	public IStatus createErrorStatus(Throwable e) {
  		return new Status(IStatus.ERROR, getBundle().getSymbolicName(),
- 				INTERNAL_ERROR, SQLEditorResources.getString("plugin.internal_error"), e); //$NON-NLS-1$
+ 				INTERNAL_ERROR, SQLEditorResources.plugin_internal_error, e); 
  	}
 
     public IStatus createErrorStatus(String message, Throwable e) {
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorResources.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorResources.java
index ea5d61a..478472e 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorResources.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorResources.java
@@ -11,114 +11,88 @@
 package org.eclipse.datatools.sqltools.sqleditor.internal;
 
 import java.net.URL;
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.graphics.Image;
 
-public class SQLEditorResources {
+public final class SQLEditorResources extends NLS {
+	private static final String BUNDLE_FOR_CONSTRUCTED_KEYS= "org.eclipse.datatools.sqltools.sqleditor.internal.ConstructedSQLEditorResources";//$NON-NLS-1$
+	private static ResourceBundle fgBundleForConstructedKeys= ResourceBundle.getBundle(BUNDLE_FOR_CONSTRUCTED_KEYS);
 
-	private static final String RESOURCE_BUNDLE = "org.eclipse.datatools.sqltools.sqleditor.internal.SQLEditorResources"; //$NON-NLS-1$
-
-	private static ResourceBundle fgResourceBundle;
-
-    /* This constructor is private so can't create an instance of this class.
-     */
-	private SQLEditorResources() {
+	/**
+	 * Returns the message bundle which contains constructed keys.
+	 *
+	 * @return the message bundle
+	 */
+	public static ResourceBundle getResourceBundle() {
+		return fgBundleForConstructedKeys;
 	}
 
-   /**
-    * Gets the image (.gif file) corresponding to the given key.
-    * 
-    * @return the requested image, or <code>null</code> if not found
-    */
-   public static Image getImage( String key ) {
-          ImageRegistry imageRegistry = SQLEditorPlugin.getDefault().getImageRegistry();
-          Image image = imageRegistry.get( key );
-          if (image == null) {
-              ImageDescriptor descriptor = null;
-              try {
-                  URL baseURL = SQLEditorPlugin.getDefault().getBundle().getEntry("icons/"); //$NON-NLS-1$
-                  URL imageURL = new URL( baseURL, key + ".gif" ); //$NON-NLS-1$ //$NON-NLS-2$
-                  descriptor = ImageDescriptor.createFromURL( imageURL );
-              }
-              catch (Exception e) {
-              }
-              if (descriptor != null) {
-                  imageRegistry.put( key, descriptor );
-                  image = imageRegistry.get(key);
-              }
-          }
-          return image;
-       }
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.sqleditor.internal.SQLEditorResources";//$NON-NLS-1$
 
-   /**
-    * Gets the image descriptor (.gif file) corresponding to the given key.
-    * 
-    * @return the requested image descriptor, or <code>null</code> if not found
-    */
-   public static ImageDescriptor getImageDescriptor( String key ) {
-	   ImageDescriptor descriptor = null;
-	   Image image = getImage( key );
-	   if (image != null) {
-		   ImageDescriptor.createFromImage(image);
-	   }
-	   return descriptor;
-   }
-   
-    /**
-     * Gets the resource string identified by the given resource key.
-     * Returns "!<key>!" if resource not found.
-     * 
-     * @param key the key of the desired resource
-     * @return the desired resource string
-     */
-	public static String getString( String key ) {
-        String str = null;
-        ResourceBundle bundle = getResourceBundle();
-        try {
-            str = (bundle != null) ? bundle.getString( key ) : key;
-        } catch (MissingResourceException e) {
-            str = "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$
-        }
-        return str;
+	private SQLEditorResources() {
+		// Do not instantiate
+	}
+
+	public static String common_error;
+	public static String SQLUpdater_nonportable;
+	public static String SQLUpdater_error_location;
+	public static String SQLUpdater_error_annotation;
+	public static String SQLUpdater_error_removemarker;
+	public static String SQLErrorHover_makeStickyHint = null;
+	public static String SQLEditor_outlinePage_sqlSegment_titlePattern;
+	public static String SQLEditor_connection_status_noConnection;
+	public static String plugin_internal_error;
+	public static String SQLEditorConnectionInfo_decode_error;
+	public static String EditorManager_operationFailed;
+	public static String Save;
+	public static String SQLEditor_error_while_trying_to_install_sql_updater;
+	public static String SQLEditorStorage_default_name;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, SQLEditorResources.class);
 	}
 	
-    /**
-     * Gets the resource string identified by the given resource key,
-     * with the given substitutions array.  The contents of the substitutions
-     * array are spliced into the resource string in place of parameter
-     * markers {0}, {1}, etc. in the string.  
-     * 
-     * @param key the key of the desired resource
-     * @param substitutions an array containing substitions
-     * @return the desired resource string, with substitutions
-     */
-    public static String getString( String key, Object[] substitutions ) {
-        String str = getString( key );
-        if (substitutions != null)
-            str = MessageFormat.format( str, substitutions );
-        return str;
-    }
-       
-    /**
-     * Gets the resource bundle associated with this plug-in, or <code>null</code>
-     * if not found.
-     * 
-     * @return the plug-in's resource bundle
-     */
-    public static ResourceBundle getResourceBundle() {
-        if (fgResourceBundle == null) {
-            try {
-                fgResourceBundle = ResourceBundle.getBundle( RESOURCE_BUNDLE );
-            } catch (MissingResourceException x) {
-                fgResourceBundle = null;
-            }
-        }
-        return fgResourceBundle;
-    }
+	   /**
+	    * Gets the image (.gif file) corresponding to the given key.
+	    * 
+	    * @return the requested image, or <code>null</code> if not found
+	    */
+	   public static Image getImage( String key ) {
+	          ImageRegistry imageRegistry = SQLEditorPlugin.getDefault().getImageRegistry();
+	          Image image = imageRegistry.get( key );
+	          if (image == null) {
+	              ImageDescriptor descriptor = null;
+	              try {
+	                  URL baseURL = SQLEditorPlugin.getDefault().getBundle().getEntry("icons/"); //$NON-NLS-1$
+	                  URL imageURL = new URL( baseURL, key + ".gif" ); //$NON-NLS-1$ //$NON-NLS-2$
+	                  descriptor = ImageDescriptor.createFromURL( imageURL );
+	              }
+	              catch (Exception e) {
+	              }
+	              if (descriptor != null) {
+	                  imageRegistry.put( key, descriptor );
+	                  image = imageRegistry.get(key);
+	              }
+	          }
+	          return image;
+	       }
 
-} // end class
+	   /**
+	    * Gets the image descriptor (.gif file) corresponding to the given key.
+	    * 
+	    * @return the requested image descriptor, or <code>null</code> if not found
+	    */
+	   public static ImageDescriptor getImageDescriptor( String key ) {
+		   ImageDescriptor descriptor = null;
+		   Image image = getImage( key );
+		   if (image != null) {
+			   ImageDescriptor.createFromImage(image);
+		   }
+		   return descriptor;
+	   }
+
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorResources.properties b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorResources.properties
index c24401b..a36b687 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorResources.properties
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/SQLEditorResources.properties
@@ -1,91 +1,59 @@
 ## *******************************************************************************
-## Copyright (c) 2000, 2005 IBM Corporation and others.
-## All rights reserved. This program and the accompanying materials 
-## are made available under the terms of the Eclipse Public License v1.0
+## Copyright (c) 2000, 2005 IBM Corporation and others_
+## All rights reserved_ This program and the accompanying materials
+## are made available under the terms of the Eclipse Public License v1_0
 ## which is available at
-## http://www.eclipse.org/legal/epl-v10.html
-## 
+## http://www_eclipse_org/legal/epl-v10_html
+##
 ## Contributors:
 ##     IBM Corporation - initial API and implementation
 ## *******************************************************************************/
 
 ## Resources for the standard editor actions
 
-ContentAssistProposal.label       =Co&ntent Assist@Ctrl+SPACE
-ContentAssistProposal.tooltip     =Content Assist
-ContentAssistProposal.image       =
-ContentAssistProposal.description =Content Assist
-
-ContentAssistTip.label       =Content Tip@Ctrl+SHIFT+SPACE
-ContentAssistTip.tooltip     =Content Tip
-ContentAssistTip.image       =
-ContentAssistTip.description =Content Tip
-
-ContentFormat.label       =F&ormat SQL@Ctrl+SHIFT+F
-ContentFormat.tooltip     =Format SQL
-ContentFormat.image       =
-ContentFormat.description =Format SQL source
-
-## Resources for SQL Editor-specific actions
-
-# Note: the image entry is the relative path from the xxxAction.class file to the yyy.gif file
-SQLEditor.connectAction.label       =Connect to Data&base
-SQLEditor.connectAction.tooltip     =Select or create a database connection
-SQLEditor.connectAction.image       =
-SQLEditor.connectAction.description =Select or create the database connection for this editor
-
-SQLEditor.disconnectAction.label       =Disconnect fro&m Database
-SQLEditor.disconnectAction.tooltip     =Disconnect the editor from the database
-SQLEditor.disconnectAction.image       =
-SQLEditor.disconnectAction.description =Disconnect the editor from connected the database
-
-SQLEditor.runAction.label       =Run S&QL
-SQLEditor.runAction.tooltip     =Run the SQL statements
-SQLEditor.runAction.image       =
-SQLEditor.runAction.description =Run the SQL statements in the editor on the connected database
-
-SQLEditor.setStatementTerminatorAction.label       =Set Statement T&erminator
-SQLEditor.setStatementTerminatorAction.tooltip     =Set the statement terminator
-SQLEditor.setStatementTerminatorAction.image       =
-SQLEditor.setStatementTerminatorAction.description =Set the string that the editor should use to separate SQL statements
+common_error=Error
+SQLUpdater_nonportable=Not portable to {0}:
+SQLUpdater_error_location=Failed to get marker location
+SQLUpdater_error_annotation=Error occurred while updating annotations
+SQLUpdater_error_removemarker=Error occurred while removing markers
+SQLErrorHover_makeStickyHint=Press {0} for focus_
 
 ## Resources for the Set Statement Terminator dialog and composite panel
 
-SQLEditor.setStatementTerminatorDialog.title  = Set Statement Terminator
-SQLEditor.setStatementTerminatorDialog.prompt = Statement terminator:
+SQLEditor_setStatementTerminatorDialog_title  = Set Statement Terminator
+SQLEditor_setStatementTerminatorDialog_prompt = Statement terminator:
 
 ## Resources for the Outline view
 
-SQLEditor.outlinePage.sqlSegment.titlePattern=position {0}
+SQLEditor_outlinePage_sqlSegment_titlePattern=position {0}
 
 ## Resources for the database connection management
 
-SQLEditor.connection.status.noConnection = No connection
-SQLEditor.connection.errorDialog.title   = Connection Exception
-SQLeditor.connection.errorDialog.message = Connection has failed. The following error was reported:\n"{0}"
+SQLEditor_connection_status_noConnection = No connection
+SQLEditor_connection_errorDialog_title   = Connection Exception
+SQLeditor_connection_errorDialog_message = Connection has failed_ The following error was reported:\n"{0}"
 
 ## Miscellaneous resources
 
-SQLEditor.textHover.emptySelection=empty selection
-SQLEditor.error.save.message=Save could not be completed. {0}
-SQLEditor.error.save.title=Problems During Save As...
-SQLEditor.warning.save.delete=The original file ''{0}'' has been deleted.
+SQLEditor_textHover_emptySelection=empty selection
+SQLEditor_error_save_message=Save could not be completed_ {0}
+SQLEditor_error_save_title=Problems During Save As___
+SQLEditor_warning_save_delete=The original file ''{0}'' has been deleted_
 
-plugin.internal_error=SQLEditor plugin internal error
+plugin_internal_error=SQLEditor plugin internal error
 
-AbstractSQLHover.makeStickyHint=Press {0} for focus.
+AbstractSQLHover_makeStickyHint=Press {0} for focus_
 
-SQLEditorConnectionInfo.decode.error=Failed to decode SQLEditorConnectionInfo from {0}
+SQLEditorConnectionInfo_decode_error=Failed to decode SQLEditorConnectionInfo from {0}
 
 # ==============================================================================
 # Editor Framework
 # ==============================================================================
-EditorManager.operationFailed = {0} Failed
-EditorManager.saveChangesQuestion = ''{0}'' has been modified. Save changes to update the syntax highlighting?
+EditorManager_operationFailed = {0} Failed
+EditorManager_saveChangesQuestion = ''{0}'' has been modified_ Save changes to update the syntax highlighting?
 
 Save = Save
-Save_Resource = Save Resource
 
-SQLEditor.error.while.trying.to.install.sql.updater=Error occurred while trying to install sql udpater  
+SQLEditor_error_while_trying_to_install_sql_updater=Error occurred while trying to install sql udpater
 
-SQLEditorStorage.default.name=Scrapbook
\ No newline at end of file
+SQLEditorStorage_default_name=Scrapbook
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/BaseExecuteAction.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/BaseExecuteAction.java
index 851a2dd..450531d 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/BaseExecuteAction.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/BaseExecuteAction.java
@@ -81,7 +81,7 @@
         }
         catch (Exception e)
         {
-            processError(Messages.getString("ExecuteSQLActionDelegate.error.execute"), e, null); //$NON-NLS-1$
+            processError(Messages.ExecuteSQLActionDelegate_error_execute, e, null); 
         }
         finally {
         	ProfileUtil.closeConnection(databaseIdentifier.getProfileName(), databaseIdentifier.getDBname(), conn);
@@ -120,7 +120,7 @@
                     stat = new Status(IStatus.ERROR, SQLEditorPlugin.PLUGIN_ID, 0, error.getMessage() == null ? "" : error
                         .getMessage(), error);
                 }
-                String title = Messages.getString("common.error");
+                String title = Messages.common_error;
                 ErrorDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), title, msg, stat);
             }
         }
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/CopyToClipboardAction.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/CopyToClipboardAction.java
index 64dfca7..9d5f222 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/CopyToClipboardAction.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/CopyToClipboardAction.java
@@ -40,8 +40,8 @@
     {
         super(site);
 
-        setText(Messages.getString("CopyAction.label")); //$NON-NLS-1$
-        setToolTipText(Messages.getString("CopyAction.tooltip")); //$NON-NLS-1$
+        setText(Messages.CopyAction_label); 
+        setToolTipText(Messages.CopyAction_tooltip); 
 
         _fClipboard = clipboard;
         _fPasteAction = pasteAction;
@@ -116,7 +116,7 @@
             if (MessageDialog
             .openQuestion(
                 getShell(),
-                Messages.getString("CopyToClipboard.error.title"), Messages.getString("CopyToClipboard.error.message"))) //$NON-NLS-1$ //$NON-NLS-2$
+                Messages.CopyToClipboard_error_title, Messages.CopyToClipboard_error_message)) 
                 copyToClipboard(text, repeatCount + 1);
         }
     }
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/CutAction.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/CutAction.java
index 95dcd64..e56619e 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/CutAction.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/CutAction.java
@@ -36,8 +36,8 @@
     {
         super(site);
 
-        setText(Messages.getString("CutAction.label")); //$NON-NLS-1$
-        setToolTipText(Messages.getString("CutAction.tooltip")); //$NON-NLS-1$
+        setText(Messages.CutAction_label); 
+        setToolTipText(Messages.CutAction_tooltip); 
 
         _fCopyToClipboardAction = new CopyToClipboardAction(site, clipboard, pasteAction);
 
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/DeleteAction.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/DeleteAction.java
index aa85900..eda60ea 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/DeleteAction.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/DeleteAction.java
@@ -43,8 +43,8 @@
     {
         super(site);
 
-        setText(Messages.getString("DeleteAction.label")); //$NON-NLS-1$
-        setToolTipText(Messages.getString("DeleteAction.tooltip")); //$NON-NLS-1$
+        setText(Messages.DeleteAction_label); 
+        setToolTipText(Messages.DeleteAction_tooltip); 
 
         ISharedImages workbenchImages = PlatformUI.getWorkbench().getSharedImages();
         setDisabledImageDescriptor(workbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE_DISABLED));
@@ -122,7 +122,7 @@
         }
         catch (BadLocationException e)
         {
-        	SQLEditorPlugin.getDefault().log( Messages.getString("DeleteAction.0"), e); //$NON-NLS-1$
+        	SQLEditorPlugin.getDefault().log( Messages.DeleteAction_0, e); 
         }
     }
 
@@ -152,7 +152,7 @@
         }
         catch (BadLocationException e)
         {
-        	SQLEditorPlugin.getDefault().log( Messages.getString("DeleteAction.0"), e); //$NON-NLS-1$
+        	SQLEditorPlugin.getDefault().log( Messages.DeleteAction_0, e); 
         }
 
     }
@@ -189,8 +189,8 @@
     private int confirm()
     {
         MessageBox messageBox = new MessageBox(getShell(), SWT.YES | SWT.NO |SWT.ICON_QUESTION);
-        messageBox.setText(Messages.getString("DeleteAction.confirm.title"));  //$NON-NLS-1$
-        messageBox.setMessage(Messages.getString("DeleteAction.confirm.message") );  //$NON-NLS-1$
+        messageBox.setText(Messages.DeleteAction_confirm_title);  
+        messageBox.setMessage(Messages.DeleteAction_confirm_message );  
         return messageBox.open();
     }
 }
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/ExecuteSQLAction.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/ExecuteSQLAction.java
index c7a8e5c..8b15804 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/ExecuteSQLAction.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/ExecuteSQLAction.java
@@ -32,8 +32,8 @@
      */
     public ExecuteSQLAction(SQLEditor targetEditor)
     {
-        setText(Messages.getString("ExecuteSQLAction.label"));//$NON-NLS-1$
-        setToolTipText(Messages.getString("ExecuteSQLAction.tooltip"));//$NON-NLS-1$
+        setText(Messages.ExecuteSQLAction_label);
+        setToolTipText(Messages.ExecuteSQLAction_tooltip);
         setImageDescriptor(SQLEditorResources.getImageDescriptor("execute"));
         setActionDefinitionId(ISQLEditorActionConstants.EXECUTE_SQL_ACTION_ID);
         //no need to set image
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/ExecuteSelectionSQLAction.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/ExecuteSelectionSQLAction.java
index 951bbca..46ef317 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/ExecuteSelectionSQLAction.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/ExecuteSelectionSQLAction.java
@@ -39,8 +39,8 @@
      */
     public ExecuteSelectionSQLAction(SQLEditor targetEditor)
     {
-        setText(Messages.getString("ExecuteSelectionSQLAction.label"));//$NON-NLS-1$
-        setToolTipText(Messages.getString("ExecuteSelectionSQLAction.tooltip"));//$NON-NLS-1$
+        setText(Messages.ExecuteSelectionSQLAction_label);
+        setToolTipText(Messages.ExecuteSelectionSQLAction_tooltip);
         setImageDescriptor(SQLEditorResources.getImageDescriptor("sql_execute_selection"));
         setActionDefinitionId(ISQLEditorActionConstants.EXECUTE_SELECTION_SQL_ACTION_ID);
         setActiveEditor(targetEditor);
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/Messages.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/Messages.java
index b242ca0..ebe4b6d 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/Messages.java
@@ -11,70 +11,52 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.sqleditor.internal.actions;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.sqleditor.internal.actions.messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.sqleditor.internal.actions.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
+	public static String common_error;
+	public static String CutAction_label;
+	public static String CutAction_tooltip;
+	public static String CopyAction_label;
+	public static String CopyAction_tooltip;
+	public static String CopyToClipboard_error_title;
+	public static String CollectionUtil_invalid_size;
+	public static String CopyToClipboard_error_message;
+	public static String DeleteAction_label;
+	public static String DeleteAction_0;
+	public static String DeleteAction_tooltip;
+	public static String DeleteAction_confirm_title;
+	public static String DeleteAction_confirm_message;
+	public static String PasteAction_label;
+	public static String PasteAction_1;
+	public static String PasteAction_tooltip;
+	public static String ExecuteSQLAction_label;
+	public static String ExecuteSQLAction_tooltip;
+	public static String ExecuteSelectionSQLAction_label;
+	public static String ExecuteSelectionSQLAction_tooltip;
+	public static String RunAction_label;
+	public static String RunAction_tooltip;
+	public static String RunAction_runError;
+	public static String DebugAction_label;
+	public static String DebugAction_tooltip;
+	public static String DebugAction_runError;
+	public static String ExplainSQLAction_label;
+	public static String ExplainSQLAction_tooltip;
+	public static String ExplainSQLActionDelegate_error_initview;
+	public static String ExplainSQLActionDelegate_error_proc_qp;
+	public static String ExecuteSQLActionDelegate_error_execute;
+	public static String ExecuteSQLActionDelegate_error_profile;
+	public static String ExecuteSQLActionDelegate_error_initview;
+	public static String ExecuteSQLActionDelegate_error_interrupted;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/PasteAction.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/PasteAction.java
index a7bf811..643b9f0 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/PasteAction.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/PasteAction.java
@@ -44,8 +44,8 @@
     {
         super(site);
 
-        setText(Messages.getString("PasteAction.label")); //$NON-NLS-1$
-        setToolTipText(Messages.getString("PasteAction.tooltip")); //$NON-NLS-1$
+        setText(Messages.PasteAction_label); 
+        setToolTipText(Messages.PasteAction_tooltip); 
 
         _fClipboard = clipboard;
 
@@ -124,7 +124,7 @@
             }
             catch (BadLocationException e)
             {
-                SQLEditorPlugin.getDefault().log(Messages.getString("PasteAction.1"), e); //$NON-NLS-1$
+                SQLEditorPlugin.getDefault().log(Messages.PasteAction_1, e); 
             }
         }
 
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/messages.properties b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/messages.properties
index afff77e..72d76a3 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/actions/messages.properties
@@ -1,47 +1,47 @@
-common.error=Error
+common_error=Error
 
-CutAction.label= Cu&t
-CutAction.tooltip= Cut the Selected Text to the Clipboard
+CutAction_label= Cu&t
+CutAction_tooltip= Cut the Selected Text to the Clipboard
 
-CopyAction.label= &Copy
-CopyAction.tooltip= Copy the Selected Text to the Clipboard
+CopyAction_label= &Copy
+CopyAction_tooltip= Copy the Selected Text to the Clipboard
 
-CopyToClipboard.error.title= Problem Copying to Clipboard
-CollectionUtil.invalid.size=invalid size
-CopyToClipboard.error.message= There was a problem when accessing the system clipboard. Retry?
+CopyToClipboard_error_title= Problem Copying to Clipboard
+CollectionUtil_invalid_size=invalid size
+CopyToClipboard_error_message= There was a problem when accessing the system clipboard. Retry?
 
-DeleteAction.label=&Delete
-DeleteAction.0=Error while trying to delete node:
-DeleteAction.tooltip=Deletes the selected elements
-DeleteAction.confirm.title=Confirm Delete
-DeleteAction.confirm.message=Are you sure you want to delete?
+DeleteAction_label=&Delete
+DeleteAction_0=Error while trying to delete node:
+DeleteAction_tooltip=Deletes the selected elements
+DeleteAction_confirm_title=Confirm Delete
+DeleteAction_confirm_message=Are you sure you want to delete?
 
-PasteAction.label=&Paste
-PasteAction.1=Error while trying to paste:
-PasteAction.tooltip=Pastes elements from the clipboard
+PasteAction_label=&Paste
+PasteAction_1=Error while trying to paste:
+PasteAction_tooltip=Pastes elements from the clipboard
 
-ExecuteSQLAction.label=&Execute All
-ExecuteSQLAction.tooltip=Execute All SQL Statements
+ExecuteSQLAction_label=&Execute All
+ExecuteSQLAction_tooltip=Execute All SQL Statements
 
-ExecuteSelectionSQLAction.label=E&xecute Selected Text
-ExecuteSelectionSQLAction.tooltip=Execute Selected SQL Statements
+ExecuteSelectionSQLAction_label=E&xecute Selected Text
+ExecuteSelectionSQLAction_tooltip=Execute Selected SQL Statements
 
-RunAction.label=&Run...
-RunAction.tooltip=Run
+RunAction_label=&Run...
+RunAction_tooltip=Run
 
-RunAction.runError=Error occurred when executing RunAction
+RunAction_runError=Error occurred when executing RunAction
 
-DebugAction.label=&Debug...
-DebugAction.tooltip=Debug
-DebugAction.runError=Error occurred when executing DebugAction
+DebugAction_label=&Debug...
+DebugAction_tooltip=Debug
+DebugAction_runError=Error occurred when executing DebugAction
 
-ExplainSQLAction.label=&Get Execution Plan
-ExplainSQLAction.tooltip=Explain SQL Execution Plan
-ExplainSQLActionDelegate.error.initview=Failed to initialize SQL Execution Plan view:
-ExplainSQLActionDelegate.error.proc.qp=Error occurs when getting query plan for procedural object
+ExplainSQLAction_label=&Get Execution Plan
+ExplainSQLAction_tooltip=Explain SQL Execution Plan
+ExplainSQLActionDelegate_error_initview=Failed to initialize SQL Execution Plan view:
+ExplainSQLActionDelegate_error_proc_qp=Error occurs when getting query plan for procedural object
 
-ExecuteSQLActionDelegate.error.execute=Failed to execute SQL:
-ExecuteSQLActionDelegate.error.profile=Failed to get connection profile:
-ExecuteSQLActionDelegate.error.initview=Failed to initialize result view:
-ExecuteSQLActionDelegate.error.interrupted=The execution has been interrupted.
+ExecuteSQLActionDelegate_error_execute=Failed to execute SQL:
+ExecuteSQLActionDelegate_error_profile=Failed to get connection profile:
+ExecuteSQLActionDelegate_error_initview=Failed to initialize result view:
+ExecuteSQLActionDelegate_error_interrupted=The execution has been interrupted.
 
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/editor/SQLEditorOutlineContentProvider.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/editor/SQLEditorOutlineContentProvider.java
index b0dea05..e97005e 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/editor/SQLEditorOutlineContentProvider.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/editor/SQLEditorOutlineContentProvider.java
@@ -224,7 +224,7 @@
                 length = end - offset;
                 Position p = new Position( offset, length );
                 document.addPosition( SQL_SEGMENTS, p );
-                String segmentLabel = MessageFormat.format( SQLEditorResources.getString( "SQLEditor.outlinePage.sqlSegment.titlePattern" ), //$NON-NLS-1$ 
+                String segmentLabel = MessageFormat.format( SQLEditorResources.SQLEditor_outlinePage_sqlSegment_titlePattern, 
                         new Object[] { new Integer( offset )}); 
                 fContent.add( new SQLSegment( segmentLabel, p)); //$NON-NLS-1$
 
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/editor/SQLUpdater.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/editor/SQLUpdater.java
index b85c85d..db85a4d 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/editor/SQLUpdater.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/internal/editor/SQLUpdater.java
@@ -46,6 +46,7 @@
 import org.eclipse.jface.text.source.ISourceViewer;
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.custom.StyledText;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IFileEditorInput;
@@ -135,7 +136,7 @@
         }
         catch (CoreException e)
         {
-            SQLEditorPlugin.getDefault().log(SQLEditorResources.getString("SQLUpdater.error.annotation"), e);
+            SQLEditorPlugin.getDefault().log(SQLEditorResources.SQLUpdater_error_annotation, e);
         }
 
         // XXX: There seemed to have a bug in eclipse's jface text. When in the AnnotationModel
@@ -236,7 +237,7 @@
         }
         catch (CoreException e)
         {
-            SQLEditorPlugin.getDefault().log(SQLEditorResources.getString("SQLUpdater.error.annotation"), e); //$NON-NLS-1$
+            SQLEditorPlugin.getDefault().log(SQLEditorResources.SQLUpdater_error_annotation, e); 
         }
     }
 
@@ -261,13 +262,13 @@
 					storageName = _input.getName() + ": ";//$NON-NLS-1$
 				}
                 attrs.put(IMarker.MESSAGE, storageName
-                    + SQLEditorResources.getString("SQLUpdater.nonportable", new String[]{_portableTarget}) + ex.getMessage()); //$NON-NLS-1$
+                    + NLS.bind(SQLEditorResources.SQLUpdater_nonportable, (new String[]{_portableTarget})) + ex.getMessage()); 
                 updateAnnotation(ex, EditorConstants.PORTABILITY_MARKER_TYPE, attrs);
             }
         }
         catch (CoreException e)
         {
-            SQLEditorPlugin.getDefault().log(SQLEditorResources.getString("SQLUpdater.error.annotation"), e); //$NON-NLS-1$
+            SQLEditorPlugin.getDefault().log(SQLEditorResources.SQLUpdater_error_annotation, e); 
         }
     }
 
@@ -315,7 +316,7 @@
         }
         catch (BadLocationException e1)
         {
-            SQLEditorPlugin.getDefault().log(SQLEditorResources.getString("SQLUpdater.error.location"), e1); //$NON-NLS-1$
+            SQLEditorPlugin.getDefault().log(SQLEditorResources.SQLUpdater_error_location, e1); 
         }
         marker.setAttributes(new String[] 
         {
@@ -446,7 +447,7 @@
                 }
                 catch (CoreException e2)
                 {
-                    SQLEditorPlugin.getDefault().log(SQLEditorResources.getString("SQLUpdater.error.removemarker"), e2); //$NON-NLS-1$
+                    SQLEditorPlugin.getDefault().log(SQLEditorResources.SQLUpdater_error_removemarker, e2); 
                 }
             }
             //after annotation is removed, it disappeared from the side bar
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/result/GroupSQLResultRunnable.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/result/GroupSQLResultRunnable.java
index 8a993ee..65f75b8 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/result/GroupSQLResultRunnable.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/result/GroupSQLResultRunnable.java
@@ -28,6 +28,7 @@
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.MessageDialogWithToggle;
 import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.ui.PlatformUI;
 
 /**
@@ -45,8 +46,8 @@
 
             IPreferenceStore store = SQLEditorPlugin.getDefault().getPreferenceStore();
             MessageDialogWithToggle dlg = MessageDialogWithToggle.openYesNoQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
-                , Messages.getString("GroupSQLResultRunnable.title"), //$NON-NLS-1$
-                Messages.getString("GroupSQLResultRunnable.message"), //$NON-NLS-1$
+                , Messages.GroupSQLResultRunnable_title, 
+                Messages.GroupSQLResultRunnable_message, 
                 null/* use default toggle message */, false, store, PreferenceConstants.EXECUTE_SQL_ERROR_MODE);
             int result = dlg.getReturnCode();
 
@@ -115,10 +116,10 @@
             monitor = manager.createProgressGroup();
         }
 
-        String task = Messages.getString("GroupSQLResultRunnable.name");
+        String task = Messages.GroupSQLResultRunnable_name;
         if (_groups.length > 1)
         {
-            task += Messages.getString("GroupSQLResultRunnable.groups", "" + _groups.length);
+            task += NLS.bind("GroupSQLResultRunnable.groups", (new Object[]{"" + _groups.length}));
         }
         monitor.beginTask(task, _groups.length);
 
@@ -128,7 +129,7 @@
             {
                 if (_groups.length > 1)
                 {
-                    monitor.subTask(Messages.getString("GroupSQLResultRunnable.group", "" + i));
+                    monitor.subTask(NLS.bind("GroupSQLResultRunnable.group", (new Object[]{"" + i})));
                 }
                 _currentJob = new SimpleSQLResultRunnable(_conn, _groups[i], false, _tracker, monitor,
                     getDatabaseIdentifier(), null);
diff --git a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/sql/AbstractSQLEditorTextHover.java b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/sql/AbstractSQLEditorTextHover.java
index 560b3ef..36369d7 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/sql/AbstractSQLEditorTextHover.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqleditor/src/org/eclipse/datatools/sqltools/sqleditor/sql/AbstractSQLEditorTextHover.java
@@ -21,6 +21,7 @@
 import org.eclipse.jface.text.ITextHover;
 import org.eclipse.jface.text.ITextHoverExtension;
 import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorPart;
@@ -109,7 +110,7 @@
         }
 
         String keySequence = sequences[0].format();
-    return SQLEditorResources.getString("SQLErrorHover.makeStickyHint", new String[]{keySequence}); //$NON-NLS-1$
+    return NLS.bind(SQLEditorResources.SQLErrorHover_makeStickyHint, (new String[]{keySequence})); 
     }
 
     /**
diff --git a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/ConnectionInfoDialog.java b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/ConnectionInfoDialog.java
index 18b0650..d0fb3d2 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/ConnectionInfoDialog.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/ConnectionInfoDialog.java
@@ -16,6 +16,7 @@
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.resource.JFaceColors;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -84,8 +85,7 @@
 		Composite composite = (Composite) super.createDialogArea(parent);
 		if (_connInfo == null || _connInfo.getConnectionProfile() == null ) {
 			Label label = new Label(composite, SWT.NONE);
-			label.setText(Messages
-					.getString("SelectProfileDialog.noprofile"));
+			label.setText(Messages.SelectProfileDialog_noprofile);
 			label.setForeground(JFaceColors.getErrorText(label.getDisplay()));
 		}else 
 		{
@@ -93,8 +93,7 @@
 			if (_connInfo.getConnectionProfile() == null) {
 				Label label = new Label(composite, SWT.NONE);
 				
-				label.setText(Messages.getString(
-						"SelectProfileDialog.wrongprofile", profileName));
+				label.setText(NLS.bind(Messages.SelectProfileDialog_wrongprofile, profileName));
 				label.setForeground(JFaceColors.getErrorText(label.getDisplay()));
 			}
 		}
@@ -109,7 +108,7 @@
 	 */
 	protected void configureShell(Shell shell) {
 		super.configureShell(shell);
-		shell.setText(Messages.getString("SelectProfileDialog.title")); //$NON-NLS-1$
+		shell.setText(Messages.SelectProfileDialog_title); 
 	}
 
 	protected void okPressed() {
diff --git a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/ConnectionInfoGroup.java b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/ConnectionInfoGroup.java
index 75a8600..3b1244d 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/ConnectionInfoGroup.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/ConnectionInfoGroup.java
@@ -177,13 +177,11 @@
 		this.setLayout(gridLayout1);
 
 		_labelType = new Label(this, SWT.NONE);
-		_labelType.setText(Messages
-				.getString("SelectProfileDialog.profile.type")); //$NON-NLS-1$
+		_labelType.setText(Messages.SelectProfileDialog_profile_type); //$NON-NLS-1$
 		createComboType(this);
 
 		_labelName = new Label(this, SWT.NONE);
-		_labelName.setText(Messages
-				.getString("SelectProfileDialog.profile.name")); //$NON-NLS-1$
+		_labelName.setText(Messages.SelectProfileDialog_profile_name); //$NON-NLS-1$
 		//hide the "create" button for now since we can't invoke the right wizard
 //		Composite compositeName = new Composite(this, SWT.NONE);
 //		gridData3.grabExcessHorizontalSpace = true;
@@ -206,8 +204,7 @@
 			_checkBoxConnect = new Button(this, SWT.CHECK);
 			gridData2.horizontalSpan = 2;
 			_checkBoxConnect.setLayoutData(gridData2);
-			_checkBoxConnect.setText(Messages
-					.getString("SelectProfileDialog.donot.connect")); //$NON-NLS-1$
+			_checkBoxConnect.setText(Messages.SelectProfileDialog_donot_connect); //$NON-NLS-1$
 			_checkBoxConnect.addListener(SWT.Selection, this);
 			if (_listener != null) {
 				_checkBoxConnect.addListener(SWT.Selection, _listener);
@@ -222,8 +219,7 @@
 			gridData6.verticalSpan = 2;
 			_textWarning.setLayoutData(gridData6);
 			_textWarning.setEditable(false);
-			_textWarning.setText(Messages
-					.getString("SelectProfileDialog.warning")); //$NON-NLS-1$
+			_textWarning.setText(Messages.SelectProfileDialog_warning); //$NON-NLS-1$
 			_textWarning.setVisible(false);
 			// setSize to hold the warning
 			this.setSize(new org.eclipse.swt.graphics.Point(460, 469));
@@ -270,10 +266,8 @@
 				IStatus status = new Status(IStatus.ERROR,
 						EditorCorePlugin.PLUGIN_ID, 0, statusmsg, e);
 				Shell shell = getShell();
-				String title = Messages
-						.getString("SelectProfileDialog.error.jdbc.title"); //$NON-NLS-1$
-				String msg = Messages
-						.getString("SelectProfileDialog.error.jdbc.message"); //$NON-NLS-1$
+				String title = Messages.SelectProfileDialog_error_jdbc_title; //$NON-NLS-1$
+				String msg = Messages.SelectProfileDialog_error_jdbc_message; //$NON-NLS-1$
 				ErrorDialog.openError(shell, title, msg, status);
 
 				return;
@@ -373,7 +367,7 @@
 
 	public String getWarning() {
 		if (!_mustConnect && _checkBoxConnect.getSelection()) {
-			return Messages.getString("SelectProfileDialog.warning");
+			return Messages.SelectProfileDialog_warning;
 		}
 		return null;
 	}
diff --git a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/Messages.java b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/Messages.java
index 3372c27..7188814 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/Messages.java
@@ -11,70 +11,29 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.internal.sqlscrapbook.connection;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.internal.sqlscrapbook.connection.messages"; //$NON-NLS-1$
+public final class Messages extends NLS {
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.internal.sqlscrapbook.connection.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
+	public static String SelectProfileDialog_title;
+	public static String SelectProfileDialog_create;
+	public static String SelectProfileDialog_warning;
+	public static String SelectProfileDialog_error_jdbc_title;
+	public static String SelectProfileDialog_profile_name;
+	public static String SelectProfileDialog_profile_type;
+	public static String SelectProfileDialog_donot_connect;
+	public static String SelectProfileDialog_error_jdbc_message;
+	public static String SelectProfileGroup_error_init;
+	public static String SelectProfileDialog_noprofile;
+	public static String SelectProfileDialog_wrongprofile;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/messages.properties b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/messages.properties
index aa45674..a17bb88 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/connection/messages.properties
@@ -1,11 +1,11 @@
-SelectProfileDialog.title=Select Profile for the Editor
-SelectProfileDialog.create=C&reate...
-SelectProfileDialog.warning=Warning\!\n  The full feature of the editor will not be available without connection.
-SelectProfileDialog.error.jdbc.title=Connection Error
-SelectProfileDialog.profile.name=Connection profile &name:
-SelectProfileDialog.profile.type=Connection profile &type:
-SelectProfileDialog.donot.connect=&Do not connect now
-SelectProfileDialog.error.jdbc.message=Error occurred while trying to establish connection
-SelectProfileGroup.error.init=Error initializing SelectProfileGroup using: {0}
-SelectProfileDialog.noprofile=There is no connection profile associated with this resource. Select a connection profile type/name.
-SelectProfileDialog.wrongprofile=The connection profile (\"{0}\") associated with this resource is not valid. Select a connection profile type/name.
+SelectProfileDialog_title=Select Profile for the Editor
+SelectProfileDialog_create=C&reate...
+SelectProfileDialog_warning=Warning\!\n  The full feature of the editor will not be available without connection.
+SelectProfileDialog_error_jdbc_title=Connection Error
+SelectProfileDialog_profile_name=Connection profile &name:
+SelectProfileDialog_profile_type=Connection profile &type:
+SelectProfileDialog_donot_connect=&Do not connect now
+SelectProfileDialog_error_jdbc_message=Error occurred while trying to establish connection
+SelectProfileGroup_error_init=Error initializing SelectProfileGroup using: {0}
+SelectProfileDialog_noprofile=There is no connection profile associated with this resource. Select a connection profile type/name.
+SelectProfileDialog_wrongprofile=The connection profile (\"{0}\") associated with this resource is not valid. Select a connection profile type/name.
diff --git a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/ConstructedEditorMessages.properties b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/ConstructedEditorMessages.properties
new file mode 100644
index 0000000..0fe9440
--- /dev/null
+++ b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/ConstructedEditorMessages.properties
@@ -0,0 +1,5 @@
+SetConnectionInfo.label       =Set Connec&tion Info
+SetConnectionInfo.tooltip     =Set Connection Information
+SetConnectionInfo.image       =
+SetConnectionInfo.description =Set connection information of the editor
+
diff --git a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/Messages.java b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/Messages.java
index 960c772..6ccff0c 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/Messages.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/Messages.java
@@ -11,70 +11,30 @@
  *******************************************************************************/
 package org.eclipse.datatools.sqltools.internal.sqlscrapbook.editor;
 
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
-/**
- * @author Hui Cao
- * 
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.internal.sqlscrapbook.editor.messages"; //$NON-NLS-1$
+import org.eclipse.osgi.util.NLS;
 
-	public static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+public final class Messages extends NLS {
+	private static final String BUNDLE_FOR_CONSTRUCTED_KEYS= "org.eclipse.datatools.sqltools.internal.sqlscrapbook.editor.ConstructedEditorMessages";//$NON-NLS-1$
+	private static ResourceBundle fgBundleForConstructedKeys= ResourceBundle.getBundle(BUNDLE_FOR_CONSTRUCTED_KEYS);
+
+	/**
+	 * Returns the message bundle which contains constructed keys.
+	 *
+	 * @return the message bundle
+	 */
+	public static ResourceBundle getBundleForConstructedKeys() {
+		return fgBundleForConstructedKeys;
+	}
+
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.sqltools.internal.sqlscrapbook.editor.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-	
-    public static String getString(String key, String arg0)
-    {
-        return getString(key, new Object[]{arg0});
-    }
-
-    public static String getString(String key, String arg0, String arg1)
-    {
-        return getString(key, new Object[]{arg0,arg1});
-    }
-
-    public static String getString(String key, String arg0, String arg1, String arg2)
-    {
-        return getString(key, new Object[]{arg0,arg1,arg2});
-    }
-    
-    public static String getString(String key, Object[] args)
-    {
-        try
-        {
-            return MessageFormat.format(RESOURCE_BUNDLE.getString(key),args);
-        }
-        catch (MissingResourceException e)
-        {
-            StringBuffer argString = new StringBuffer(key);
-            argString.append(":");
-            for (int i=0; i< args.length; i++){
-                argString.append(args[i]);
-            }
-            return argString.toString();
-        }
-    }
-
-    /**
-     * Return the Locale that is loaded during startup
-     */
-    public static Locale getLocale()
-    {
-        return RESOURCE_BUNDLE.getLocale();
-    }
-
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/SQLScrapbookEditor.java b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/SQLScrapbookEditor.java
index b6e7b2f..cda99f0 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/SQLScrapbookEditor.java
+++ b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/SQLScrapbookEditor.java
@@ -53,7 +53,7 @@
 
 	protected void createActions() {
 		super.createActions();
-        ResourceBundle bundle = Messages.RESOURCE_BUNDLE;
+        ResourceBundle bundle = Messages.getBundleForConstructedKeys();
 
         IAction a = new SetConnectionInfoAction(bundle,
 				"SetConnectionInfo.", this); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/messages.properties b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/messages.properties
index 7a0c2d7..e69de29 100644
--- a/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/messages.properties
+++ b/plugins/org.eclipse.datatools.sqltools.sqlscrapbook/src/org/eclipse/datatools/sqltools/internal/sqlscrapbook/editor/messages.properties
@@ -1,5 +0,0 @@
-SetConnectionInfo.label       =Set Connec&tion Info
-SetConnectionInfo.tooltip     =Set Connection Information
-SetConnectionInfo.image       =
-SetConnectionInfo.description =Set connection information of the editor 
-