[258599] Message Bundles
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) {