diff --git a/storefront/app.vue b/storefront/app.vue
index 1e99eeb8..56dd9aef 100644
--- a/storefront/app.vue
+++ b/storefront/app.vue
@@ -20,7 +20,7 @@
import {useAppConfig} from "~/composables/config";
import { DEFAULT_LOCALE } from '~/config/constants';
import {useRefresh} from "~/composables/auth";
-import {useLanguages} from "~/composables/languages";
+import {useLanguages, useLocaleRedirect} from "~/composables/languages";
import {useCompanyInfo} from "~/composables/company";
import {useCategories} from "~/composables/categories";
@@ -55,6 +55,7 @@ const cookieLocale = useCookie(
const { refresh } = useRefresh();
const { getCategories } = await useCategories();
+const { isSupportedLocale } = useLocaleRedirect();
let refreshInterval: NodeJS.Timeout;
@@ -83,20 +84,32 @@ watch(locale, () => {
let stopWatcher: VoidFunction = () => {};
+if (!cookieLocale.value) {
+ cookieLocale.value = DEFAULT_LOCALE;
+ await router.push({path: switchLocalePath(cookieLocale.value)});
+}
+
+if (locale.value !== cookieLocale.value) {
+ if (isSupportedLocale(cookieLocale.value)) {
+ await router.push({
+ path: switchLocalePath(cookieLocale.value),
+ query: route.query
+ });
+ } else {
+ cookieLocale.value = DEFAULT_LOCALE
+
+ await router.push({
+ path: switchLocalePath(DEFAULT_LOCALE),
+ query: route.query
+ });
+ }
+}
+
onMounted( async () => {
refreshInterval = setInterval(async () => {
await refresh();
}, 600000);
- if (!cookieLocale.value) {
- cookieLocale.value = DEFAULT_LOCALE;
- await router.push({path: switchLocalePath(cookieLocale.value)});
- }
-
- if (locale.value !== cookieLocale.value) {
- await router.push({path: switchLocalePath(cookieLocale.value)});
- }
-
stopWatcher = watch(
() => appStore.isOverflowHidden,
(hidden) => {
diff --git a/storefront/components/base/footer/index.vue b/storefront/components/base/footer/index.vue
index 340fbbe6..53c917ea 100644
--- a/storefront/components/base/footer/index.vue
+++ b/storefront/components/base/footer/index.vue
@@ -30,14 +30,14 @@