diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index 4b80328..8da54fd 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -186,14 +186,22 @@
       "webUiAccessPoint": "WebUI access point"
     },
     "toast": {
-      "errorDeleteUsers": "Error deleting %{count} user. | Error deleting %{count} users.",
-      "errorDisableUsers": "Error disabling %{count} user. | Error disabling %{count} users.",
-      "errorEnableUsers": "Error enabling %{count} user. | Error enabling %{count} users.",
+      "errorBatchDelete": "Error deleting %{count} user. | Error deleting %{count} users.",
+      "errorBatchDisable": "Error disabling %{count} user. | Error disabling %{count} users.",
+      "errorBatchEnable": "Error enabling %{count} user. | Error enabling %{count} users.",
+      "errorCreateUser": "Error creating user '%{username}'.",
+      "errorDeleteUser": "Error deleting user '%{username}'.",
+      "errorLoadAccountSettings": "Error loading account settings",
+      "errorLoadUsers": "Error loading users.",
       "errorSaveSettings": "Error saving account settings.",
-      "successDeleteUsers": "Successfully deleted %{count} user. | Successfully deleted %{count} users.",
-      "successDisableUsers": "Successfully disabled %{count} user. | Successfully disabled %{count} users.",
-      "successEnableUsers": "Successfully enabled %{count} user. | Successfully enabled %{count} users.",
-      "successSaveSettings": "Successfully saved account settings."
+      "errorUpdateUser": "Error updating user '%{username}'.",
+      "successBatchDelete": "Successfully deleted %{count} user. | Successfully deleted %{count} users.",
+      "successBatchDisable": "Successfully disabled %{count} user. | Successfully disabled %{count} users.",
+      "successBatchEnable": "Successfully enabled %{count} user. | Successfully enabled %{count} users.",
+      "successCreateUser": "Created user '%{username}'.",
+      "successDeleteUser": "Deleted user '%{username}'.",
+      "successSaveSettings": "Successfully saved account settings.",
+      "successUpdateUser": "Updated user '%{username}'."
     }
   },
   "pageLogin": {
diff --git a/src/store/modules/AccessControl/LocalUserMangementStore.js b/src/store/modules/AccessControl/LocalUserMangementStore.js
index 113b420..161ba1f 100644
--- a/src/store/modules/AccessControl/LocalUserMangementStore.js
+++ b/src/store/modules/AccessControl/LocalUserMangementStore.js
@@ -78,7 +78,10 @@
         })
         .catch(error => {
           console.log(error);
-          throw new Error('Error loading local users.');
+          const message = i18n.t(
+            'pageLocalUserManagement.toast.errorLoadUsers'
+          );
+          throw new Error(message);
         });
     },
     getAccountSettings({ commit }) {
@@ -92,7 +95,10 @@
         })
         .catch(error => {
           console.log(error);
-          throw new Error('Error loading account settings.');
+          const message = i18n.t(
+            'pageLocalUserManagement.toast.errorLoadAccountSettings'
+          );
+          throw new Error(message);
         });
     },
     getAccountRoles({ commit }) {
@@ -116,10 +122,18 @@
       return await api
         .post('/redfish/v1/AccountService/Accounts', data)
         .then(() => dispatch('getUsers'))
-        .then(() => `Created user '${username}'.`)
+        .then(() =>
+          i18n.t('pageLocalUserManagement.toast.successCreateUser', {
+            username
+          })
+        )
         .catch(error => {
           console.log(error);
-          throw new Error(`Error creating user '${username}'.`);
+          const message = i18n.t(
+            'pageLocalUserManagement.toast.errorCreateUser',
+            { username }
+          );
+          throw new Error(message);
         });
     },
     async updateUser(
@@ -135,20 +149,36 @@
       return await api
         .patch(`/redfish/v1/AccountService/Accounts/${originalUsername}`, data)
         .then(() => dispatch('getUsers'))
-        .then(() => `Updated user '${originalUsername}'.`)
+        .then(() =>
+          i18n.t('pageLocalUserManagement.toast.successUpdateUser', {
+            username: originalUsername
+          })
+        )
         .catch(error => {
           console.log(error);
-          throw new Error(`Error updating user '${originalUsername}'.`);
+          const message = i18n.t(
+            'pageLocalUserManagement.toast.errorUpdateUser',
+            { username: originalUsername }
+          );
+          throw new Error(message);
         });
     },
     async deleteUser({ dispatch }, username) {
       return await api
         .delete(`/redfish/v1/AccountService/Accounts/${username}`)
         .then(() => dispatch('getUsers'))
-        .then(() => `Deleted user '${username}'.`)
+        .then(() =>
+          i18n.t('pageLocalUserManagement.toast.successDeleteUser', {
+            username
+          })
+        )
         .catch(error => {
           console.log(error);
-          throw new Error(`Error deleting user '${username}'.`);
+          const message = i18n.t(
+            'pageLocalUserManagement.toast.errorDeleteUser',
+            { username }
+          );
+          throw new Error(message);
         });
     },
     async deleteUsers({ dispatch }, users) {
@@ -173,7 +203,7 @@
 
             if (successCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.successDeleteUsers',
+                'pageLocalUserManagement.toast.successBatchDelete',
                 successCount
               );
               toastMessages.push({ type: 'success', message });
@@ -181,7 +211,7 @@
 
             if (errorCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.errorDeleteUsers',
+                'pageLocalUserManagement.toast.errorBatchDelete',
                 errorCount
               );
               toastMessages.push({ type: 'error', message });
@@ -216,7 +246,7 @@
 
             if (successCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.successEnableUsers',
+                'pageLocalUserManagement.toast.successBatchEnable',
                 successCount
               );
               toastMessages.push({ type: 'success', message });
@@ -224,7 +254,7 @@
 
             if (errorCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.errorEnableUsers',
+                'pageLocalUserManagement.toast.errorBatchEnable',
                 errorCount
               );
               toastMessages.push({ type: 'error', message });
@@ -259,7 +289,7 @@
 
             if (successCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.successDisableUsers',
+                'pageLocalUserManagement.toast.successBatchDisable',
                 successCount
               );
               toastMessages.push({ type: 'success', message });
@@ -267,7 +297,7 @@
 
             if (errorCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.errorDisableUsers',
+                'pageLocalUserManagement.toast.errorBatchDisable',
                 errorCount
               );
               toastMessages.push({ type: 'error', message });
