diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties b/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties
index 86b5145..09b078b 100644
--- a/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties
+++ b/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties
@@ -8,14 +8,14 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-AudioDescription.view.time=Time
-AudioDescription.view.desc=Description
-AudioDescription.view.enable=Enable
-AudioDescription.view.notEnable=Not Enable
+AudioDescription_view_time=Time
+AudioDescription_view_desc=Description
+AudioDescription_view_enable=Enable
+AudioDescription_view_notEnable=Not Enable
 
-AudioDescription.preference.title=Audio Description Preference
-AudioDescription.voice.engine=TTS engine
-Metadata.available=Audio Description is Available
+AudioDescription_preference_title=Audio Description Preference
+AudioDescription_voice_engine=TTS engine
+Metadata_available=Audio Description is Available
 
-AudioDescription.on=Audio Description is on
-AudioDescription.off=Audio Description is off
\ No newline at end of file
+AudioDescription_on=Audio Description is on
+AudioDescription_off=Audio Description is off
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties
index c0b1c63..a2781e2 100644
--- a/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties
+++ b/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties
@@ -8,15 +8,15 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-AudioDescription.view.time=\u6642\u9593
-AudioDescription.view.desc=\u8aac\u660e
-AudioDescription.view.enable=\u89e3\u8aac\u30aa\u30f3
-AudioDescription.view.notEnable=\u89e3\u8aac\u30aa\u30d5
+AudioDescription_view_time=\u6642\u9593
+AudioDescription_view_desc=\u8aac\u660e
+AudioDescription_view_enable=\u89e3\u8aac\u30aa\u30f3
+AudioDescription_view_notEnable=\u89e3\u8aac\u30aa\u30d5
 
-AudioDescription.preference.title=\u97f3\u58f0\u8a2d\u5b9a
-AudioDescription.voice.engine=TTS\u30a8\u30f3\u30b8\u30f3
+AudioDescription_preference_title=\u97f3\u58f0\u8a2d\u5b9a
+AudioDescription_voice_engine=TTS\u30a8\u30f3\u30b8\u30f3
 
-Metadata.available=\u97f3\u58f0\u89e3\u8aac\u5229\u7528\u53ef\u80fd
+Metadata_available=\u97f3\u58f0\u89e3\u8aac\u5229\u7528\u53ef\u80fd
 
