【发布时间】:2021-04-07 08:08:46
【问题描述】:
i18n 支持与下一次导出不兼容。
NextJS 不使用 i18n 运行部署
我使用 nextJS 10,我选择 nextJS 10 的主要原因是我可以做 SSR 并使用 i18n。 Internationalized Routing 它是一个新的下一个 js 10 功能,并且只有一个针对该功能的页面。
但是当我要进行部署时,会出现此错误:i18n support is not compatible with next export. 国际化路由页面中没有这方面的内容。
我的代码
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/"
重现步骤
- 转到“next.config,js”
- 创建 i18n 导出
- 创建一个可以识别浏览器语言的翻译文件
- 使用您的网站文本导入 JSON 文件
- 在你想要的地方使用
- 尝试部署
预期行为
它只是假设工作正常并且部署正常。
截图
系统信息
- 操作系统:Linux Ubuntu
- IDE:VSCode
- Next.js 版本:10
- Node.js 版本:v15.3.0
- 部署:下一次部署
【问题讨论】:
-
在 i18n 中使用 next export 的替代方法:dev.to/adrai/…
标签: javascript deployment internationalization next.js i18next