diff --git a/__tests__/__snapshots__/templateAppDir.test.js.snap b/__tests__/__snapshots__/templateAppDir.test.js.snap index aadb1cd..b859d9b 100644 --- a/__tests__/__snapshots__/templateAppDir.test.js.snap +++ b/__tests__/__snapshots__/templateAppDir.test.js.snap @@ -21,11 +21,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /error\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -77,11 +83,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /error\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -133,11 +145,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /error\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -189,11 +207,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /error\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -245,11 +269,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /global-error\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -301,11 +331,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /global-error\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -357,11 +393,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /global-error\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -413,11 +455,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /global-error\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -469,11 +517,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /layout\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -525,11 +579,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /layout\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -581,11 +641,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /layout\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -637,11 +703,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /layout\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -693,11 +765,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /loading\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -749,11 +827,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /loading\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -805,11 +889,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /loading\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -861,11 +951,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /loading\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -917,11 +1013,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /not-found\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -973,11 +1075,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /not-found\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1029,11 +1137,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /not-found\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1085,11 +1199,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (globalThis.__NEXT_TRANSLATE__ && !detectedLang) return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /not-found\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1139,11 +1259,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1193,11 +1319,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1247,11 +1379,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1301,11 +1439,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1355,11 +1499,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1409,11 +1559,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1463,11 +1619,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1517,11 +1679,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1570,11 +1738,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1623,11 +1797,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1676,11 +1856,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1729,11 +1915,17 @@ export default async function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, locale: detectedLang ?? __i18nConfig.defaultLocale, loaderName: \\"server /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; const { __lang, __namespaces } = await __loadNamespaces({ @@ -1829,12 +2021,17 @@ export default function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; - const lang = detectedLang ?? __i18nConfig.defaultLocale; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, - locale: lang, + locale: detectedLang || __i18nConfig.defaultLocale, loaderName: \\"client /page\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; return ( @@ -1898,12 +2095,17 @@ export default function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; - const lang = detectedLang ?? __i18nConfig.defaultLocale; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, - locale: lang, + locale: detectedLang || __i18nConfig.defaultLocale, loaderName: \\"client /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; return ( @@ -1967,12 +2169,17 @@ export default function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; - const lang = detectedLang ?? __i18nConfig.defaultLocale; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, - locale: lang, + locale: detectedLang || __i18nConfig.defaultLocale, loaderName: \\"client /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; return ( @@ -2067,12 +2274,17 @@ export default function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; - const lang = detectedLang ?? __i18nConfig.defaultLocale; + let dynamicPathname = \\"/about/us/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, - locale: lang, + locale: detectedLang || __i18nConfig.defaultLocale, loaderName: \\"client /page\\", - pathname: \\"/about/us/\\", + pathname: dynamicPathname, }; return ( @@ -2131,12 +2343,17 @@ export default function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; - const lang = detectedLang ?? __i18nConfig.defaultLocale; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, - locale: lang, + locale: detectedLang || __i18nConfig.defaultLocale, loaderName: \\"client /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; return ( @@ -2195,12 +2412,17 @@ export default function __Next_Translate_new__88d9831a00__(props) { if (detectedLang === \\"favicon.ico\\") return ; - const lang = detectedLang ?? __i18nConfig.defaultLocale; + let dynamicPathname = \\"/\\".replace(/\\\\/$/, \\"\\"); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + const config = { ...__i18nConfig, - locale: lang, + locale: detectedLang || __i18nConfig.defaultLocale, loaderName: \\"client /page\\", - pathname: \\"/\\", + pathname: dynamicPathname, }; return ( @@ -2317,6 +2539,140 @@ export default function Page() { " `; +exports[`templateAppDir should reconstruct the pathname for dynamic routes pageNoExt: /embed/[category-name]/[tool-name]/page | normalizedResourcePath: app/embed/[category-name]/[tool-name]/page.js | appFolder: app | isClientComponent: true 1`] = ` +"\\"use client\\"; +import __i18nConfig from \\"@next-translate-root/i18n.json\\"; +import AppDirI18nProvider from \\"next-translate/AppDirI18nProvider\\"; +import { + useSearchParams as __useSearchParams, + useParams as __useParams, +} from \\"next/navigation\\"; +import { use as __use, Suspense as __Suspense } from \\"react\\"; +import __loadNamespaces from \\"next-translate/loadNamespaces\\"; + +import useTranslation from \\"next-translate/useTranslation\\"; +function Page() { + const { t } = useTranslation(\\"common\\"); + return

{t(\\"title\\")}

; +} + +export default function __Next_Translate_new__88d9831a00__(props) { + const searchParams = __useSearchParams(); + const params = __useParams(); + const detectedLang = params.lang ?? searchParams.get(\\"lang\\"); + + if (detectedLang === \\"favicon.ico\\") return ; + + let dynamicPathname = \\"/embed/[category-name]/[tool-name]/\\".replace( + /\\\\/$/, + \\"\\" + ); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + + const config = { + ...__i18nConfig, + locale: detectedLang || __i18nConfig.defaultLocale, + loaderName: \\"client /page\\", + pathname: dynamicPathname, + }; + + return ( + <__Suspense fallback={null}> + <__Next_Translate__child__88d9831a00__ + {...props} + config={config} + promise={__loadNamespaces({ + ...config, + loadLocaleFrom: + (__i18nConfig && __i18nConfig.loadLocaleFrom) || + ((l, n) => + import(\\"@next-translate-root/locales/\\" + l + \\"/\\" + n).then( + (m) => m.default + )), + })} + /> + + ); +} + +function __Next_Translate__child__88d9831a00__({ promise, config, ...props }) { + const { __lang, __namespaces } = __use(promise); + const oldNamespaces = globalThis.__NEXT_TRANSLATE__?.namespaces ?? {}; + globalThis.__NEXT_TRANSLATE__ = { + lang: __lang, + namespaces: { ...oldNamespaces, ...__namespaces }, + config, + }; + return ; +} +" +`; + +exports[`templateAppDir should reconstruct the pathname for dynamic routes pageNoExt: /embed/[category-name]/[tool-name]/page | normalizedResourcePath: app/embed/[category-name]/[tool-name]/page.js | appFolder: app 1`] = ` +"import __i18nConfig from \\"@next-translate-root/i18n.json\\"; +import AppDirI18nProvider from \\"next-translate/AppDirI18nProvider\\"; +import __loadNamespaces from \\"next-translate/loadNamespaces\\"; + +import useTranslation from \\"next-translate/useTranslation\\"; +function Page() { + const { t } = useTranslation(\\"common\\"); + return

{t(\\"title\\")}

; +} + +export default async function __Next_Translate_new__88d9831a00__(props) { + const params = await props.params; + const searchParams = await props.searchParams; + const detectedLang = params?.lang ?? searchParams?.lang; + + if (detectedLang === \\"favicon.ico\\") return ; + + let dynamicPathname = \\"/embed/[category-name]/[tool-name]/\\".replace( + /\\\\/$/, + \\"\\" + ); + Object.keys(params ?? {}).forEach(function (k) { + if (k !== \\"lang\\") + dynamicPathname = dynamicPathname.replace(\\"[\\" + k + \\"]\\", params[k]); + }); + + const config = { + ...__i18nConfig, + locale: detectedLang ?? __i18nConfig.defaultLocale, + loaderName: \\"server /page\\", + pathname: dynamicPathname, + }; + + const { __lang, __namespaces } = await __loadNamespaces({ + ...config, + loadLocaleFrom: + (__i18nConfig && __i18nConfig.loadLocaleFrom) || + ((l, n) => + import(\\"@next-translate-root/locales/\\" + l + \\"/\\" + n).then( + (m) => m.default + )), + }); + + const oldNamespaces = globalThis.__NEXT_TRANSLATE__?.namespaces ?? {}; + const namespaces = { ...oldNamespaces, ...__namespaces }; + + globalThis.__NEXT_TRANSLATE__ = { lang: __lang, namespaces, config }; + + return ( + + + + ); +} +" +`; + exports[`templateAppDir should use an empty loader fallback if doesnt have any namespaces inside locales/{lang}/\${namespace} isClientComponent: true | existLocalesFolder: false | pageNoExt: /component | normalizedResourcePath: app/component.js | appFolder: app 1`] = ` "\\"use client\\"; diff --git a/__tests__/templateAppDir.test.js b/__tests__/templateAppDir.test.js index cea57a8..a47153d 100644 --- a/__tests__/templateAppDir.test.js +++ b/__tests__/templateAppDir.test.js @@ -325,6 +325,24 @@ const tests = [ }, ], }, + { + describe: 'should reconstruct the pathname for dynamic routes', + code: ` + import useTranslation from 'next-translate/useTranslation' + + export default function Page() { + const { t } = useTranslation('common') + return

{t('title')}

+ } + `, + cases: [ + insideAppDir('/embed/[category-name]/[tool-name]/page'), + { + ...insideAppDir('/embed/[category-name]/[tool-name]/page'), + isClientComponent: true, + }, + ], + }, ] describe('templateAppDir', () => { diff --git a/src/templateAppDir.ts b/src/templateAppDir.ts index 5cd5846..553c9ce 100644 --- a/src/templateAppDir.ts +++ b/src/templateAppDir.ts @@ -128,11 +128,16 @@ function templateRSCPage({ : '' } + let dynamicPathname = '${pathname}'.replace(/\\/$/, '') + Object.keys(params ?? {}).forEach(function(k) { + if (k !== 'lang') dynamicPathname = dynamicPathname.replace('[' + k + ']', params[k]) + }); + const config = { ...${INTERNAL_CONFIG_KEY}, locale: detectedLang ?? ${INTERNAL_CONFIG_KEY}.defaultLocale, loaderName: 'server ${routeType}', - pathname: '${pathname}' + pathname: dynamicPathname } const { __lang, __namespaces } = await __loadNamespaces({ ...config, ${addLoadLocalesFrom( @@ -194,12 +199,16 @@ function templateRCCPage({ : '' } - const lang = detectedLang ?? ${INTERNAL_CONFIG_KEY}.defaultLocale + let dynamicPathname = '${pathname}'.replace(/\\/$/, '') + Object.keys(params ?? {}).forEach(function(k) { + if (k !== 'lang') dynamicPathname = dynamicPathname.replace('[' + k + ']', params[k]) + }); + const config = { ...${INTERNAL_CONFIG_KEY}, - locale: lang, + locale: detectedLang || ${INTERNAL_CONFIG_KEY}.defaultLocale, loaderName: 'client ${routeType}', - pathname: '${pathname}', + pathname: dynamicPathname, } return (