【问题标题】:i18n support is not compatible with next export. (SSR - NextJS 10)i18n 支持与下一次导出不兼容。 (SSR - NextJS 10)
【发布时间】: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/"

重现步骤

  1. 转到“next.config,js”
  2. 创建 i18n 导出
  3. 创建一个可以识别浏览器语言的翻译文件
  4. 使用您的网站文本导入 JSON 文件
  5. 在你想要的地方使用
  6. 尝试部署

预期行为

它只是假设工作正常并且部署正常。

截图

系统信息

  • 操作系统:Linux Ubuntu
  • IDE:VSCode
  • Next.js 版本:10
  • Node.js 版本:v15.3.0
  • 部署:下一次部署

【问题讨论】:

标签: javascript deployment internationalization next.js i18next


【解决方案1】:

在 vercel 的 github 上挖掘问题,我发现了这个不使用 next-i18next 或任何其他 nextjs 魔法的替代方案:

https://github.com/Xairoo/nextjs-i18n-static-page-starter

它只是使用 i18next 的基本 i18n,将所有语言环境与 JS 捆绑在一起,因此有明显的权衡,但至少它适用于 SSG。您可以在此基础上提出更精细的东西。这就是我要做的。

【讨论】:

    【解决方案2】:

    您不能在 next.js i18n 实现中使用 export

    请注意,国际化路由不与下一个导出集成,因为下一个导出不利用 Next.js 路由层。完全支持不使用下一个导出的混合 Next.js 应用程序。

    Next.js docs

    【讨论】:

    • 我可以做些什么来部署?我只需输入 npm run deploy ,该脚本已经进入下一个项目。
    • 我只需要 SSR 运行良好且性能良好。我使用 NEXTJS 来处理 SEO。我需要 SSG
    • 你在哪里部署? export 功能旨在在没有服务器的情况下工作,因此您不能拥有服务器端呈现的页面。你得到的只是静态 HTML。
    • 但我总是使用导出来部署我的下一个 SSR 站点。 "deploy": "npm run clean && npm run build && next export -o dist/"
    • 并且工作正常,当我尝试使用 i18n 进行部署时才出现该错误
    猜你喜欢
    • 2019-12-08
    • 2022-10-14
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    相关资源
    最近更新 更多