i18n 支持与下一次导出不兼容。
NextJS 不使用 i18n 运行部署
我使用 nextJS 10,我选择 next 10 的主要原因是我可以做 SSR 并使用 i18n。
Internationalized Routing它是一个新的下一个 js 10 功能,并且只有该功能的页面。
但是当我要进行部署时,会出现此错误: i18n 支持与下一次导出不兼容。
在国际化路由页面中没有任何内容。
我的代码
next.config.js
const withImages = require('next-images')
const path = require('path')
module.exports = withImages({
esModule: false,
i18n: {
locales: ['en-US', 'pt-BR', 'pt-PT', 'es-ES'],
defaultLocale: 'pt-BR',
},
});
我创建了一个翻译文件,使条件与下一个路由器obs: PT 和 EN 是带有文本的 JSON 文件
import * as pt from "./pt";
import * as en from './en';
import { useRouter } from "next/router"
export const traducao = () =>{
let routes = useRouter();
let translate;
if (routes.locale == 'pt-PT' || routes.locale == 'pt-BR') {
translate = pt.default;
} else {
translate = en.default;
}
return translate
}
我只是在我的项目中像一个函数一样使用:{traducao().homeText.button_text}
运行良好,识别浏览器语言并切换。我使用部署脚本
npm run deploy
"deploy": "npm run clean && npm run build && next export -o dist/"
重现步骤预期行为
它只是假设工作正常并正常部署。
截图
系统信息
最佳答案
在 vercel 的 github 上挖掘问题,我发现了这个不使用 next-i18next 或任何其他 nextjs 魔法的替代方案:
https://github.com/Xairoo/nextjs-i18n-static-page-starter
这只是使用 i18next 将所有语言环境与 JS 捆绑在一起的基本 i18n,因此有明显的权衡,但至少它适用于 SSG。您可以在此基础上提出更精细的东西。这就是我要做的。
关于javascript - i18n 支持与下一次导出不兼容。 (SSR - NextJS 10),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65513435/