为什么不用官方推荐方案
官方方案的中间件会拦截路由配置,影响 public 目录下资源的加载;它的自定义钩子还需要区分服务端组件和客户端组件,用起来很不顺手。
搭建步骤
参考 i18nexus 的教程:安装必要依赖,在 app 目录下建立 i18n 配置文件,为客户端组件提供上下文,再把 app 中的 layout 和 page 移动到语言参数路由下。
中间件与客户端 hooks
在根目录新增 middleware.ts,根据浏览器语言和当前设置把请求转发到对应的语言路由;最后封装 hooks 供客户端组件调用,形成一套覆盖服务端和客户端组件的国际化方案。