61 lines
No EOL
1.1 KiB
Vue
61 lines
No EOL
1.1 KiB
Vue
<script setup lang="ts">
|
|
const { locale, setLocale, t } = useI18n({ useScope: 'global' })
|
|
|
|
import { useRecaptchaProvider } from 'vue-recaptcha'
|
|
useRecaptchaProvider()
|
|
|
|
const currentLang = computed(() => {
|
|
return locale.value === 'de' ? 'de' : 'en'
|
|
})
|
|
const {
|
|
cookiesEnabledIds,
|
|
} = useCookieControl()
|
|
watch(
|
|
() => cookiesEnabledIds.value,
|
|
(current, previous) => {
|
|
if (
|
|
!previous?.includes('google-analytics') &&
|
|
current?.includes('google-analytics')
|
|
) {
|
|
window.location.reload()
|
|
}
|
|
},
|
|
{ deep: true },
|
|
)
|
|
|
|
const cookieLang = useCookie('i18n_redirected')
|
|
|
|
onMounted(() => {
|
|
if (cookieLang.value && cookieLang.value !== locale.value) {
|
|
setLocale(cookieLang.value)
|
|
}
|
|
})
|
|
|
|
|
|
</script>
|
|
|
|
<template>
|
|
<NuxtLayout>
|
|
<NuxtPage>
|
|
</NuxtPage>
|
|
<CookieControl :locale="currentLang">
|
|
<template #modal>
|
|
<h2>{{ t('cookies.title') }}</h2>
|
|
<p>{{ t('cookies.des') }}</p>
|
|
</template>
|
|
</CookieControl>
|
|
</NuxtLayout>
|
|
</template>
|
|
|
|
<style lang="scss">
|
|
.page-enter-active,
|
|
.page-leave-active {
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
.page-enter-from,
|
|
.page-leave-to {
|
|
opacity: 0;
|
|
filter: blur(1rem);
|
|
}
|
|
</style> |