diff --git a/src/store/modules/SecurityAndAccess/CertificatesStore.js b/src/store/modules/SecurityAndAccess/CertificatesStore.js
index 5c7c36d..304c370 100644
--- a/src/store/modules/SecurityAndAccess/CertificatesStore.js
+++ b/src/store/modules/SecurityAndAccess/CertificatesStore.js
@@ -39,12 +39,12 @@
           location: `${await this.dispatch(
             'global/getBmcPath',
           )}/NetworkProtocol/HTTPS/Certificates/`,
-          label: i18n.t('pageCertificates.httpsCertificate'),
+          label: i18n.global.t('pageCertificates.httpsCertificate'),
         },
         {
           type: 'LDAP Certificate',
           location: '/redfish/v1/AccountService/LDAP/Certificates/',
-          label: i18n.t('pageCertificates.ldapCertificate'),
+          label: i18n.global.t('pageCertificates.ldapCertificate'),
         },
         {
           type: 'TrustStore Certificate',
@@ -54,7 +54,7 @@
           // Web UI will show 'CA Certificate' instead of
           // 'TrustStore Certificate' after user testing revealed
           // the term 'TrustStore Certificate' wasn't recognized/was unfamilar
-          label: i18n.t('pageCertificates.caCertificate'),
+          label: i18n.global.t('pageCertificates.caCertificate'),
         },
       ];
       await commit('setCertificateTypes', certificateTypes);
@@ -122,7 +122,7 @@
         )
         .then(() => dispatch('getCertificates'))
         .then(() =>
-          i18n.t('pageCertificates.toast.successAddCertificate', {
+          i18n.global.t('pageCertificates.toast.successAddCertificate', {
             certificate: getCertificateProp(
               getters['certificateTypes'],
               type,
@@ -132,7 +132,9 @@
         )
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pageCertificates.toast.errorAddCertificate'));
+          throw new Error(
+            i18n.global.t('pageCertificates.toast.errorAddCertificate'),
+          );
         });
     },
     async replaceCertificate(
@@ -151,7 +153,7 @@
         )
         .then(() => dispatch('getCertificates'))
         .then(() =>
-          i18n.t('pageCertificates.toast.successReplaceCertificate', {
+          i18n.global.t('pageCertificates.toast.successReplaceCertificate', {
             certificate: getCertificateProp(
               getters['certificateTypes'],
               type,
@@ -162,7 +164,7 @@
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.t('pageCertificates.toast.errorReplaceCertificate'),
+            i18n.global.t('pageCertificates.toast.errorReplaceCertificate'),
           );
         });
     },
@@ -171,7 +173,7 @@
         .delete(location)
         .then(() => dispatch('getCertificates'))
         .then(() =>
-          i18n.t('pageCertificates.toast.successDeleteCertificate', {
+          i18n.global.t('pageCertificates.toast.successDeleteCertificate', {
             certificate: getCertificateProp(
               getters['certificateTypes'],
               type,
@@ -182,7 +184,7 @@
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.t('pageCertificates.toast.errorDeleteCertificate'),
+            i18n.global.t('pageCertificates.toast.errorDeleteCertificate'),
           );
         });
     },
diff --git a/src/store/modules/SecurityAndAccess/LdapStore.js b/src/store/modules/SecurityAndAccess/LdapStore.js
index edb063c..a8114f7 100644
--- a/src/store/modules/SecurityAndAccess/LdapStore.js
+++ b/src/store/modules/SecurityAndAccess/LdapStore.js
@@ -116,10 +116,12 @@
       return await api
         .patch('/redfish/v1/AccountService', data)
         .then(() => dispatch('getAccountSettings'))
-        .then(() => i18n.t('pageLdap.toast.successSaveLdapSettings'))
+        .then(() => i18n.global.t('pageLdap.toast.successSaveLdapSettings'))
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pageLdap.toast.errorSaveLdapSettings'));
+          throw new Error(
+            i18n.global.t('pageLdap.toast.errorSaveLdapSettings'),
+          );
         });
     },
     async saveActiveDirectorySettings({ state, dispatch }, properties) {
@@ -133,11 +135,13 @@
       return await api
         .patch('/redfish/v1/AccountService', data)
         .then(() => dispatch('getAccountSettings'))
-        .then(() => i18n.t('pageLdap.toast.successSaveActiveDirectorySettings'))
+        .then(() =>
+          i18n.global.t('pageLdap.toast.successSaveActiveDirectorySettings'),
+        )
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.t('pageLdap.toast.errorSaveActiveDirectorySettings'),
+            i18n.global.t('pageLdap.toast.errorSaveActiveDirectorySettings'),
           );
         });
     },
