无法使用getServerSideProps和next-i18 next在生产环境中加载翻译

0x6upsns  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(129)

在Next.js中,我使用next-i18next包进行翻译。
我所有的翻译工作正常,当我有一个页面与getServerSideProps它在我的本地开发服务器上工作,但当我把它推到生产与Vercel的页面上的翻译不工作。在页面上,我使用getStaticProps它的工作。
FYI:我在Next.js中使用页面路由器。
这是我的getServerSideProps函数:

export async function getServerSideProps({ query, locale }) {
  const directus = await getDirectusClient()
  const { id } = query;
  const quote = await directus.items("Quotes").readOne(id, {
    fields: ["*.*"],
  });

  if (!quote) {
    return {
      notFound: true,
    };
  }

  return {
    props: {
      quote,
      ...(await serverSideTranslations(locale, ["common", "nav", "portal", "footer", "configurations"])),
    },
  };
}

字符串
这就是我如何调用组件中的转换

const { t } = useTranslation(["portal", "configurations", "common"]);


翻译:<p>{ t('quote details') }</p>
有没有人认识到这个问题并知道如何解决它?
我在另一个与getStaticProps一起工作的组件上尝试了它,并将其更改为getServerSideProps。我想知道这是否是组件的问题,但在它不工作之前正在工作的组件上,只是从翻译中呈现标签的名称:(.

llew8vvj

llew8vvj1#

遇到了同样的问题。
README中的当前设置说明没有提到配置localePath,但是如果您使用getServerSideProps,则需要配置localePath。在[本节][1]中,它微妙地提到了配置localePath。如果您遵循了设置说明,您将希望在next-i18next.config.js中有这样的内容:

module.exports = {
  i18n: {
    defaultLocale: 'en',
    locales: ['en', 'de'],
  },
  localePath:
    typeof window === 'undefined'
      ? require('path').resolve('./public/locales')
      : '/public/locales',
  ns: ['common'],
}

字符串
注意:localePathi18n配置之外。
通常情况下,[1]:https://github.com/i18next/next-i18next#passing-other-config-options

相关问题