lang
type Value = string | null | undefined
type Lang = Value | ((pageContext) => Value)'en'vike-react/vike-vue/vike-solidYou need
vike-react/vike-vue/vike-solidto be able to use this setting. If you don't usevike-{react,vue,solid}then see Withoutvike-{react,vue,solid}.
You can set the value of the <html lang> attribute by using Vike's lang setting.
// /pages/+config.js
export default {
lang: 'fr'
}// /pages/+config.ts
import type { Config } from 'vike/types'
export default {
lang: 'fr'
} satisfies ConfigYou can also dynamically set the value of lang. For example, if you want to internationalize your app:
// /pages/+lang.js
export default (pageContext) => {
return pageContext.locale
}// /pages/+lang.ts
import type { PageContextServer } from 'vike/types'
export default (pageContext: PageContextServer) => {
return pageContext.locale
}The
pageContext.localevalue is usually set by youronBeforeRoute()hook, see Guides > Internationalization (i18n).
Without vike-{react,vue,solid}
The lang setting is implemented by the UI framework Vike extension vike-react/vike-vue/vike-solid. If you don't use such extension, then you usually don't need to implement a setting like lang as you can directly set the value of the <html lang> attribute at your onRenderHtml() hook.
// /renderer/+onRenderHtml.js
import { escapeInject } from 'vike/server'
export function onRenderHtml(pageContext) {
const lang = 'fr'
return escapeInject`<!DOCTYPE html>
<html lang=${lang}>
...
</html>`
}// /renderer/+onRenderHtml.ts
import type { PageContextServer } from 'vike/types'
import { escapeInject } from 'vike/server'
export function onRenderHtml(pageContext: PageContextServer) {
const lang = "fr"
return escapeInject`<!DOCTYPE html>
<html lang=${lang}>
...
</html>`
}That said, you can also implement and replicate the lang setting described in this page, see the source code of vike-react/vike-vue/vike-solid.