next-i18next ошибка 404 при попытке доступа к любой странице с предоставленной конфигурацией localeSubpaths
Я столкнулся с проблемой 404 при попытке получить доступ к любой странице моего приложения Next.js.
Приложение отлично работает, когда нет localeSubpaths
config предоставляется.
После реализации localeSubpaths
config (next.config.js):
const localeSubpaths = {
en: "en",
"de-DE": "de-DE",
fr: "fr"
};
приложение больше не работает.
Каждый раз, когда я пытаюсь получить доступ к основному корню /
или любую из страниц локали fr
, de-DE
браузер отображает страницу ошибки 404 (настраиваемая страница ошибки Next.js). Эта страница содержит переведенный контент, который работает нормально.
Страница также содержит ссылку на /
Домашняя страница. Когда я перехожу на домашнюю страницу, щелкая ссылку -> Домашняя страница загружается правильно (включая связанные переводы)
i18n.tsx
файл конфигурации:
import NextI18Next from "next-i18next";
import getConfig from "next/config";
import path from "path";
const { publicRuntimeConfig } = getConfig();
const { localeSubpaths } = publicRuntimeConfig;
const NextI18NextInstance = new NextI18Next({
defaultLanguage: "en",
ns: ["common"],
defaultNS: "common",
otherLanguages: ["de-DE", "de-CH", "fr"],
strictMode: false,
localeSubpaths,
localePath: path.resolve("./public/static/locales")
});
export default NextI18NextInstance;
const {
appWithTranslation,
i18n,
Link,
withTranslation,
Router
} = NextI18NextInstance;
export { appWithTranslation, i18n, Link, withTranslation, Router };
0 ответов
Убедитесь, что вы не определили запись i18n в файле next.config.js, так как она будет перекрываться с записью перенаправления.
next.config.js
const localeSubpaths = {
en: 'en',
es: 'es'
}
[...]
//remove any reference to this entry
//i18n: [...]
rewrites: async () => nextI18NextRewrites(localeSubpaths),
publicRuntimeConfig: {
localeSubpaths,
}
i18n.ts
import NextI18Next from 'next-i18next'
import path from 'path'
const localeSubpaths = {
en: 'en',
es: 'es'
}
const NextI18NextInstance = new NextI18Next({
browserLanguageDetection: false,
ns: ["common"],
defaultNS: "common",
fallbackLng: 'en',
otherLanguages: ['es'],
localeSubpaths: localeSubpaths,
defaultLanguage: 'en',
localePath: path.resolve('./public/locales'),
})
export const { appWithTranslation, useTranslation, withTranslation, Link, i18n} = NextI18NextInstance;
export default NextI18NextInstance;