@@ -201,13 +205,13 @@
         .patch('/redfish/v1/AccountService', data)
         .then(() => dispatch('getAccountSettings'))
         .then(() =>
-          i18n.t('pageLdap.toast.successAddRoleGroup', {
+          i18n.global.t('pageLdap.toast.successAddRoleGroup', {
             groupName,
           }),
         )
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pageLdap.toast.errorAddRoleGroup'));
+          throw new Error(i18n.global.t('pageLdap.toast.errorAddRoleGroup'));
         });
     },
     async saveRoleGroup({ dispatch, getters }, { groupName, groupPrivilege }) {
@@ -233,11 +237,11 @@
         .patch('/redfish/v1/AccountService', data)
         .then(() => dispatch('getAccountSettings'))
         .then(() =>
-          i18n.t('pageLdap.toast.successSaveRoleGroup', { groupName }),
+          i18n.global.t('pageLdap.toast.successSaveRoleGroup', { groupName }),
         )
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pageLdap.toast.errorSaveRoleGroup'));
+          throw new Error(i18n.global.t('pageLdap.toast.errorSaveRoleGroup'));
         });
     },
     async deleteRoleGroup({ dispatch, getters }, { roleGroups = [] }) {
@@ -260,12 +264,18 @@
         .patch('/redfish/v1/AccountService', data)
         .then(() => dispatch('getAccountSettings'))
         .then(() =>
-          i18n.tc('pageLdap.toast.successDeleteRoleGroup', roleGroups.length),
+          i18n.global.t(
+            'pageLdap.toast.successDeleteRoleGroup',
+            roleGroups.length,
+          ),
         )
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.tc('pageLdap.toast.errorDeleteRoleGroup', roleGroups.length),
+            i18n.global.t(
+              'pageLdap.toast.errorDeleteRoleGroup',
+              roleGroups.length,
+            ),
           );
         });
     },
diff --git a/src/store/modules/SecurityAndAccess/PoliciesStore.js b/src/store/modules/SecurityAndAccess/PoliciesStore.js
index f1e98b2..88ff151 100644
--- a/src/store/modules/SecurityAndAccess/PoliciesStore.js
+++ b/src/store/modules/SecurityAndAccess/PoliciesStore.js
@@ -72,18 +72,22 @@
         )
         .then(() => {
           if (protocolEnabled) {
-            return i18n.t('pagePolicies.toast.successIpmiEnabled');
+            return i18n.global.t('pagePolicies.toast.successIpmiEnabled');
           } else {
-            return i18n.t('pagePolicies.toast.successIpmiDisabled');
+            return i18n.global.t('pagePolicies.toast.successIpmiDisabled');
           }
         })
         .catch((error) => {
           console.log(error);
           commit('setIpmiProtocolEnabled', !protocolEnabled);
           if (protocolEnabled) {
-            throw new Error(i18n.t('pagePolicies.toast.errorIpmiEnabled'));
+            throw new Error(
+              i18n.global.t('pagePolicies.toast.errorIpmiEnabled'),
+            );
           } else {
-            throw new Error(i18n.t('pagePolicies.toast.errorIpmiDisabled'));
+            throw new Error(
+              i18n.global.t('pagePolicies.toast.errorIpmiDisabled'),
+            );
           }
         });
     },
@@ -101,18 +105,22 @@
         )
         .then(() => {
           if (protocolEnabled) {
-            return i18n.t('pagePolicies.toast.successSshEnabled');
+            return i18n.global.t('pagePolicies.toast.successSshEnabled');
           } else {
-            return i18n.t('pagePolicies.toast.successSshDisabled');
+            return i18n.global.t('pagePolicies.toast.successSshDisabled');
           }
         })
         .catch((error) => {
           console.log(error);
           commit('setSshProtocolEnabled', !protocolEnabled);
           if (protocolEnabled) {
-            throw new Error(i18n.t('pagePolicies.toast.errorSshEnabled'));
+            throw new Error(
+              i18n.global.t('pagePolicies.toast.errorSshEnabled'),
+            );
           } else {
-            throw new Error(i18n.t('pagePolicies.toast.errorSshDisabled'));
+            throw new Error(
+              i18n.global.t('pagePolicies.toast.errorSshDisabled'),
+            );
           }
         });
     },
