Я создаю сайт Gatsby и хочу создать путь для двух языков без какого-либо плагина. Когда пользователь подключается к /
, он будет перенаправлен на /en
или /it
на основе req.headers["accept-language"]
. Проблема появится в onCreatePage, и это мой фрагмент:
exports.onCreatePage = ({ page, actions }) => {
const { createPage, deletePage } = actions;
deletePage(page);
Object.keys(locales).map(lang => {
//the problem is here
const localizedPath = `${locales[lang].path}${page.path}`;
return createPage({
...page,
path: removeTrailingSlash(localizedPath),
context: {
...page.context,
locale: lang,
}
});
});
};
Локали:
module.exports = {
en: {
default: true,
path: `en`,
locale: `en-US`,
siteLanguage: `en`,
},
it: {
path: `it`,
locale: `it-IT`,
siteLanguage: `it`,
},
}
Если вместо const localizedPath = '${locales[lang].path}${page.path}';
использовать const localizedPath = locales[lang].default ? page.path : '${locales[lang].path}${page.path}';
будет работать, но в этом случае путь /en
будет заменен на путь /
(например, от /en/abc
до /abc
) по умолчанию, и я этого не хочу. Во время gatsby develop
в обоих случаях ошибки отсутствуют.