Skip to content

Commit 37a0d18

Browse files
committed
final fixes
1 parent d3a0167 commit 37a0d18

File tree

5 files changed

+76
-43
lines changed

5 files changed

+76
-43
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,6 @@ dist/
7474

7575
**/.yalc
7676
**/yalc.lock
77+
78+
# Package-lock.json
79+
**/*/package-lock.json

example/gatsby-config.js

+31-31
Original file line numberDiff line numberDiff line change
@@ -68,43 +68,43 @@ module.exports = {
6868
options: {
6969
excludes: ['/**/404', '/**/404.html'],
7070
query: `
71-
{
72-
allSitePage(filter: {context: {i18n: {routed: {eq: false}}}}) {
73-
edges {
74-
node {
75-
context {
76-
i18n {
77-
defaultLanguage
78-
languages
79-
originalPath
80-
}
81-
}
82-
path
71+
{
72+
site {
73+
siteMetadata {
74+
siteUrl
75+
}
76+
}
77+
allSitePage(filter: {context: {i18n: {routed: {eq: false}}}}) {
78+
nodes {
79+
context {
80+
i18n {
81+
defaultLanguage
82+
languages
83+
originalPath
8384
}
8485
}
86+
path
8587
}
8688
}
89+
}
8790
`,
88-
resolveSiteUrl: () => siteUrl,
89-
serialize: ({allSitePage}) => {
90-
return allSitePage.edges.map((edge) => {
91-
const {languages, originalPath, defaultLanguage} = edge.node.context.i18n;
92-
const url = siteUrl + originalPath;
93-
const links = [
94-
{lang: defaultLanguage, url},
95-
{lang: 'x-default', url}
96-
];
97-
languages.forEach((lang) => {
98-
if (lang === defaultLanguage) return;
99-
links.push({lang, url: `${siteUrl}/${lang}${originalPath}`});
100-
});
101-
return {
102-
url,
103-
changefreq: 'daily',
104-
priority: originalPath === '/' ? 1.0 : 0.7,
105-
links
106-
};
91+
serialize: (node) => {
92+
const {languages, originalPath, defaultLanguage} = node.context.i18n;
93+
const url = siteUrl + originalPath;
94+
const links = [
95+
{lang: defaultLanguage, url},
96+
{lang: 'x-default', url}
97+
];
98+
languages.forEach((lang) => {
99+
if (lang === defaultLanguage) return;
100+
links.push({lang, url: `${siteUrl}/${lang}${originalPath}`});
107101
});
102+
return {
103+
url,
104+
changefreq: 'daily',
105+
priority: originalPath === '/' ? 1.0 : 0.7,
106+
links
107+
};
108108
}
109109
}
110110
}

example/gatsby-node.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* Workaround for missing sitePage.context:
3+
* Used for generating sitemap with `gatsby-plugin-react-i18next` and `gatsby-plugin-sitemap` plugins
4+
* https://www.gatsbyjs.com/docs/reference/release-notes/migrating-from-v3-to-v4/#field-sitepagecontext-is-no-longer-available-in-graphql-queries
5+
*/
6+
exports.createSchemaCustomization = ({actions}) => {
7+
const {createTypes} = actions;
8+
createTypes(`
9+
type SitePage implements Node {
10+
context: SitePageContext
11+
}
12+
type SitePageContext {
13+
i18n: i18nContext
14+
}
15+
type i18nContext {
16+
language: String,
17+
languages: [String],
18+
defaultLanguage: String,
19+
originalPath: String
20+
routed: Boolean
21+
}
22+
`);
23+
};

example/yarn.lock

+17-10
Original file line numberDiff line numberDiff line change
@@ -2960,6 +2960,11 @@
29602960
dependencies:
29612961
"fill-range" "^7.0.1"
29622962

2963+
"browser-lang@^0.2.1":
2964+
"integrity" "sha512-+xmtsTxVZKWrKHoNUQp4Tm7BEXlnMwOMAHZAh1SSot1+n04qHLFIH0K5anX52k5BkcauggbaNlWT8f3bVwDh/Q=="
2965+
"resolved" "https://registry.npmjs.org/browser-lang/-/browser-lang-0.2.1.tgz"
2966+
"version" "0.2.1"
2967+
29632968
"browserslist@^4.0.0", "browserslist@^4.14.5", "browserslist@^4.16.3", "browserslist@^4.16.6", "browserslist@^4.17.5", "browserslist@^4.18.1", "browserslist@^4.20.3", "browserslist@^4.21.3", "browserslist@^4.6.6", "browserslist@>= 4.21.0":
29642969
"integrity" "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ=="
29652970
"resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz"
@@ -3700,15 +3705,7 @@
37003705
"domutils" "^3.0.1"
37013706
"nth-check" "^2.0.1"
37023707

3703-
"css-tree@^1.1.2":
3704-
"integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q=="
3705-
"resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz"
3706-
"version" "1.1.3"
3707-
dependencies:
3708-
"mdn-data" "2.0.14"
3709-
"source-map" "^0.6.1"
3710-
3711-
"css-tree@^1.1.3":
3708+
"css-tree@^1.1.2", "css-tree@^1.1.3":
37123709
"integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q=="
37133710
"resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz"
37143711
"version" "1.1.3"
@@ -7430,6 +7427,11 @@
74307427
"resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
74317428
"version" "1.0.2"
74327429

7430+
"outdent@^0.8.0":
7431+
"integrity" "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A=="
7432+
"resolved" "https://registry.npmjs.org/outdent/-/outdent-0.8.0.tgz"
7433+
"version" "0.8.0"
7434+
74337435
"p-cancelable@^2.0.0":
74347436
"integrity" "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="
74357437
"resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz"
@@ -7675,6 +7677,11 @@
76757677
dependencies:
76767678
"path-root-regex" "^0.1.0"
76777679

7680+
"path-to-regexp@^6.2.1":
7681+
"integrity" "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
7682+
"resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz"
7683+
"version" "6.2.1"
7684+
76787685
76797686
"integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
76807687
"resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
@@ -8266,7 +8273,7 @@
82668273
"loose-envify" "^1.1.0"
82678274
"neo-async" "^2.6.1"
82688275

8269-
"react@^18.0.0 || ^0.0.0", "react@^18.2.0", "react@>= 16.8.0", "[email protected]", "[email protected]":
8276+
"react@^18.0.0 || ^0.0.0", "react@^18.2.0", "react@^18.x", "react@>= 16.8.0", "[email protected]", "[email protected]":
82708277
"integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ=="
82718278
"resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
82728279
"version" "18.2.0"

src/plugin/wrapPageElement.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export const wrapPageElement = (
119119
// We want to set default namespace to a page namespace if it exists
120120
// and use other namespaces as fallback
121121
// this way you dont need to specify namespaces in pages
122-
let defaultNS = i18nextOptions.defaultNS || 'translation';
122+
let defaultNS = i18nextOptions.defaultNS?.toString() || 'translation';
123123
defaultNS = namespaces.find((ns) => ns !== defaultNS) || defaultNS;
124124
const fallbackNS = namespaces.filter((ns) => ns !== defaultNS);
125125

@@ -129,7 +129,7 @@ export const wrapPageElement = (
129129

130130
if (!(node.language in res)) res[node.language] = {};
131131

132-
res[node.language][node.ns] = parsedData;
132+
res[node.language][node.ns || defaultNS] = parsedData;
133133

134134
return res;
135135
}, {});

0 commit comments

Comments
 (0)