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 f6f965f..e6df3fb 100644
--- a/src/store/modules/Operations/FirmwareStore.js
+++ b/src/store/modules/Operations/FirmwareStore.js
@@ -131,7 +131,9 @@
         })
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.t('pageFirmware.toast.errorUpdateFirmware'));
+          throw new Error(
+            i18n.global.t('pageFirmware.toast.errorUpdateFirmware'),
+          );
         });
     },
     async uploadFirmwareTFTP(fileAddress) {
@@ -146,7 +148,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 }) {
@@ -162,7 +166,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,
