用 Paraglide 做编译期多语言
Nov 3, 2026VrmMate Team
没有 provider、没有运行时查表,消息直接编译成可摇树的函数。
Paraglide 把翻译编译成函数,没有 provider,也没有运行时查表。
心智模型
消息源是 messages/en.json 和 messages/zh.json,键是扁平的点路径。调用写成 m'landing.hero.headline',编译后是可直接摇树优化的函数。
服务端怎么拿到语言
server.ts 用 paraglideMiddleware 包裹请求,语言通过 AsyncLocalStorage 传递,所以 loader 里的 getLocale() 同样有效。
URL 怎么处理
路由本身不带语言段,router 的 rewrite 在输出时补上 /zh 前缀。内部链接保持 locale-free,用 core/i18n/navigation 的 Link,而不是裸 a 标签。
常见错误
运行时拼接键会失去摇树;只改 en 不改 zh 会静默回退。新增文案时两边一起加,是唯一可靠的做法。