diff --git a/.gitignore b/.gitignore
index 7527f52..c5e39cf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,3 +24,5 @@ logs
.env
.env.*
!.env.example
+
+.wrangler
diff --git a/app/components/chat/CommandPalette.vue b/app/components/chat/CommandPalette.vue
index 24be324..68584d7 100644
--- a/app/components/chat/CommandPalette.vue
+++ b/app/components/chat/CommandPalette.vue
@@ -15,7 +15,7 @@ const searchTerm = ref('')
const openMessageModal = ref(false)
const openClearModal = ref(false)
-const { t, locale } = useI18n()
+const { t, locale } = useI18n({ useScope: 'global' })
const { messages, submitMessage } = useChat()
const { clearMessages, messages: storeMessages } = useChatStore()
@@ -72,7 +72,7 @@ const toolTipContent = {
align: 'center',
side: 'top',
sideOffset: 0,
-}
+} as any
const router = useRouter()
function goHome() {
@@ -134,7 +134,7 @@ function isRoute(name: string): boolean {
{{ t(item.prompt) }}
diff --git a/app/components/chat/Loading.vue b/app/components/chat/Loading.vue
index 88428b6..fb59ae5 100644
--- a/app/components/chat/Loading.vue
+++ b/app/components/chat/Loading.vue
@@ -5,7 +5,7 @@ import { ChatState } from '~~/types'
const props = defineProps<{ messageId: number, fetchStates: ChatFetchState[] }>()
const currentState = ref
(props.fetchStates[0] ?? undefined)
const { setLoadingState } = useChatStore()
-const { t } = useI18n()
+const { t } = useI18n({ useScope: 'global' })
onMounted(() => {
let index = 0
diff --git a/app/components/chat/Main.vue b/app/components/chat/Main.vue
index c6ff12d..294f421 100644
--- a/app/components/chat/Main.vue
+++ b/app/components/chat/Main.vue
@@ -1,5 +1,5 @@
diff --git a/app/components/chat/MessageContainer.vue b/app/components/chat/MessageContainer.vue
index aa901eb..ca0ba95 100644
--- a/app/components/chat/MessageContainer.vue
+++ b/app/components/chat/MessageContainer.vue
@@ -8,7 +8,7 @@ const props = defineProps<{
const isArthur = computed(() => props.message.sender === ChatSender.ARTHUR)
-const { t, locale } = useI18n()
+const { t, locale } = useI18n({ useScope: 'global' })
const formatDate = computed(() => useDateFormat(props.message.createdAt, 'D MMMM YYYY, HH:mm', { locales: locale.value ?? 'en' }).value)
diff --git a/app/components/chat/MessageFromArthur.vue b/app/components/chat/MessageFromArthur.vue
index d517f3b..952a9f4 100644
--- a/app/components/chat/MessageFromArthur.vue
+++ b/app/components/chat/MessageFromArthur.vue
@@ -23,7 +23,7 @@ const props = defineProps<{
message: ChatMessage
}>()
-const { locale, t } = useI18n()
+const { locale, t } = useI18n({ useScope: 'global' })
const formatDate = computed(() => useDateFormat(props.message.createdAt, 'D MMMM YYYY, HH:mm', { locales: locale.value ?? 'en' }).value)
const componentMap: Record = {
@@ -66,9 +66,19 @@ const dynamicComponent = computed(() => componentMap[props.message.type])
-const { t, locale } = useI18n()
+const { t, locale } = useI18n({ useScope: 'global' })
diff --git a/app/components/post/Footer.vue b/app/components/post/Footer.vue
index 35cc28c..1264080 100644
--- a/app/components/post/Footer.vue
+++ b/app/components/post/Footer.vue
@@ -1,5 +1,5 @@
diff --git a/app/components/tool/Activity.vue b/app/components/tool/Activity.vue
index 966ddbe..adb1529 100644
--- a/app/components/tool/Activity.vue
+++ b/app/components/tool/Activity.vue
@@ -3,7 +3,7 @@ import type { UseTimeAgoMessages } from '@vueuse/core'
import type { Activity } from '~~/types'
import { activityMessages, IDEs } from '~~/types'
-const { locale, t } = useI18n()
+const { locale, t } = useI18n({ useScope: 'global' })
const { data: activity, refresh } = await useAsyncData('activity', () => $fetch('/api/activity'))
useIntervalFn(async () => await refresh(), 5000)
diff --git a/app/components/tool/Contact.vue b/app/components/tool/Contact.vue
index c6c61dd..29d9138 100644
--- a/app/components/tool/Contact.vue
+++ b/app/components/tool/Contact.vue
@@ -1,7 +1,7 @@
diff --git a/app/components/tool/Credits.vue b/app/components/tool/Credits.vue
index fbebe35..1fa7152 100644
--- a/app/components/tool/Credits.vue
+++ b/app/components/tool/Credits.vue
@@ -1,5 +1,5 @@
diff --git a/app/components/tool/Duplicated.vue b/app/components/tool/Duplicated.vue
index 334bf78..52e3f35 100644
--- a/app/components/tool/Duplicated.vue
+++ b/app/components/tool/Duplicated.vue
@@ -1,5 +1,5 @@
diff --git a/app/components/tool/Experiences.vue b/app/components/tool/Experiences.vue
index 11d25d5..a45a833 100644
--- a/app/components/tool/Experiences.vue
+++ b/app/components/tool/Experiences.vue
@@ -1,7 +1,7 @@
diff --git a/app/components/tool/Language.vue b/app/components/tool/Language.vue
index 6ef20da..ea96aed 100644
--- a/app/components/tool/Language.vue
+++ b/app/components/tool/Language.vue
@@ -1,7 +1,7 @@
diff --git a/app/components/tool/Projects.vue b/app/components/tool/Projects.vue
index ad5e95f..9d8223e 100644
--- a/app/components/tool/Projects.vue
+++ b/app/components/tool/Projects.vue
@@ -1,5 +1,5 @@
diff --git a/app/components/tool/Stats.vue b/app/components/tool/Stats.vue
index fb00ed4..73b26e3 100644
--- a/app/components/tool/Stats.vue
+++ b/app/components/tool/Stats.vue
@@ -3,7 +3,7 @@ import type { Stats } from '~~/types'
const { data: stats } = await useAsyncData('stats', () => $fetch('/api/stats'))
-const { locale, t } = useI18n()
+const { locale, t } = useI18n({ useScope: 'global' })
const time = useTimeAgo(new Date(stats.value!.coding.data.range.start) ?? new Date()).value.split(' ')[0]
const date = useDateFormat(new Date(stats.value!.coding.data.range.start ?? new Date()), 'DD MMMM YYYY', { locales: locale.value ?? 'en' })
diff --git a/app/components/tool/Theme.vue b/app/components/tool/Theme.vue
index 7073abd..d42194d 100644
--- a/app/components/tool/Theme.vue
+++ b/app/components/tool/Theme.vue
@@ -1,5 +1,5 @@
diff --git a/app/components/tool/Uses.vue b/app/components/tool/Uses.vue
index 031160d..4989ad2 100644
--- a/app/components/tool/Uses.vue
+++ b/app/components/tool/Uses.vue
@@ -6,7 +6,7 @@ const props = defineProps({
},
})
-const { locale } = useI18n()
+const { locale } = useI18n({ useScope: 'global' })
const { data: items } = await useAsyncData(`uses-${props.category}`, async () => await queryCollection('uses').where('category', '=', props.category).all())
const { data: categoryData } = await useAsyncData(`category-${props.category}`, async () => await queryCollection('usesCategories').where('slug', '=', props.category).first())
diff --git a/app/components/tool/Weather.vue b/app/components/tool/Weather.vue
index d2dcee6..605ebe6 100644
--- a/app/components/tool/Weather.vue
+++ b/app/components/tool/Weather.vue
@@ -1,7 +1,7 @@
diff --git a/app/components/tool/Writings.vue b/app/components/tool/Writings.vue
index 20019a5..065e24f 100644
--- a/app/components/tool/Writings.vue
+++ b/app/components/tool/Writings.vue
@@ -1,5 +1,5 @@
diff --git a/app/pages/index.vue b/app/pages/index.vue
index 6be2b6d..3525944 100644
--- a/app/pages/index.vue
+++ b/app/pages/index.vue
@@ -10,7 +10,7 @@ const { messages } = useChatStore()
const parents = useTemplateRef('parents')
const { height } = useElementBounding(parents)
-const { locale } = useI18n()
+const { locale } = useI18n({ useScope: 'global' })
const lastLang = ref(locale.value)
watch(
height,
diff --git a/app/pages/projects/[slug].vue b/app/pages/projects/[slug].vue
index 5e7726b..fe438e6 100644
--- a/app/pages/projects/[slug].vue
+++ b/app/pages/projects/[slug].vue
@@ -18,7 +18,7 @@ useSeoMeta({
author: 'Arthur Danjou',
})
-const { t } = useI18n()
+const { t } = useI18n({ useScope: 'global' })
useSeoMeta(project.value.seo || {})
diff --git a/app/pages/projects/index.vue b/app/pages/projects/index.vue
index 7b1285d..3da8042 100644
--- a/app/pages/projects/index.vue
+++ b/app/pages/projects/index.vue
@@ -1,5 +1,5 @@
diff --git a/app/pages/writings/index.vue b/app/pages/writings/index.vue
index 0542eaf..8b427c6 100644
--- a/app/pages/writings/index.vue
+++ b/app/pages/writings/index.vue
@@ -1,5 +1,5 @@