如何使用nextjs从url中删除/[lang标签]?

5 javascript internationalization i18next reactjs next.js

我想从网址中删除/en/it 。我不希望它明确地将其放入网址中。i18next 默认这样做,我不知道如何删除它。我只是想把它放在后台

网址

我是否必须添加任何选项来删除它,或者我无能为力?

我的代码如下:

import i18n from 'i18next'
import Backend from 'i18next-http-backend'
import LanguageDetector from 'i18next-browser-languagedetector'
import { initReactI18next } from 'react-i18next'

i18n
  .use(Backend)
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    debug: true,

    interpolation: {
      escapeValue: false,
    },
    react: {
      useSuspense: false,
    },
  })

export default i18n
Run Code Online (Sandbox Code Playgroud)

我将其导入到我要翻译的页面中

import { useTranslation } from 'react-i18next';

function MyComponent: ReactElement {
    const [isEnglish, setIsEnglish] = useState(true);
    const { t, i18n } = useTranslation();
    const handleClick = () => {
        setIsEnglish(!isEnglish);
        i18n.changeLanguage(!isEnglish ? 'en' : 'it');
    }
    return <>My stuff</>
 }
Run Code Online (Sandbox Code Playgroud)

正如我所说,它添加到我的路线/[语言代码]。有没有办法将其删除并将其设置为“背景”?

非常感谢!

Ded*_*Dev 1

在你的next.config.js

i18n: {
  localeDetection: false,
}
Run Code Online (Sandbox Code Playgroud)

这为我解决了一个问题。

  • 如果我这样做,则会引发此错误: &gt; 指定的 i18n.locales 应该是收到未定义的数组。请在此处查看更多信息:https://nextjs.org/docs/messages/invalid-i18n-config。如果我添加“locales”数组(也为空),则会引发错误,因为“defaultLocale”为空。最后我必须设置一个 defaultLocale 并且 router.locale 返回那个! (2认同)