Как использовать i18n и next /image в next.config.js с помощью TypeScript?

#typescript #next.js #nextjs-image

#typescript #next.js #nextjs-изображение

Вопрос:

Я пытаюсь создать мини-приложение с использованием TypeScript в NextJS, поскольку теперь TypeScript поддерживается в Next.js из коробки. И я также хочу включить эти две недавно добавленные функции:

Возьмем i18n , к примеру:

 // next.config.js
module.exports = {
    i18n: {
      // These are all the locales you want to support in
      // your application 
      // Sub-path Routing 
      locales: ['en', 'cn'],
      // This is the default locale you want to be used when visiting
      // a non-locale prefixed path e.g. `/hello`
      defaultLocale: 'en',
    },
  }
 

К сожалению, мне очень сложно использовать их в моем next.config.js , что касается обычного приложения (только JavaScript), оно работает так, как должно. Но для версии TypeScript я получаю эту ошибку:

 (node:15704) UnhandledPromiseRejectionWarning: TypeError: Cannot set property '__nextLocale' of undefined
 

Будет очень полезно, если кто-нибудь из вас сможет мне помочь или может привести пример того, как правильно использовать next.config.js и включать эти новые функции в приложение TypeScript NextJS.

Ответ №1:

Я думаю, что нет языкового стандарта с именем ‘en’ или ‘cn’

https://en.wikipedia.org/wiki/Language_localisation

Я думаю, это то, что вам нужно:

 const withImages = require('next-images')
const withPWA = require('next-pwa')

module.exports = withPWA(
withImages({
  images: {
    domains: [
    'images.ctfassets.net',
    'imgix.cosmicjs.com',
    'cdn.cosmicjs.com',
   ],
   i18n: {
      // These are all the locales you want to support in
      // your application
      locales: ['en-US', 'zh-CN'],
      // This is the default locale you want to be used when visiting
      // a non-locale prefixed path e.g. `/hello`
      defaultLocale: 'pt-BR',
      ...
   }
 },
 

Комментарии:

1. Регион является необязательным в Next.js локали i18n .