@@ -126,17 +134,21 @@
         })
         .then(() => {
           if (updatedRtad === 'Enabled') {
-            return i18n.t('pagePolicies.toast.successRtadEnabled');
+            return i18n.global.t('pagePolicies.toast.successRtadEnabled');
           } else {
-            return i18n.t('pagePolicies.toast.successRtadDisabled');
+            return i18n.global.t('pagePolicies.toast.successRtadDisabled');
           }
         })
         .catch((error) => {
           console.log(error);
           if (updatedRtad === 'Enabled') {
-            throw new Error(i18n.t('pagePolicies.toast.errorRtadEnabled'));
+            throw new Error(
+              i18n.global.t('pagePolicies.toast.errorRtadEnabled'),
+            );
           } else {
-            throw new Error(i18n.t('pagePolicies.toast.errorRtadDisabled'));
+            throw new Error(
+              i18n.global.t('pagePolicies.toast.errorRtadDisabled'),
+            );
           }
         });
     },
@@ -150,17 +162,21 @@
         })
         .then(() => {
           if (updatedVtpm === 'Enabled') {
-            return i18n.t('pagePolicies.toast.successVtpmEnabled');
+            return i18n.global.t('pagePolicies.toast.successVtpmEnabled');
           } else {
-            return i18n.t('pagePolicies.toast.successVtpmDisabled');
+            return i18n.global.t('pagePolicies.toast.successVtpmDisabled');
           }
         })
         .catch((error) => {
           console.log(error);
           if (updatedVtpm === 'Enabled') {
-            throw new Error(i18n.t('pagePolicies.toast.errorVtpmEnabled'));
+            throw new Error(
+              i18n.global.t('pagePolicies.toast.errorVtpmEnabled'),
+            );
           } else {
-            throw new Error(i18n.t('pagePolicies.toast.errorVtpmDisabled'));
+            throw new Error(
+              i18n.global.t('pagePolicies.toast.errorVtpmDisabled'),
+            );
           }
         });
     },
@@ -172,11 +188,13 @@
         .patch('/redfish/v1/SessionService', sessionValue)
         .then(() => dispatch('getSessionTimeout'))
         .then(() => {
-          return i18n.t('pagePolicies.toast.successSessionTimeout');
+          return i18n.global.t('pagePolicies.toast.successSessionTimeout');
         })
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pagePolicies.toast.errorSessionTimeout'));
+          throw new Error(
+            i18n.global.t('pagePolicies.toast.errorSessionTimeout'),
+          );
         });
     },
   },
diff --git a/src/store/modules/SecurityAndAccess/SessionsStore.js b/src/store/modules/SecurityAndAccess/SessionsStore.js
index e567c52..98e876c 100644
--- a/src/store/modules/SecurityAndAccess/SessionsStore.js
+++ b/src/store/modules/SecurityAndAccess/SessionsStore.js
@@ -60,7 +60,7 @@
             const toastMessages = [];
 
             if (successCount) {
-              const message = i18n.tc(
+              const message = i18n.global.t(
                 'pageSessions.toast.successDelete',
                 successCount,
               );
@@ -68,7 +68,7 @@
             }
 
             if (errorCount) {
-              const message = i18n.tc(
+              const message = i18n.global.t(
                 'pageSessions.toast.errorDelete',
                 errorCount,
               );
diff --git a/src/store/modules/SecurityAndAccess/UserManagementStore.js b/src/store/modules/SecurityAndAccess/UserManagementStore.js
index 5036158..b1860d1 100644
--- a/src/store/modules/SecurityAndAccess/UserManagementStore.js
+++ b/src/store/modules/SecurityAndAccess/UserManagementStore.js
@@ -78,7 +78,9 @@
         })
         .catch((error) => {
           console.log(error);
-          const message = i18n.t('pageUserManagement.toast.errorLoadUsers');
+          const message = i18n.global.t(
+            'pageUserManagement.toast.errorLoadUsers',
+          );
           throw new Error(message);
         });
     },
