Creation:2026-09-19Last update:2026-09-19
将此文档参考到您的 AI 助手ChatGPTClaudeDeepSeekGoogle AI modeGeminiPerplexityMistralGrok
使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商
版本历史
- "初始文档"v9.5.52026/9/19
此页面的内容已使用 AI 翻译。
查看英文原文的最新版本编辑此文档
如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。
文档的 GitHub 链接Copy
复制文档 Markdown 到剪贴板
onRequest Astro 中间件文档
astro-intlayer/middleware 中的 onRequest 中间件解析每个传入 HTTP 请求的语言环境,并填充 Astro.locals.intlayer。
当你在 astro.config.mjs 中注册 intlayer() 集成时,会自动注入此中间件。只有在使用 sequence(...) 手动组合 Astro 中间件时,才需要直接导入它。
使用方法
src/middleware.ts
复制代码
复制代码到剪贴板
说明
该中间件执行以下任务:
- 语言环境检测:
- URL:分析 URL 路径前缀或
?locale=查询参数(除非routing.mode设置为no-prefix)。 - Cookie / 请求头:检查持久化的语言环境 Cookie 或自定义标头值。
- Accept-Language:回退到浏览器的首选语言协商。
- 对于预渲染页面(
context.isPrerendered),严格从 URL 中提取语言环境,以防止 Astro 构建警告。
- URL:分析 URL 路径前缀或
- 上下文填充:使用以下内容填充
Astro.locals.intlayer:locale:解析出的语言环境。defaultLocale:默认回退语言环境。availableLocales:配置的语言环境数组。
- AsyncLocalStorage 作用域:将下游请求处理包装在
AsyncLocalStorage作用域内,允许useIntlayer()、useDictionary()和useLocale()无需显式传递参数即可访问请求状态。
IntlayerLocals 类型
ts
复制代码
复制代码到剪贴板
