-
Hi, I was trying to update /es/index.md file ---
layout: 'home'
lang: 'es-ES'
title: 'Inicio'
---
Here {{ $frontmatter.lang }} is correct! <script lang="ts" setup>
import { onMounted } from 'vue'
import { useData } from 'vitepress'
const { frontmatter } = useData()
onMounted(() => {
let expires = new Date()
expires.setFullYear(expires.getFullYear()+1)
// But here frontmatter === undefined
document.cookie = `nf_lang=${frontmatter.lang}; expires=${expires.toUTCString()}; path=/`
})
</script> When I use the lang switcher (or a link) to go from /index.md file <script lang="ts" setup>
import { useRouter } from 'vitepress'
import { onMounted } from 'vue'
let getUserLang = () => window.navigator.language.substring(0, 2)
// nf_lang is set up during theme setup hook:
let getCookieLang = () => document.cookie.split(';').filter((setting) => setting.indexOf('nf_lang') >= 0)[0]?.split('=')[1]
let checkUserLang = (language) => {
let userLang = getUserLang()
let cookieLang = getCookieLang()
let checkLang = (lang) => (cookieLang && lang === cookieLang) ?? lang === userLang
console.log(language.some(lang => checkLang(lang)), userLang, cookieLang, language)
if (typeof language === 'string') {
return checkLang(language)
}
return language.some(lang => checkLang(lang))
}
let { go } = useRouter()
onMounted(() => {
if (checkUserLang(['es'])) {
go('/es/')
} else {
go('/en/')
}
})
</script> |
Beta Was this translation helpful? Give feedback.
Answered by
brc-dd
May 17, 2023
Replies: 1 comment 1 reply
-
|
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
isorna
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
frontmatter
is a computed ref. You need to dofrontmatter.value.lang
to get it inside script blocks.