组合式函数
defineI18nLocaleDetector
defineI18nLocaleDetector() 是一个可组合的函数,用于定义在服务器端检测区域设置的函数,它在每个请求中被调用。
defineI18nLocaleDetector()
是一个可组合的函数,用于定义在服务器端检测区域设置的函数,它在每个请求中被调用。
该函数需要返回一个区域设置字符串。
您可以在区域设置检测函数中使用 @intlify/h3
工具,这些工具是自动导入的。
此可组合函数为实验性。 您需要配置文件路径到
experimental.localeDetector
选项。类型
type LocaleConfig = {
defaultLocale: Locale
fallbackLocale: FallbackLocale
}
declare function defineI18nLocaleDetector(
detector: (event: H3Event, config: LocaleConfig) => string
): (event: H3Event, config: LocaleConfig) => string
参数
detector
一个作为区域设置检测器的函数,具有以下参数:
event
- 类型:
H3Event
- 一个 H3 事件。具体见 H3 API 文档
- 类型:
config
- 类型:
object
- 从 Nitro 传递来的区域设置配置。
- 属性:
defaultLocale
- 类型:
Locale
- 此值设置为 Nuxt i18n 的
defaultLocale
选项。如果未设置,则从 Vue I18n 配置(在vueI18n
选项中设置的i18n.config
文件)加载的locale
选项设置。如果这两者都未设置,则使用默认值'en-US'
。
- 类型:
fallbackLocale
- 类型:
FallbackLocale
- 此值设置为从 Vue I18n 配置加载的
fallbackLocale
选项(在vueI18n
选项中设置的i18n.config
文件)。如果未配置后备区域设置,则默认为false
。
- 类型:
- 类型:
用法
区域设置检测器的示例:
// 根据查询参数、cookie、头检测
export default defineI18nLocaleDetector((event, config) => {
const query = tryQueryLocale(event, { lang: '' })
if (query) {
return query.toString()
}
const cookie = tryCookieLocale(event, { lang: '', name: 'i18n_locale' })
if (cookie) {
return cookie.toString()
}
const header = tryHeaderLocale(event, { lang: '' })
if (header) {
return header.toString()
}
return config.defaultLocale
})