Next.js 使用 lingui 进行国际化
Jan-11 · 10min
相关文章
- https://dodov.dev/blog/how-to-set-up-simple-nextjs-localization (opens in a new tab)
- https://lingui.dev/tutorials/react-rsc (opens in a new tab)
实现
- Debbl/tools.aiwan.run#28 (opens in a new tab)
- https://github.com/lingui/js-lingui/tree/main/examples/nextjs-swc (opens in a new tab)
安装依赖
sh
配置 nextjs swc 插件解析 .po
文件
diff
Lingui 配置
ts
国际化
解析 message.po
文件,提供全局的 context
ts
provider
ts
全局配置
diff
路由
需要实现的效果是有两个 en
和 zh
,并且 en
路径可以隐藏,具体思路是实现两个 RootLayout (opens in a new tab)
然后在 lang 的路径里,导入对应的组件
ts
ts
主路由的默认设置为 en
,lang 路由根据 generateStaticParams
获取对应的 lang, 这里抽离的一个 getRootLayout
函数获取具体的 RootLayout
tsx
tsx
tsx
链接
添加 en
zh
后,有些路由链接可能跳转的不是当前语言的,实现了 useI18nHelper
辅助
ts
Build
添加提取命令
json
手动翻译或借助工具翻译