Next.js 13.4中next-intl枚举值选择功能失效求助
解决next-intl select枚举翻译失效问题
检查messages文件路径与格式
确认next-intl配置文件(如i18n.ts)中messagesPath指向的目录正确,en.json必须放在该目录下。同时检查JSON语法是否正确,比如引号、大括号是否配对,你的示例JSON结构应为:{ "message": "{gender, select, female {She} male {He} other {They}} is online." }验证国际化上下文注入
调用t函数的组件需确保已正确获取翻译函数:- App Router:在组件顶部使用
const t = useTranslations();,且父级layout.tsx已通过NextIntlClientProvider传递messages(需在server component中先加载对应语言的messages)。 - Page Router:确保页面已被
withTranslation高阶组件包裹,或通过useTranslations钩子获取翻译函数。
- App Router:在组件顶部使用
核对参数传递细节
确认调用t('message', {gender: 'female'})时,gender参数值与messages中的枚举值完全一致(区分大小写)。可先测试other分支,传入gender: 'unknown',若仍不生效,说明messages未被正确加载。检查版本兼容性
Next.js 13.4需搭配next-intl v3及以上版本,若使用旧版本可能存在兼容性问题,执行npm install next-intl@latest升级到最新稳定版。清除缓存并重启
开发环境下删除.next文件夹,重启开发服务器;生产环境重新构建项目,避免缓存导致messages未更新。
内容的提问来源于stack exchange,提问作者Gishas
相关产品推荐
相关产品推荐