-AudioDescription.on=\u97f3\u58f0\u89e3\u8aac\u30aa\u30f3
-AudioDescription.off=\u97f3\u58f0\u89e3\u8aac\u30aa\u30d5
\ No newline at end of file
+AudioDescription_on=\u97f3\u58f0\u89e3\u8aac\u30aa\u30f3
+AudioDescription_off=\u97f3\u58f0\u89e3\u8aac\u30aa\u30d5
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java
index ce020ba..e21300a 100644
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java
+++ b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java
@@ -90,10 +90,10 @@
 			return;
 
 		if (plugin.getEnable()) {
-			handle.getVoice().speak(Messages.getString("AudioDescription.on"),
+			handle.getVoice().speak(Messages.AudioDescription_on,
 					flush);
 		} else {
-			handle.getVoice().speak(Messages.getString("AudioDescription.off"),
+			handle.getVoice().speak(Messages.AudioDescription_off,
 					flush);
 		}
 	}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java
index 94b5987..99c536d 100644
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java
+++ b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java
@@ -26,7 +26,7 @@
 	public ADPreferencePage() {
 		super(GRID);
 		setPreferenceStore(DescriptionPlugin.getDefault().getPreferenceStore());
-		setDescription(Messages.getString("AudioDescription.preference.title")); //$NON-NLS-1$
+		setDescription(Messages.AudioDescription_preference_title); 
 	}
 
 	@Override
@@ -35,7 +35,7 @@
 		String[][] labelAndIds = TTSRegistry.getLabelAndIds();
 		addField(rgfe = new RadioGroupFieldEditor(
 				DescriptionPlugin.PREF_ENGINE,
-				Messages.getString("AudioDescription.voice.engine"), 1, labelAndIds, //$NON-NLS-1$
+				Messages.AudioDescription_voice_engine, 1, labelAndIds, 
 				getFieldEditorParent()));
 		Composite c = rgfe.getRadioBoxControl(getFieldEditorParent());
 		for (int i = 0; i < labelAndIds.length; i++) {
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java
index 9055acd..81c19b6 100644
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java
+++ b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java
@@ -58,12 +58,10 @@
 		table.setHeaderVisible(true);
 		table.setLinesVisible(true);
 		TableColumn tableColumnProperty = new TableColumn(table, SWT.LEFT);
-		tableColumnProperty.setText(Messages
-				.getString("AudioDescription.view.time"));
+		tableColumnProperty.setText(Messages.AudioDescription_view_time);
 		tableColumnProperty.setWidth(70);
 		TableColumn tableColumnValue = new TableColumn(table, SWT.LEFT);
-		tableColumnValue.setText(Messages
-				.getString("AudioDescription.view.desc"));
+		tableColumnValue.setText(Messages.AudioDescription_view_desc);
 		tableColumnValue.setWidth(130);
 
 		GridData data = new GridData(GridData.FILL_BOTH);
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java
index bf3b71f..c1fadb6 100644
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java
+++ b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java
@@ -49,11 +49,10 @@
 		if (status.isDisposed())
 			return;
 		if (enable) {
-			status.setText(Messages.getString("AudioDescription.view.enable")
+			status.setText(Messages.AudioDescription_view_enable
 					+ " " + timeText);
 		} else {
-			status.setText(Messages
-					.getString("AudioDescription.view.notEnable")
+			status.setText(Messages.AudioDescription_view_notEnable
 					+ " " + timeText);
 		}
 	}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java
index b87f690..1057884 100644
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java
+++ b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java
@@ -8,35 +8,29 @@
  * Contributors:
  *    Takashi ITOH - initial API and implementation
  *******************************************************************************/
-
 package org.eclipse.actf.ai.internal.audio.description;
 
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * This provides the resource string.
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "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 = "messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	/**
-	 * @param key
-	 *            the name of the resource string.
-	 * @return the string specified the key.
-	 */
-	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 AudioDescription_view_time;
+	public static String AudioDescription_view_desc;
+	public static String AudioDescription_view_enable;
+	public static String AudioDescription_view_notEnable;
+	public static String AudioDescription_preference_title;
+	public static String AudioDescription_voice_engine;
+	public static String Metadata_available;
+	public static String AudioDescription_on;
+	public static String AudioDescription_off;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/messages.properties b/plugins/org.eclipse.actf.ai.navigator/src/messages.properties
index de8d0fd..6390ffc 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/messages.properties
+++ b/plugins/org.eclipse.actf.ai.navigator/src/messages.properties
@@ -9,29 +9,29 @@
 #     Daisuke SATO - initial configuration.
 ###############################################################################
 
-NavigatorTreeView.property=Property
-NavigatorTreeView.value=Value
+NavigatorTreeView_property=Property
+NavigatorTreeView_value=Value
 
-DialogOpenURL.Open_URL_2=Open a page
+DialogOpenURL_Open_URL_2=Open a page
 
-IManipulator.TreeNavigaion=Tree Navigation
-IManipulator.FormInput=Form Input
-IManipulator.Input=Input
-FormInputDialog.Textarea=Text Area Input
-FormInputDialog.Password=Password Input
-FormInputDialog.Text=Text Input
-FormInputDialog.Search=Find Text
-FormInputDialog.Forward=&Forward
-FormInputDialog.Backward=&Backward
-FormInputDialog.Exact=&Case Sensitive
+IManipulator_TreeNavigaion=Tree Navigation
+IManipulator_FormInput=Form Input
+IManipulator_Input=Input
+FormInputDialog_Textarea=Text Area Input
+FormInputDialog_Password=Password Input
+FormInputDialog_Text=Text Input
+FormInputDialog_Search=Find Text
+FormInputDialog_Forward=&Forward
+FormInputDialog_Backward=&Backward
+FormInputDialog_Exact=&Case Sensitive
 
-FormSelectDialog.Single=Select an option
-FormSelectDialog.Multiple=Select options
+FormSelectDialog_Single=Select an option
+FormSelectDialog_Multiple=Select options
 
-AccessKeyListDialog.Title=Access Key List
+AccessKeyListDialog_Title=Access Key List
 
-AltInputDialog.Text=Alt Text Input
+AltInputDialog_Text=Alt Text Input
 
-UserInfo.PREFERENCES_NAME=User Annotation Preferences
-UserInfo.SAVE_ANNOTATION=&Save annotation automatically
-UserInfo.REFRESH_TREEVIEW=&Refresh Tree View automatically
+UserInfo_PREFERENCES_NAME=User Annotation Preferences
+UserInfo_SAVE_ANNOTATION=&Save annotation automatically
+UserInfo_REFRESH_TREEVIEW=&Refresh Tree View automatically
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties
index 0bc0958..715e65f 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties
+++ b/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties
@@ -9,31 +9,29 @@
 #     Daisuke SATO - initial configuration.
 ###############################################################################
 
-NavigatorTreeView.property=\u30d7\u30ed\u30d1\u30c6\u30a3
-NavigatorTreeView.value=\u5024
+NavigatorTreeView_property=\u30d7\u30ed\u30d1\u30c6\u30a3
+NavigatorTreeView_value=\u5024
 
-DialogOpenURL.Open_URL_2=\u30da\u30fc\u30b8\u3092\u958b\u304f
+DialogOpenURL_Open_URL_2=\u30da\u30fc\u30b8\u3092\u958b\u304f
 
-IManipulator.TreeNavigaion=\u30c4\u30ea\u30fc\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3
-IManipulator.FormInput=\u30d5\u30a9\u30fc\u30e0\u5165\u529b
-IManipulator.Input=\u5165\u529b
+IManipulator_TreeNavigaion=\u30c4\u30ea\u30fc\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3
+IManipulator_FormInput=\u30d5\u30a9\u30fc\u30e0\u5165\u529b
+IManipulator_Input=\u5165\u529b
+FormInputDialog_Textarea=\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u306e\u5165\u529b
+FormInputDialog_Password=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5165\u529b
+FormInputDialog_Text=\u30c6\u30ad\u30b9\u30c8\u306e\u5165\u529b
+FormInputDialog_Search=\u6587\u5b57\u5217\u306e\u691c\u7d22
+FormInputDialog_Forward=\u4e0b\u3078(&F)
+FormInputDialog_Backward=\u4e0a\u3078(&B)
+FormInputDialog_Exact=\u5927\u6587\u5b57\u3068\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b(&C)
 
-FormInputDialog.Textarea=\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u306e\u5165\u529b
-FormInputDialog.Password=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5165\u529b
-FormInputDialog.Text=\u30c6\u30ad\u30b9\u30c8\u306e\u5165\u529b
+FormSelectDialog_Single=\u9805\u76ee\u306e\u9078\u629e
+FormSelectDialog_Multiple=\u9805\u76ee\u306e\u8907\u6570\u9078\u629e
 
-FormInputDialog.Search=\u6587\u5b57\u5217\u306e\u691c\u7d22
-FormInputDialog.Forward=\u4e0b\u3078(&F)
-FormInputDialog.Backward=\u4e0a\u3078(&B)
-FormInputDialog.Exact=\u5927\u6587\u5b57\u3068\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b(&C)
+AccessKeyListDialog_Title=\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u30ea\u30b9\u30c8
 
-FormSelectDialog.Single=\u9805\u76ee\u306e\u9078\u629e
-FormSelectDialog.Multiple=\u9805\u76ee\u306e\u8907\u6570\u9078\u629e
+AltInputDialog_Text=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u306e\u5165\u529b
 
-AccessKeyListDialog.Title=\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u30ea\u30b9\u30c8
-
-AltInputDialog.Text=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u306e\u5165\u529b
-
-UserInfo.PREFERENCES_NAME=\u6ce8\u91c8\u306e\u8a2d\u5b9a
-UserInfo.SAVE_ANNOTATION=\u81ea\u52d5\u7684\u306b\u6ce8\u91c8\u3092\u4fdd\u5b58\u3059\u308b(&S)
-UserInfo.REFRESH_TREEVIEW=\u81ea\u52d5\u7684\u306b\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc\u3092\u66f4\u65b0\u3059\u308b(&R)
+UserInfo_PREFERENCES_NAME=\u6ce8\u91c8\u306e\u8a2d\u5b9a
+UserInfo_SAVE_ANNOTATION=\u81ea\u52d5\u7684\u306b\u6ce8\u91c8\u3092\u4fdd\u5b58\u3059\u308b(&S)
+UserInfo_REFRESH_TREEVIEW=\u81ea\u52d5\u7684\u306b\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc\u3092\u66f4\u65b0\u3059\u308b(&R)
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java
index a964d7c..026b852 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java
@@ -8,34 +8,40 @@
  * Contributors:
  *    Daisuke SATO - initial API and implementation
  *******************************************************************************/
-
 package org.eclipse.actf.ai.internal.navigator;
 
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
+public final class Messages extends NLS {
 
-/**
- * This provides the resource string.
- */
-public class Messages {
-    private static final String BUNDLE_NAME = "messages"; //$NON-NLS-1$
+	private static final String BUNDLE_NAME = "messages";//$NON-NLS-1$
 
-    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+	private Messages() {
+		// Do not instantiate
+	}
 
-    private Messages() {
-    }
+	public static String NavigatorTreeView_property;
+	public static String NavigatorTreeView_value;
+	public static String DialogOpenURL_Open_URL_2;
+	public static String IManipulator_TreeNavigaion;
+	public static String IManipulator_FormInput;
+	public static String IManipulator_Input;
+	public static String FormInputDialog_Textarea;
+	public static String FormInputDialog_Password;
+	public static String FormInputDialog_Text;
+	public static String FormInputDialog_Search;
+	public static String FormInputDialog_Forward;
+	public static String FormInputDialog_Backward;
+	public static String FormInputDialog_Exact;
+	public static String FormSelectDialog_Single;
+	public static String FormSelectDialog_Multiple;
+	public static String AccessKeyListDialog_Title;
+	public static String AltInputDialog_Text;
+	public static String UserInfo_PREFERENCES_NAME;
+	public static String UserInfo_SAVE_ANNOTATION;
+	public static String UserInfo_REFRESH_TREEVIEW;
 
-    /**
-     * @param key The name of the resource string.
-     * @return The string specified the key.
-     */
-    public static String getString(String key) {
-        // TODO Auto-generated method stub
-        try {
-            return RESOURCE_BUNDLE.getString(key);
-        } catch (MissingResourceException e) {
-            return '!' + key + '!';
-        }
-    }
-}
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java
index 44f195d..616f1c2 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java
@@ -41,7 +41,7 @@
      * The instance of the Mode of the tree navigation mode.
      * This is the default mode of the application.
      */
-    Mode TREE_NAVIGATION_MODE = new Mode(Messages.getString("IManipulator.TreeNavigaion"), TREE_NAVIGATION_MODE_CODE); //$NON-NLS-1$
+    Mode TREE_NAVIGATION_MODE = new Mode(Messages.IManipulator_TreeNavigaion, TREE_NAVIGATION_MODE_CODE); 
     
     /**
      * The code of the form input mode.
@@ -52,7 +52,7 @@
      * The instance of the Mode of the form input mode.
      * This mode is used during the users input information into HTML forms.
      */
-    Mode FORM_INPUT_MODE = new Mode(Messages.getString("IManipulator.FormInput"), FORM_INPUT_MODE_CODE); //$NON-NLS-1$
+    Mode FORM_INPUT_MODE = new Mode(Messages.IManipulator_FormInput, FORM_INPUT_MODE_CODE); 
     
     /**
      * The code of the key hook disabled mode.
@@ -63,7 +63,7 @@
      * The instance of the Mode of the key hook disabled mode.
      * This mode is used during a dialog is shown.
      */
-    Mode KEYHOOK_DISABLED_MODE = new Mode(Messages.getString("IManipulator.Input"), KEYHOOK_DISABLED_MODE_CODE); //$NON-NLS-1$
+    Mode KEYHOOK_DISABLED_MODE = new Mode(Messages.IManipulator_Input, KEYHOOK_DISABLED_MODE_CODE); 
 
     /**
      * @param browserControl The instance of the IBrowserControl to be controlled by the manipulator.
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/AccessKeyListDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/AccessKeyListDialog.java
index 88d30d5..76cb5ea 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/AccessKeyListDialog.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/AccessKeyListDialog.java
@@ -40,7 +40,7 @@
     protected void configureShell(Shell newShell) {
         super.configureShell(newShell);
         
-        newShell.setText(Messages.getString("AccessKeyListDialog.Title")); //$NON-NLS-1$
+        newShell.setText(Messages.AccessKeyListDialog_Title); 
 
     }
 
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormInputDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormInputDialog.java
index 06407ec..511ec69 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormInputDialog.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormInputDialog.java
@@ -42,11 +42,11 @@
         super.configureShell(newShell);
         
         if(multi)
-            newShell.setText(Messages.getString("FormInputDialog.Textarea")); //$NON-NLS-1$
+            newShell.setText(Messages.FormInputDialog_Textarea); 
         else if(pass)
-            newShell.setText(Messages.getString("FormInputDialog.Password")); //$NON-NLS-1$
+            newShell.setText(Messages.FormInputDialog_Password); 
         else
-            newShell.setText(Messages.getString("FormInputDialog.Text")); //$NON-NLS-1$
+            newShell.setText(Messages.FormInputDialog_Text); 
     }
 
     @Override
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormSelectDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormSelectDialog.java
index 07094b6..2732419 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormSelectDialog.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormSelectDialog.java
@@ -45,9 +45,9 @@
         super.configureShell(newShell);
 
         if (multiple) 
-            newShell.setText(Messages.getString("FormSelectDialog.Multiple")); //$NON-NLS-1$
+            newShell.setText(Messages.FormSelectDialog_Multiple); 
         else
-            newShell.setText(Messages.getString("FormSelectDialog.Single")); //$NON-NLS-1$
+            newShell.setText(Messages.FormSelectDialog_Single); 
     }
 
     @Override
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/SearchDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/SearchDialog.java
index a7adbf4..92de07a 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/SearchDialog.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/SearchDialog.java
@@ -48,7 +48,7 @@
     protected void configureShell(Shell newShell) {
         super.configureShell(newShell);
 
-        newShell.setText(Messages.getString("FormInputDialog.Search"));
+        newShell.setText(Messages.FormInputDialog_Search);
     }
 
     @Override
@@ -69,7 +69,7 @@
         
         backwardRadio = new Button(container, SWT.RADIO);
         backwardRadio.setSelection(!isForward);
-        backwardRadio.setText(Messages.getString("FormInputDialog.Backward"));
+        backwardRadio.setText(Messages.FormInputDialog_Backward);
         backwardRadio.addSelectionListener(new SelectionListener(){
             public void widgetDefaultSelected(SelectionEvent e) {
             }
@@ -79,7 +79,7 @@
         });
         
         forwardRadio = new Button(container, SWT.RADIO);
-        forwardRadio.setText(Messages.getString("FormInputDialog.Forward"));
+        forwardRadio.setText(Messages.FormInputDialog_Forward);
         forwardRadio.setSelection(isForward);
         forwardRadio.addSelectionListener(new SelectionListener(){
             public void widgetDefaultSelected(SelectionEvent e) {
@@ -91,7 +91,7 @@
 
         exactButton = new Button(container, SWT.CHECK);
         exactButton.setSelection(exact);
-        exactButton.setText(Messages.getString("FormInputDialog.Exact"));
+        exactButton.setText(Messages.FormInputDialog_Exact);
         exactButton.addSelectionListener(new SelectionListener(){
             public void widgetDefaultSelected(SelectionEvent e) {
             }
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferencePage.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferencePage.java
index 8e87cea..009fc5b 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferencePage.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferencePage.java
@@ -39,7 +39,7 @@
 	public UserInfoPreferencePage() {
 		super(GRID);
 		setPreferenceStore(NavigatorPlugin.getDefault().getPreferenceStore());
-		setDescription(Messages.getString("UserInfo.PREFERENCES_NAME"));
+		setDescription(Messages.UserInfo_PREFERENCES_NAME);
 	}
 	
 	/**
@@ -53,7 +53,7 @@
         addField(
                 new BooleanFieldEditor(
                     UserInfoPreferenceConstants.AUTO_SAVE,
-                    Messages.getString("UserInfo.SAVE_ANNOTATION"), 
+                    Messages.UserInfo_SAVE_ANNOTATION, 
                     getFieldEditorParent()));
 
         /*
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltInputDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltInputDialog.java
index 08a4fe8..b3b6c5e 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltInputDialog.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltInputDialog.java
@@ -34,7 +34,7 @@
     protected void configureShell(Shell newShell) {
         super.configureShell(newShell);
 
-        newShell.setText(Messages.getString("AltInputDialog.Text"));
+        newShell.setText(Messages.AltInputDialog_Text);
     }
 
     @Override
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/URLOpenDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/URLOpenDialog.java
index 918d226..3c0c37a 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/URLOpenDialog.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/URLOpenDialog.java
@@ -126,7 +126,7 @@
 	 * @return 1 (OK button), 0 (Cancel button)
 	 */
 	public int open() {
-		this._shell.setText(Messages.getString("DialogOpenURL.Open_URL_2"));
+		this._shell.setText(Messages.DialogOpenURL_Open_URL_2);
 
 		createSettingControls();
 
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/views/NavigatorTreeView.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/views/NavigatorTreeView.java
index 450c64b..2bcf718 100644
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/views/NavigatorTreeView.java
+++ b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/views/NavigatorTreeView.java
@@ -210,10 +210,10 @@
         table.setHeaderVisible(true);
         table.setLinesVisible(true);
         TableColumn tableColumnProperty = new TableColumn(table, SWT.LEFT);
-        tableColumnProperty.setText(Messages.getString("NavigatorTreeView.property")); //$NON-NLS-1$
+        tableColumnProperty.setText(Messages.NavigatorTreeView_property); 
         tableColumnProperty.setWidth(70);
         TableColumn tableColumnValue = new TableColumn(table, SWT.LEFT);
-        tableColumnValue.setText(Messages.getString("NavigatorTreeView.value")); //$NON-NLS-1$
+        tableColumnValue.setText(Messages.NavigatorTreeView_value); 
         tableColumnValue.setWidth(100);
 
         tableViewer.setLabelProvider(new TreeItemDetailsLabelProvider());
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/messages.properties b/plugins/org.eclipse.actf.ai.tts.protalker/src/messages.properties
index 71815f9..e428411 100644
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/messages.properties
+++ b/plugins/org.eclipse.actf.ai.tts.protalker/src/messages.properties
@@ -8,8 +8,8 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-tts.protalker.description=ProTalker Settings
-tts.protalker.voice=Voice Type:
-tts.protalker.male=Male
-tts.protalker.female=Female
-tts.protalker.notAvailable=ProTalker is not Available
\ No newline at end of file
+tts_protalker_description=ProTalker Settings
+tts_protalker_voice=Voice Type:
+tts_protalker_male=Male
+tts_protalker_female=Female
+tts_protalker_notAvailable=ProTalker is not Available
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.tts.protalker/src/messages_ja.properties
index 8497f0a..1e257dc 100644
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/messages_ja.properties
+++ b/plugins/org.eclipse.actf.ai.tts.protalker/src/messages_ja.properties
@@ -8,8 +8,8 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-tts.protalker.description=ProTalker\u8a2d\u5b9a
-tts.protalker.voice=\u97f3\u58f0\u30bf\u30a4\u30d7:
-tts.protalker.male=\u8aad\u307f\u79c0\u541b
-tts.protalker.female=\u8aad\u307f\u5b50\u3061\u3083\u3093
-tts.protalker.notAvailable=ProTalker\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
\ No newline at end of file
+tts_protalker_description=ProTalker\u8a2d\u5b9a
+tts_protalker_voice=\u97f3\u58f0\u30bf\u30a4\u30d7:
+tts_protalker_male=\u8aad\u307f\u79c0\u541b
+tts_protalker_female=\u8aad\u307f\u5b50\u3061\u3083\u3093
+tts_protalker_notAvailable=ProTalker\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/Messages.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/Messages.java
index 3e78218..9fde4c6 100644
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/Messages.java
+++ b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/Messages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
+ * Copyright (c) 2007, 2008 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 accompanies this distribution, and is available at
@@ -8,35 +8,25 @@
  * Contributors:
  *    Takashi ITOH - initial API and implementation
  *******************************************************************************/
-
 package org.eclipse.actf.ai.tts.protalker;
 
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import org.eclipse.osgi.util.NLS;
 
-/**
- * This provides the resource string.
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "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.actf.ai.tts.protalker.messages";//$NON-NLS-1$
 
 	private Messages() {
+		// Do not instantiate
 	}
 
-	/**
-	 * @param key
-	 *            the name of the resource string.
-	 * @return the string specified the key.
-	 */
-	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 tts_protalker_description;
+	public static String tts_protalker_voice;
+	public static String tts_protalker_male;
+	public static String tts_protalker_female;
+	public static String tts_protalker_notAvailable;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
 	}
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerFieldEditor.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerFieldEditor.java
index dfd3732..d7b9453 100644
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerFieldEditor.java
+++ b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerFieldEditor.java
@@ -25,7 +25,7 @@
 	private static final String SAMPLE_TEXT = "Hello. This is test."; //$NON-NLS-1$
 
 	private static final String[][] VOICE_SELECTION = new String[][] {
-			{ Messages.getString("tts.protalker.male"), "male" }, { Messages.getString("tts.protalker.female"), "female" } }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+			{ Messages.tts_protalker_male, "male" }, { Messages.tts_protalker_female, "female" } }; 
 
 	private ProTalker proTalker;
 
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferencePage.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferencePage.java
index 50d6221..5d79b96 100644
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferencePage.java
+++ b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferencePage.java
@@ -24,17 +24,17 @@
 
 	public ProTalkerPreferencePage() {
 		super();
-		setDescription(Messages.getString("tts.protalker.description")); //$NON-NLS-1$
+		setDescription(Messages.tts_protalker_description); 
 		setPreferenceStore(ProTalkerPlugin.getDefault().getPreferenceStore());
 	}
 
 	public void createFieldEditors() {
         if(!TTSRegistry.isAvailable(ProTalker.ID)){
-            setMessage(Messages.getString("tts.protalker.notAvailable"));
+            setMessage(Messages.tts_protalker_notAvailable);
             return;
         }
 
-		addField(new ProTalkerFieldEditor(Messages.getString("tts.protalker.voice"), getFieldEditorParent())); //$NON-NLS-1$
+		addField(new ProTalkerFieldEditor(Messages.tts_protalker_voice, getFieldEditorParent())); 
 	}
 
 	public void init(IWorkbench workbench) {
