diff --git a/src/store/modules/Operations/BootSettingsStore.js b/src/store/modules/Operations/BootSettingsStore.js
index 8959845..9740da7 100644
--- a/src/store/modules/Operations/BootSettingsStore.js
+++ b/src/store/modules/Operations/BootSettingsStore.js
@@ -123,13 +123,15 @@
 
       return await api.all(promises).then(
         api.spread((...responses) => {
-          let message = i18n.t(
+          let message = i18n.global.t(
             'pageServerPowerOperations.toast.successSaveSettings',
           );
           responses.forEach((response) => {
             if (response instanceof Error) {
               throw new Error(
-                i18n.t('pageServerPowerOperations.toast.errorSaveSettings'),
+                i18n.global.t(
+                  'pageServerPowerOperations.toast.errorSaveSettings',
+                ),
               );
             }
           });
diff --git a/src/store/modules/Operations/ControlStore.js b/src/store/modules/Operations/ControlStore.js
index 320df6f..82ab249 100644
--- a/src/store/modules/Operations/ControlStore.js
+++ b/src/store/modules/Operations/ControlStore.js
@@ -78,10 +78,12 @@
           `${await this.dispatch('global/getBmcPath')}/Actions/Manager.Reset`,
           data,
         )
-        .then(() => i18n.t('pageRebootBmc.toast.successRebootStart'))
+        .then(() => i18n.global.t('pageRebootBmc.toast.successRebootStart'))
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pageRebootBmc.toast.errorRebootStart'));
+          throw new Error(
+            i18n.global.t('pageRebootBmc.toast.errorRebootStart'),
+          );
         });
     },
     async serverPowerOn({ dispatch, commit }) {
diff --git a/src/store/modules/Operations/FactoryResetStore.js b/src/store/modules/Operations/FactoryResetStore.js
index 84a8f08..ea8a8d0 100644
--- a/src/store/modules/Operations/FactoryResetStore.js
+++ b/src/store/modules/Operations/FactoryResetStore.js
@@ -12,11 +12,13 @@
             ResetType: 'ResetAll',
           },
         )
-        .then(() => i18n.t('pageFactoryReset.toast.resetToDefaultsSuccess'))
+        .then(() =>
+          i18n.global.t('pageFactoryReset.toast.resetToDefaultsSuccess'),
+        )
         .catch((error) => {
           console.log('Factory Reset: ', error);
           throw new Error(
-            i18n.t('pageFactoryReset.toast.resetToDefaultsError'),
+            i18n.global.t('pageFactoryReset.toast.resetToDefaultsError'),
           );
         });
     },
@@ -25,10 +27,12 @@
         .post(
           `${await this.dispatch('global/getSystemPath')}/Bios/Actions/Bios.ResetBios`,
         )
-        .then(() => i18n.t('pageFactoryReset.toast.resetBiosSuccess'))
+        .then(() => i18n.global.t('pageFactoryReset.toast.resetBiosSuccess'))
         .catch((error) => {
           console.log('Factory Reset: ', error);
-          throw new Error(i18n.t('pageFactoryReset.toast.resetBiosError'));
+          throw new Error(
+            i18n.global.t('pageFactoryReset.toast.resetBiosError'),
+          );
         });
     },
   },
diff --git a/src/store/modules/Operations/FirmwareStore.js b/src/store/modules/Operations/FirmwareStore.js
index 64bd640..78d3b91 100644
--- a/src/store/modules/Operations/FirmwareStore.js
+++ b/src/store/modules/Operations/FirmwareStore.js
@@ -134,7 +134,9 @@
         })
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pageFirmware.toast.errorUpdateFirmware'));
+          throw new Error(
+            i18n.global.t('pageFirmware.toast.errorUpdateFirmware'),
+          );
         });
     },
     async uploadFirmwareMultipartHttpPush({ state }, { image, targets }) {
@@ -155,7 +157,9 @@
         })
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pageFirmware.toast.errorUpdateFirmware'));
+          throw new Error(
+            i18n.global.t('pageFirmware.toast.errorUpdateFirmware'),
+          );
         });
     },
     async switchBmcFirmwareAndReboot({ getters }) {
@@ -171,7 +175,9 @@
         .patch(`${await this.dispatch('global/getBmcPath')}`, data)
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pageFirmware.toast.errorSwitchImages'));
+          throw new Error(
+            i18n.global.t('pageFirmware.toast.errorSwitchImages'),
+          );
         });
     },
   },
diff --git a/src/store/modules/Operations/KeyClearStore.js b/src/store/modules/Operations/KeyClearStore.js
index 9e5e875..e812ab2 100644
--- a/src/store/modules/Operations/KeyClearStore.js
+++ b/src/store/modules/Operations/KeyClearStore.js
@@ -13,10 +13,14 @@
           `${await this.dispatch('global/getSystemPath')}/Bios/Settings`,
           selectedKeyForClearing,
         )
-        .then(() => i18n.t('pageKeyClear.toast.selectedKeyClearedSuccess'))
+        .then(() =>
+          i18n.global.t('pageKeyClear.toast.selectedKeyClearedSuccess'),
+        )
         .catch((error) => {
           console.log('Key clear', error);
-          throw new Error(i18n.t('pageKeyClear.toast.selectedKeyClearedError'));
+          throw new Error(
+            i18n.global.t('pageKeyClear.toast.selectedKeyClearedError'),
+          );
         });
     },
   },
diff --git a/src/store/modules/Operations/VirtualMediaStore.js b/src/store/modules/Operations/VirtualMediaStore.js
index 9688d9c..8561275 100644
--- a/src/store/modules/Operations/VirtualMediaStore.js
+++ b/src/store/modules/Operations/VirtualMediaStore.js
@@ -38,7 +38,7 @@
           : false;
       if (!virtualMediaListEnabled) {
         const device = {
-          id: i18n.t('pageVirtualMedia.defaultDeviceName'),
+          id: i18n.global.t('pageVirtualMedia.defaultDeviceName'),
           websocket: '/vm/0/0',
           file: null,
           transferProtocolType: transferProtocolType.OEM,
