作者:
将此文档参考到您的 AI 助手ChatGPTClaudeDeepSeekGoogle AI modeGeminiPerplexityMistralGrok
使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商
版本历史
- "intlayer 中间件初始文档"v9.5.52026/9/19
此页面的内容已使用 AI 翻译。
查看英文原文的最新版本编辑此文档
如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。
文档的 GitHub 链接Creation:2026-09-19Last update:2026-09-19
Copy
复制文档 Markdown 到剪贴板
intlayer Remix 3 中间件文档
Remix 3 的 intlayer 中间件负责管理整个应用程序的国际化层。它基于 Web 标准(Request 和 Response)构建,处理语言环境路由(重定向和内部重写),检测请求的语言环境,将其持久化到 Cookie 和请求头中,并建立一个 AsyncLocalStorage 作用域,使下游的处理程序和组件无需逐层传递 props 即可访问翻译内容。
使用方法
在初始化 Remix 3 路由器时注册 intlayer 中间件:
src/server.ts
复制代码
复制代码到剪贴板
描述
intlayer 中间件执行以下任务:
- 字典准备: 在启动时运行
prepareIntlayer,确保所有生成的字典均已构建并可用。 - 语言环境路由: 根据配置的路由策略(
prefix_always、prefix_as_needed、no_prefix)评估请求:- 重定向: 如果用户访问
/about且应被路由到带语言环境前缀的路径(例如/fr/about),中间件将返回带有相应location和Set-Cookie标头的重定向响应。 - 内部重写: 当用户访问
/fr/about时,URL 会在内部被重写,使您的路由处理程序匹配/about,同时解析出的语言环境被记录为fr。 - 本地化 URL 别名: 遵循
intlayer.config.ts中定义的 URL 重写规则(例如将/fr/about重写为/fr/a-propos)。
- 重定向: 如果用户访问
- 语言环境解析: 根据 URL 前缀、已持久化的 Cookie、自定义请求头或
Accept-Language浏览器偏好检测当前语言环境。 - 上下文注入:
- 将
IntlayerState(locale、defaultLocale、availableLocales)以Intlayer键以及context.intlayer的形式附加到 Remix 的RequestContext上。 - 在
AsyncLocalStorage作用域(requestStorage)内运行请求的剩余部分,使useIntlayer、useDictionary和useLocale能够在处理程序、视图和组件中简洁地调用。
- 将
- 持久化: 将传出的语言环境请求头和 Cookie 附加到最终的 HTTP 响应中,以保存用户的偏好。
参数
intlayer 函数接受可选的 IntlayerMiddlewareOptions:
ts
复制代码
复制代码到剪贴板
直接访问上下文
除了使用钩子之外,您还可以直接从 Remix 请求上下文中访问解析后的 IntlayerState:
ts
复制代码
复制代码到剪贴板