@@ -93,7 +95,7 @@
         })
         .catch((error) => {
           console.log(error);
-          const message = i18n.t(
+          const message = i18n.global.t(
             'pageUserManagement.toast.errorLoadAccountSettings',
           );
           throw new Error(message);
@@ -121,7 +123,7 @@
         .post('/redfish/v1/AccountService/Accounts', data)
         .then(() => dispatch('getUsers'))
         .then(() =>
-          i18n.t('pageUserManagement.toast.successCreateUser', {
+          i18n.global.t('pageUserManagement.toast.successCreateUser', {
             username,
           }),
         )
@@ -130,7 +132,7 @@
           let message =
             serverMessages.length > 0
               ? serverMessages.join(' ')
-              : i18n.t('pageUserManagement.toast.errorCreateUser', {
+              : i18n.global.t('pageUserManagement.toast.errorCreateUser', {
                   username: username,
                 });
           throw new Error(message);
@@ -150,7 +152,7 @@
         .patch(`/redfish/v1/AccountService/Accounts/${originalUsername}`, data)
         .then(() => dispatch('getUsers'))
         .then(() =>
-          i18n.t('pageUserManagement.toast.successUpdateUser', {
+          i18n.global.t('pageUserManagement.toast.successUpdateUser', {
             username: originalUsername,
           }),
         )
@@ -160,7 +162,7 @@
           const message =
             serverMessages.length > 0
               ? serverMessages.join(' ')
-              : i18n.t('pageUserManagement.toast.errorUpdateUser', {
+              : i18n.global.t('pageUserManagement.toast.errorUpdateUser', {
                   username: originalUsername,
                 });
           throw new Error(message);
@@ -171,15 +173,18 @@
         .delete(`/redfish/v1/AccountService/Accounts/${username}`)
         .then(() => dispatch('getUsers'))
         .then(() =>
-          i18n.t('pageUserManagement.toast.successDeleteUser', {
+          i18n.global.t('pageUserManagement.toast.successDeleteUser', {
             username,
           }),
         )
         .catch((error) => {
           console.log(error);
-          const message = i18n.t('pageUserManagement.toast.errorDeleteUser', {
-            username,
-          });
+          const message = i18n.global.t(
+            'pageUserManagement.toast.errorDeleteUser',
+            {
+              username,
+            },
+          );
           throw new Error(message);
         });
     },
@@ -204,7 +209,7 @@
             let toastMessages = [];
 
             if (successCount) {
-              const message = i18n.tc(
+              const message = i18n.global.t(
                 'pageUserManagement.toast.successBatchDelete',
                 successCount,
               );
@@ -212,7 +217,7 @@
             }
 
             if (errorCount) {
-              const message = i18n.tc(
+              const message = i18n.global.t(
                 'pageUserManagement.toast.errorBatchDelete',
                 errorCount,
               );
@@ -247,7 +252,7 @@
             let toastMessages = [];
 
             if (successCount) {
-              const message = i18n.tc(
+              const message = i18n.global.t(
                 'pageUserManagement.toast.successBatchEnable',
                 successCount,
               );
@@ -255,7 +260,7 @@
             }
 
             if (errorCount) {
-              const message = i18n.tc(
+              const message = i18n.global.t(
                 'pageUserManagement.toast.errorBatchEnable',
                 errorCount,
               );
@@ -290,7 +295,7 @@
             let toastMessages = [];
 
             if (successCount) {
-              const message = i18n.tc(
+              const message = i18n.global.t(
                 'pageUserManagement.toast.successBatchDisable',
                 successCount,
               );
@@ -298,7 +303,7 @@
             }
 
             if (errorCount) {
-              const message = i18n.tc(
+              const message = i18n.global.t(
                 'pageUserManagement.toast.errorBatchDisable',
                 errorCount,
               );
@@ -325,10 +330,14 @@
         .patch('/redfish/v1/AccountService', data)
         //GET new settings to update view
         .then(() => dispatch('getAccountSettings'))
-        .then(() => i18n.t('pageUserManagement.toast.successSaveSettings'))
+        .then(() =>
+          i18n.global.t('pageUserManagement.toast.successSaveSettings'),
+        )
         .catch((error) => {
           console.log(error);
-          const message = i18n.t('pageUserManagement.toast.errorSaveSettings');
+          const message = i18n.global.t(
+            'pageUserManagement.toast.errorSaveSettings',
+          );
           throw new Error(message);
         });
     },
