next-intl 2.11.0-beta.13 → 2.11.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/next-intl.esm.js +27 -18
- package/dist/client/next-intl.esm.js.map +1 -1
- package/dist/client/next-intl.esm2.js +18 -27
- package/dist/client/next-intl.esm2.js.map +1 -1
- package/dist/{server → middleware}/NextIntlMiddlewareConfig.d.ts +2 -0
- package/dist/middleware/getHost.d.ts +1 -0
- package/dist/middleware/index.d.ts +1 -0
- package/dist/{src → middleware}/middleware.d.ts +3 -3
- package/dist/{server → middleware}/resolveLocale.d.ts +0 -0
- package/dist/middleware/setAlternateLinksHeader.d.ts +6 -0
- package/dist/next-intl.esm.js +4 -4
- package/dist/react-client/next-intl.esm.js +1 -1
- package/dist/shared/next-intl.esm.js +33 -36
- package/dist/shared/next-intl.esm.js.map +1 -1
- package/dist/shared/next-intl.esm2.js +36 -33
- package/dist/shared/next-intl.esm2.js.map +1 -1
- package/dist/src/{server → middleware}/NextIntlMiddlewareConfig.d.ts +2 -0
- package/dist/src/{server → middleware}/NextIntlMiddlewareConfig.js +0 -0
- package/dist/src/middleware/NextIntlMiddlewareConfig.js.map +1 -0
- package/dist/src/middleware/getHost.d.ts +1 -0
- package/dist/src/middleware/getHost.js +6 -0
- package/dist/src/middleware/getHost.js.map +1 -0
- package/dist/src/middleware/index.d.ts +1 -0
- package/dist/src/middleware/index.js +2 -0
- package/dist/src/middleware/index.js.map +1 -0
- package/dist/{middleware.d.ts → src/middleware/middleware.d.ts} +3 -3
- package/dist/src/{middleware.js → middleware/middleware.js} +6 -4
- package/dist/src/middleware/middleware.js.map +1 -0
- package/dist/src/{server → middleware}/resolveLocale.d.ts +0 -0
- package/dist/src/{server → middleware}/resolveLocale.js +2 -3
- package/dist/src/middleware/resolveLocale.js.map +1 -0
- package/dist/src/middleware/setAlternateLinksHeader.d.ts +6 -0
- package/dist/src/middleware/setAlternateLinksHeader.js +51 -0
- package/dist/src/middleware/setAlternateLinksHeader.js.map +1 -0
- package/package.json +2 -4
- package/src/{server → middleware}/NextIntlMiddlewareConfig.tsx +3 -0
- package/src/middleware/getHost.tsx +7 -0
- package/src/middleware/index.tsx +1 -0
- package/src/{middleware.tsx → middleware/middleware.tsx} +8 -5
- package/src/{server → middleware}/resolveLocale.tsx +2 -5
- package/src/middleware/setAlternateLinksHeader.tsx +74 -0
- package/client.js +0 -1
- package/dist/src/middleware.js.map +0 -1
- package/dist/src/server/NextIntlMiddlewareConfig.js.map +0 -1
- package/dist/src/server/resolveLocale.js.map +0 -1
- package/server.js +0 -1
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
import { extends as _extends } from '../_virtual/next-intl.esm.js';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import localizePathname from '../shared/next-intl.esm3.js';
|
|
3
|
+
import getCookieLocale from './next-intl.esm3.js';
|
|
4
|
+
import hasPathnamePrefixed from './next-intl.esm4.js';
|
|
5
5
|
|
|
6
|
-
function
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
function localizeHref(href, locale) {
|
|
7
|
+
var cookieLocale = getCookieLocale();
|
|
8
|
+
if (!locale) locale = cookieLocale;
|
|
9
|
+
var pathname = window.location.pathname;
|
|
10
|
+
var isSwitchingLocale = locale !== cookieLocale;
|
|
11
|
+
var isPathnamePrefixed = hasPathnamePrefixed(locale, pathname);
|
|
12
|
+
|
|
13
|
+
if (isPathnamePrefixed || isSwitchingLocale) {
|
|
14
|
+
var prefixedHref;
|
|
15
|
+
|
|
16
|
+
if (typeof href === 'string') {
|
|
17
|
+
prefixedHref = localizePathname(locale, href);
|
|
18
|
+
} else {
|
|
19
|
+
prefixedHref = _extends({}, href);
|
|
20
|
+
|
|
21
|
+
if (href.pathname) {
|
|
22
|
+
prefixedHref.pathname = localizePathname(locale, href.pathname);
|
|
18
23
|
}
|
|
19
|
-
}
|
|
20
|
-
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return prefixedHref;
|
|
27
|
+
} else {
|
|
28
|
+
return href;
|
|
29
|
+
}
|
|
21
30
|
}
|
|
22
31
|
|
|
23
|
-
export {
|
|
32
|
+
export { localizeHref as default };
|
|
24
33
|
//# sourceMappingURL=next-intl.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-intl.esm.js","sources":["../../src/client/
|
|
1
|
+
{"version":3,"file":"next-intl.esm.js","sources":["../../src/client/localizeHref.tsx"],"sourcesContent":["import {UrlObject} from 'url';\nimport localizePathname from '../shared/localizePathname';\nimport getCookieLocale from './getCookieLocale';\nimport hasPathnamePrefixed from './hasPathnamePrefixed';\n\nexport default function localizeHref(href: string, locale?: string): string;\nexport default function localizeHref(\n href: UrlObject | string,\n locale?: string\n): UrlObject | string;\nexport default function localizeHref(\n href: UrlObject | string,\n locale?: string\n) {\n const cookieLocale = getCookieLocale();\n if (!locale) locale = cookieLocale;\n\n const {pathname} = window.location;\n const isSwitchingLocale = locale !== cookieLocale;\n const isPathnamePrefixed = hasPathnamePrefixed(locale, pathname);\n\n if (isPathnamePrefixed || isSwitchingLocale) {\n let prefixedHref;\n if (typeof href === 'string') {\n prefixedHref = localizePathname(locale, href);\n } else {\n prefixedHref = {...href};\n if (href.pathname) {\n prefixedHref.pathname = localizePathname(locale, href.pathname);\n }\n }\n\n return prefixedHref;\n } else {\n return href;\n }\n}\n"],"names":["localizeHref","href","locale","cookieLocale","getCookieLocale","pathname","window","location","isSwitchingLocale","isPathnamePrefixed","hasPathnamePrefixed","prefixedHref","localizePathname"],"mappings":";;;;;AAUc,SAAUA,YAAV,CACZC,IADY,EAEZC,MAFY,EAEG;AAEf,EAAMC,IAAAA,YAAY,GAAGC,eAAe,EAApC,CAAA;AACA,EAAA,IAAI,CAACF,MAAL,EAAaA,MAAM,GAAGC,YAAT,CAAA;AAEb,EAAA,IAAOE,QAAP,GAAmBC,MAAM,CAACC,QAA1B,CAAOF,QAAP,CAAA;AACA,EAAA,IAAMG,iBAAiB,GAAGN,MAAM,KAAKC,YAArC,CAAA;AACA,EAAA,IAAMM,kBAAkB,GAAGC,mBAAmB,CAACR,MAAD,EAASG,QAAT,CAA9C,CAAA;;AAEA,EAAII,IAAAA,kBAAkB,IAAID,iBAA1B,EAA6C;AAC3C,IAAA,IAAIG,YAAJ,CAAA;;AACA,IAAA,IAAI,OAAOV,IAAP,KAAgB,QAApB,EAA8B;AAC5BU,MAAAA,YAAY,GAAGC,gBAAgB,CAACV,MAAD,EAASD,IAAT,CAA/B,CAAA;AACD,KAFD,MAEO;AACLU,MAAAA,YAAY,GAAOV,QAAAA,CAAAA,EAAAA,EAAAA,IAAP,CAAZ,CAAA;;AACA,MAAIA,IAAAA,IAAI,CAACI,QAAT,EAAmB;AACjBM,QAAAA,YAAY,CAACN,QAAb,GAAwBO,gBAAgB,CAACV,MAAD,EAASD,IAAI,CAACI,QAAd,CAAxC,CAAA;AACD,OAAA;AACF,KAAA;;AAED,IAAA,OAAOM,YAAP,CAAA;AACD,GAZD,MAYO;AACL,IAAA,OAAOV,IAAP,CAAA;AACD,GAAA;AACF;;;;"}
|
|
@@ -1,33 +1,24 @@
|
|
|
1
1
|
import { extends as _extends } from '../_virtual/next-intl.esm.js';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import { useRouter as useRouter$1 } from 'next/navigation';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import localizeHref from './next-intl.esm.js';
|
|
5
5
|
|
|
6
|
-
function
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} else {
|
|
19
|
-
prefixedHref = _extends({}, href);
|
|
20
|
-
|
|
21
|
-
if (href.pathname) {
|
|
22
|
-
prefixedHref.pathname = localizePathname(locale, href.pathname);
|
|
6
|
+
function useRouter() {
|
|
7
|
+
var router = useRouter$1();
|
|
8
|
+
return useMemo(function () {
|
|
9
|
+
return _extends({}, router, {
|
|
10
|
+
push: function push(href) {
|
|
11
|
+
return router.push(localizeHref(href));
|
|
12
|
+
},
|
|
13
|
+
replace: function replace(href) {
|
|
14
|
+
return router.replace(localizeHref(href));
|
|
15
|
+
},
|
|
16
|
+
prefetch: function prefetch(href) {
|
|
17
|
+
return router.prefetch(localizeHref(href));
|
|
23
18
|
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return prefixedHref;
|
|
27
|
-
} else {
|
|
28
|
-
return href;
|
|
29
|
-
}
|
|
19
|
+
});
|
|
20
|
+
}, [router]);
|
|
30
21
|
}
|
|
31
22
|
|
|
32
|
-
export {
|
|
23
|
+
export { useRouter as default };
|
|
33
24
|
//# sourceMappingURL=next-intl.esm2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-intl.esm2.js","sources":["../../src/client/
|
|
1
|
+
{"version":3,"file":"next-intl.esm2.js","sources":["../../src/client/useRouter.tsx"],"sourcesContent":["import {useRouter as useNextRouter} from 'next/navigation';\nimport {useMemo} from 'react';\nimport localizeHref from './localizeHref';\n\nexport default function useRouter() {\n const router = useNextRouter();\n\n return useMemo(\n () => ({\n ...router,\n push(href: string) {\n return router.push(localizeHref(href));\n },\n replace(href: string) {\n return router.replace(localizeHref(href));\n },\n prefetch(href: string) {\n return router.prefetch(localizeHref(href));\n }\n }),\n [router]\n );\n}\n"],"names":["useRouter","router","useNextRouter","useMemo","push","href","localizeHref","replace","prefetch"],"mappings":";;;;;AAIc,SAAUA,SAAV,GAAmB;AAC/B,EAAMC,IAAAA,MAAM,GAAGC,WAAa,EAA5B,CAAA;AAEA,EAAA,OAAOC,OAAO,CACZ,YAAA;AAAA,IAAA,OAAA,QAAA,CAAA,EAAA,EACKF,MADL,EAAA;AAEEG,MAAAA,IAFF,EAEOC,SAAAA,IAAAA,CAAAA,IAFP,EAEmB;AACf,QAAOJ,OAAAA,MAAM,CAACG,IAAP,CAAYE,YAAY,CAACD,IAAD,CAAxB,CAAP,CAAA;AACD,OAJH;AAKEE,MAAAA,OALF,EAKUF,SAAAA,OAAAA,CAAAA,IALV,EAKsB;AAClB,QAAOJ,OAAAA,MAAM,CAACM,OAAP,CAAeD,YAAY,CAACD,IAAD,CAA3B,CAAP,CAAA;AACD,OAPH;AAQEG,MAAAA,QARF,EAQWH,SAAAA,QAAAA,CAAAA,IARX,EAQuB;AACnB,QAAOJ,OAAAA,MAAM,CAACO,QAAP,CAAgBF,YAAY,CAACD,IAAD,CAA5B,CAAP,CAAA;AACD,OAAA;AAVH,KAAA,CAAA,CAAA;AAAA,GADY,EAaZ,CAACJ,MAAD,CAbY,CAAd,CAAA;AAeD;;;;"}
|
|
@@ -7,5 +7,7 @@ declare type NextIntlMiddlewareConfig = {
|
|
|
7
7
|
domain: string;
|
|
8
8
|
defaultLocale: string;
|
|
9
9
|
}>;
|
|
10
|
+
/** Sets the `Link` response header to notify search engines about content in other languages (defaults to `true`). See https://developers.google.com/search/docs/specialty/international/localized-versions#http */
|
|
11
|
+
alternateLinks?: boolean;
|
|
10
12
|
};
|
|
11
13
|
export default NextIntlMiddlewareConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function getHost(requestHeaders: Headers): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './middleware';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
-
import NextIntlMiddlewareConfig from './
|
|
3
|
-
export default function createIntlMiddleware(config: NextIntlMiddlewareConfig): (request: NextRequest) => NextResponse;
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import NextIntlMiddlewareConfig from './NextIntlMiddlewareConfig';
|
|
3
|
+
export default function createIntlMiddleware(config: NextIntlMiddlewareConfig): (request: NextRequest) => NextResponse;
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import NextIntlMiddlewareConfig from './NextIntlMiddlewareConfig';
|
|
3
|
+
/**
|
|
4
|
+
* See https://developers.google.com/search/docs/specialty/international/localized-versions
|
|
5
|
+
*/
|
|
6
|
+
export default function setAlternateLinksHeader(config: NextIntlMiddlewareConfig, request: NextRequest, response: NextResponse): void;
|
package/dist/next-intl.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import Link from './shared/next-intl.
|
|
2
|
-
export { default as Link } from './shared/next-intl.
|
|
3
|
-
import NextIntlClientProvider from './shared/next-intl.
|
|
4
|
-
export { default as NextIntlClientProvider } from './shared/next-intl.
|
|
1
|
+
import Link from './shared/next-intl.esm.js';
|
|
2
|
+
export { default as Link } from './shared/next-intl.esm.js';
|
|
3
|
+
import NextIntlClientProvider from './shared/next-intl.esm2.js';
|
|
4
|
+
export { default as NextIntlClientProvider } from './shared/next-intl.esm2.js';
|
|
5
5
|
export * from 'use-intl';
|
|
6
6
|
export { default as useLocalizedRouter } from './react-client/next-intl.esm.js';
|
|
7
7
|
|
|
@@ -1,47 +1,44 @@
|
|
|
1
1
|
import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../_virtual/next-intl.esm.js';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
import NextLink from 'next/link';
|
|
3
|
+
import { usePathname } from 'next/navigation';
|
|
4
|
+
import React, { forwardRef, useState, useEffect } from 'react';
|
|
5
|
+
import localizeHref from '../client/next-intl.esm.js';
|
|
6
|
+
|
|
7
|
+
var _excluded = ["href", "locale", "prefetch"];
|
|
8
|
+
/**
|
|
9
|
+
* Wraps `next/link` and prefixes the `href` with the current locale.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function Link(_ref, ref) {
|
|
13
|
+
var href = _ref.href,
|
|
10
14
|
locale = _ref.locale,
|
|
11
|
-
|
|
15
|
+
prefetch = _ref.prefetch,
|
|
12
16
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
13
17
|
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// Reading from context is practically ok to do conditionally
|
|
18
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
19
|
-
router = useRouter();
|
|
20
|
-
} catch (error) {// Calling `useRouter` is not supported in the app folder
|
|
21
|
-
} // The router can be undefined if used in a context outside
|
|
22
|
-
// of Next.js (e.g. unit tests, Storybook, ...)
|
|
23
|
-
|
|
18
|
+
var _useState = useState(href),
|
|
19
|
+
localizedHref = _useState[0],
|
|
20
|
+
setLocalizedHref = _useState[1];
|
|
24
21
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
//
|
|
29
|
-
// first-class serialization support (https://github.com/facebook/react/issues/25687)
|
|
22
|
+
var pathname = usePathname(); // When the user renders a link to another locale, Next.js might prefetch it
|
|
23
|
+
// and the `set-cookie` response header will cause the locale cookie on the
|
|
24
|
+
// current page to be overwritten. Therefore default to disabling prefetching
|
|
25
|
+
// when the user passes a `locale` prop.
|
|
30
26
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
now = new Date(now);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (!locale) {
|
|
37
|
-
throw new Error(process.env.NODE_ENV !== 'production' ? "Couldn't determine locale. Please pass an explicit `locale` prop the provider, or if you're using the `pages` folder, use internationalized routing (https://nextjs.org/docs/advanced-features/i18n-routing)." : undefined);
|
|
27
|
+
if (prefetch === undefined && locale !== undefined) {
|
|
28
|
+
prefetch = false;
|
|
38
29
|
}
|
|
39
30
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
31
|
+
useEffect(function () {
|
|
32
|
+
setLocalizedHref(localizeHref(href, locale));
|
|
33
|
+
}, [href, locale, pathname]);
|
|
34
|
+
return React.createElement(NextLink, _extends({
|
|
35
|
+
ref: ref,
|
|
36
|
+
href: localizedHref,
|
|
37
|
+
prefetch: prefetch
|
|
38
|
+
}, rest));
|
|
44
39
|
}
|
|
45
40
|
|
|
46
|
-
|
|
41
|
+
var Link$1 = /*#__PURE__*/forwardRef(Link);
|
|
42
|
+
|
|
43
|
+
export { Link$1 as default };
|
|
47
44
|
//# sourceMappingURL=next-intl.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-intl.esm.js","sources":["../../src/shared/
|
|
1
|
+
{"version":3,"file":"next-intl.esm.js","sources":["../../src/shared/Link.tsx"],"sourcesContent":["'use client';\n\nimport NextLink from 'next/link';\nimport {usePathname} from 'next/navigation';\nimport React, {ComponentProps, forwardRef, useEffect, useState} from 'react';\nimport localizeHref from '../client/localizeHref';\n\ntype Props = Omit<ComponentProps<typeof NextLink>, 'locale'> & {\n locale?: string;\n};\n\n/**\n * Wraps `next/link` and prefixes the `href` with the current locale.\n */\nfunction Link({href, locale, prefetch, ...rest}: Props, ref: Props['ref']) {\n const [localizedHref, setLocalizedHref] = useState<typeof href>(href);\n const pathname = usePathname();\n\n // When the user renders a link to another locale, Next.js might prefetch it\n // and the `set-cookie` response header will cause the locale cookie on the\n // current page to be overwritten. Therefore default to disabling prefetching\n // when the user passes a `locale` prop.\n if (prefetch === undefined && locale !== undefined) {\n prefetch = false;\n }\n\n useEffect(() => {\n setLocalizedHref(localizeHref(href, locale));\n }, [href, locale, pathname]);\n\n return (\n <NextLink ref={ref} href={localizedHref} prefetch={prefetch} {...rest} />\n );\n}\n\nexport default forwardRef(Link);\n"],"names":["Link","ref","href","locale","prefetch","rest","useState","localizedHref","setLocalizedHref","pathname","usePathname","undefined","useEffect","localizeHref","React","createElement","NextLink","forwardRef"],"mappings":";;;;;;;AAWA;;AAEG;;AACH,SAASA,IAAT,CAAwDC,IAAAA,EAAAA,GAAxD,EAAyE;AAAA,EAA1DC,IAAAA,IAA0D,QAA1DA,IAA0D;AAAA,MAApDC,MAAoD,QAApDA,MAAoD;AAAA,MAA5CC,QAA4C,QAA5CA,QAA4C;AAAA,MAA/BC,IAA+B,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;AACvE,EAA0CC,IAAAA,SAAAA,GAAAA,QAAQ,CAAcJ,IAAd,CAAlD;AAAA,MAAOK,aAAP,GAAA,SAAA,CAAA,CAAA,CAAA;AAAA,MAAsBC,gBAAtB,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA;;AACA,EAAA,IAAMC,QAAQ,GAAGC,WAAW,EAA5B,CAFuE;AAKvE;AACA;AACA;;AACA,EAAA,IAAIN,QAAQ,KAAKO,SAAb,IAA0BR,MAAM,KAAKQ,SAAzC,EAAoD;AAClDP,IAAAA,QAAQ,GAAG,KAAX,CAAA;AACD,GAAA;;AAEDQ,EAAAA,SAAS,CAAC,YAAK;AACbJ,IAAAA,gBAAgB,CAACK,YAAY,CAACX,IAAD,EAAOC,MAAP,CAAb,CAAhB,CAAA;AACD,GAFQ,EAEN,CAACD,IAAD,EAAOC,MAAP,EAAeM,QAAf,CAFM,CAAT,CAAA;AAIA,EAAA,OACEK,KAAC,CAAAC,aAAD,CAACC,QAAD,EAAA,QAAA,CAAA;AAAUf,IAAAA,GAAG,EAAEA,GAAf;AAAoBC,IAAAA,IAAI,EAAEK,aAA1B;AAAyCH,IAAAA,QAAQ,EAAEA,QAAAA;AAAnD,GAAA,EAAiEC,IAAjE,CADF,CAAA,CAAA;AAGD,CAAA;;AAED,aAAeY,aAAAA,UAAU,CAACjB,IAAD,CAAzB;;;;"}
|
|
@@ -1,44 +1,47 @@
|
|
|
1
1
|
import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../_virtual/next-intl.esm.js';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
function Link(_ref, ref) {
|
|
13
|
-
var href = _ref.href,
|
|
2
|
+
import { useRouter } from 'next/router';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { IntlProvider } from 'use-intl';
|
|
5
|
+
|
|
6
|
+
var _excluded = ["children", "locale", "now"];
|
|
7
|
+
|
|
8
|
+
function NextIntlClientProvider(_ref) {
|
|
9
|
+
var children = _ref.children,
|
|
14
10
|
locale = _ref.locale,
|
|
15
|
-
|
|
11
|
+
now = _ref.now,
|
|
16
12
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
17
13
|
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
var router;
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
// Reading from context is practically ok to do conditionally
|
|
18
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
19
|
+
router = useRouter();
|
|
20
|
+
} catch (error) {// Calling `useRouter` is not supported in the app folder
|
|
21
|
+
} // The router can be undefined if used in a context outside
|
|
22
|
+
// of Next.js (e.g. unit tests, Storybook, ...)
|
|
23
|
+
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
//
|
|
25
|
-
//
|
|
25
|
+
if (!locale && router) {
|
|
26
|
+
locale = router.locale;
|
|
27
|
+
} // Currently RSC serialize dates to strings, therefore make sure we have
|
|
28
|
+
// a date object. We might be able to remove this once more types have
|
|
29
|
+
// first-class serialization support (https://github.com/facebook/react/issues/25687)
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
|
|
32
|
+
if (typeof now === 'string') {
|
|
33
|
+
now = new Date(now);
|
|
29
34
|
}
|
|
30
35
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
return React.createElement(NextLink, _extends({
|
|
35
|
-
ref: ref,
|
|
36
|
-
href: localizedHref,
|
|
37
|
-
prefetch: prefetch
|
|
38
|
-
}, rest));
|
|
39
|
-
}
|
|
36
|
+
if (!locale) {
|
|
37
|
+
throw new Error(process.env.NODE_ENV !== 'production' ? "Couldn't determine locale. Please pass an explicit `locale` prop the provider, or if you're using the `pages` folder, use internationalized routing (https://nextjs.org/docs/advanced-features/i18n-routing)." : undefined);
|
|
38
|
+
}
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
return React.createElement(IntlProvider, _extends({
|
|
41
|
+
locale: locale,
|
|
42
|
+
now: now
|
|
43
|
+
}, rest), children);
|
|
44
|
+
}
|
|
42
45
|
|
|
43
|
-
export {
|
|
46
|
+
export { NextIntlClientProvider as default };
|
|
44
47
|
//# sourceMappingURL=next-intl.esm2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-intl.esm2.js","sources":["../../src/shared/
|
|
1
|
+
{"version":3,"file":"next-intl.esm2.js","sources":["../../src/shared/NextIntlClientProvider.tsx"],"sourcesContent":["'use client';\n\nimport {useRouter} from 'next/router';\nimport React, {ComponentProps} from 'react';\nimport {IntlProvider} from 'use-intl';\n\ntype Props = Omit<ComponentProps<typeof IntlProvider>, 'locale' | 'now'> & {\n locale?: string;\n /** If a string is supplied, make sure this conforms to the ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ */\n now?: Date | string;\n};\n\n// Move this from /client to default\n\nexport default function NextIntlClientProvider({\n children,\n locale,\n now,\n ...rest\n}: Props) {\n let router;\n try {\n // Reading from context is practically ok to do conditionally\n // eslint-disable-next-line react-hooks/rules-of-hooks\n router = useRouter();\n } catch (error) {\n // Calling `useRouter` is not supported in the app folder\n }\n\n // The router can be undefined if used in a context outside\n // of Next.js (e.g. unit tests, Storybook, ...)\n if (!locale && router) {\n locale = router.locale;\n }\n\n // Currently RSC serialize dates to strings, therefore make sure we have\n // a date object. We might be able to remove this once more types have\n // first-class serialization support (https://github.com/facebook/react/issues/25687)\n if (typeof now === 'string') {\n now = new Date(now);\n }\n\n if (!locale) {\n throw new Error(\n process.env.NODE_ENV !== 'production'\n ? \"Couldn't determine locale. Please pass an explicit `locale` prop the provider, or if you're using the `pages` folder, use internationalized routing (https://nextjs.org/docs/advanced-features/i18n-routing).\"\n : undefined\n );\n }\n\n return (\n <IntlProvider locale={locale} now={now} {...rest}>\n {children}\n </IntlProvider>\n );\n}\n"],"names":["NextIntlClientProvider","children","locale","now","rest","router","useRouter","error","Date","Error","process","env","NODE_ENV","undefined","React","createElement","IntlProvider"],"mappings":";;;;;;;AAcwB,SAAAA,sBAAA,CAKhB,IAAA,EAAA;AAAA,EAJNC,IAAAA,QAIM,QAJNA,QAIM;AAAA,MAHNC,MAGM,QAHNA,MAGM;AAAA,MAFNC,GAEM,QAFNA,GAEM;AAAA,MADHC,IACG,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;AACN,EAAA,IAAIC,MAAJ,CAAA;;AACA,EAAI,IAAA;AACF;AACA;AACAA,IAAAA,MAAM,GAAGC,SAAS,EAAlB,CAAA;AACD,GAJD,CAIE,OAAOC,KAAP,EAAc;AAEf,GARK;AAWN;;;AACA,EAAA,IAAI,CAACL,MAAD,IAAWG,MAAf,EAAuB;AACrBH,IAAAA,MAAM,GAAGG,MAAM,CAACH,MAAhB,CAAA;AACD,GAdK;AAiBN;AACA;;;AACA,EAAA,IAAI,OAAOC,GAAP,KAAe,QAAnB,EAA6B;AAC3BA,IAAAA,GAAG,GAAG,IAAIK,IAAJ,CAASL,GAAT,CAAN,CAAA;AACD,GAAA;;AAED,EAAI,IAAA,CAACD,MAAL,EAAa;AACX,IAAA,MAAM,IAAIO,KAAJ,CACJC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GACI,+MADJ,GAEIC,SAHA,CAAN,CAAA;AAKD,GAAA;;AAED,EAAA,OACEC,KAAC,CAAAC,aAAD,CAACC,YAAD,EAAA,QAAA,CAAA;AAAcd,IAAAA,MAAM,EAAEA,MAAtB;AAA8BC,IAAAA,GAAG,EAAEA,GAAAA;AAAnC,GAA4CC,EAAAA,IAA5C,CACGH,EAAAA,QADH,CADF,CAAA;AAKD;;;;"}
|
|
@@ -7,5 +7,7 @@ declare type NextIntlMiddlewareConfig = {
|
|
|
7
7
|
domain: string;
|
|
8
8
|
defaultLocale: string;
|
|
9
9
|
}>;
|
|
10
|
+
/** Sets the `Link` response header to notify search engines about content in other languages (defaults to `true`). See https://developers.google.com/search/docs/specialty/international/localized-versions#http */
|
|
11
|
+
alternateLinks?: boolean;
|
|
10
12
|
};
|
|
11
13
|
export default NextIntlMiddlewareConfig;
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NextIntlMiddlewareConfig.js","sourceRoot":"","sources":["../../../src/middleware/NextIntlMiddlewareConfig.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function getHost(requestHeaders: Headers): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getHost.js","sourceRoot":"","sources":["../../../src/middleware/getHost.tsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,cAAuB;IACrD,OAAO,CACL,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACtC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,SAAS,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './middleware';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
-
import NextIntlMiddlewareConfig from './
|
|
3
|
-
export default function createIntlMiddleware(config: NextIntlMiddlewareConfig): (request: NextRequest) => NextResponse;
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import NextIntlMiddlewareConfig from './NextIntlMiddlewareConfig';
|
|
3
|
+
export default function createIntlMiddleware(config: NextIntlMiddlewareConfig): (request: NextRequest) => NextResponse;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { NextResponse } from 'next/server';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import { COOKIE_LOCALE_NAME, HEADER_LOCALE_NAME } from '../shared/constants';
|
|
3
|
+
import resolveLocale from './resolveLocale';
|
|
4
|
+
import setAlternateLinksHeader from './setAlternateLinksHeader';
|
|
4
5
|
const ROOT_URL = '/';
|
|
5
6
|
export default function createIntlMiddleware(config) {
|
|
6
7
|
return function middleware(request) {
|
|
7
|
-
// Ideally we could use the `headers()` and `cookies()` API here
|
|
8
|
-
// as well, but they are currently not available in middleware.
|
|
9
8
|
const { domain, locale } = resolveLocale(config, request.headers, request.cookies, request.nextUrl.pathname);
|
|
10
9
|
const isRoot = request.nextUrl.pathname === ROOT_URL;
|
|
11
10
|
const hasOutdatedCookie = request.cookies.get(COOKIE_LOCALE_NAME)?.value !== locale;
|
|
@@ -76,6 +75,9 @@ export default function createIntlMiddleware(config) {
|
|
|
76
75
|
if (hasOutdatedCookie) {
|
|
77
76
|
response.cookies.set(COOKIE_LOCALE_NAME, locale);
|
|
78
77
|
}
|
|
78
|
+
if ((config.alternateLinks ?? true) && config.locales.length > 1) {
|
|
79
|
+
setAlternateLinksHeader(config, request, response);
|
|
80
|
+
}
|
|
79
81
|
return response;
|
|
80
82
|
};
|
|
81
83
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/middleware/middleware.tsx"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { match } from '@formatjs/intl-localematcher';
|
|
2
2
|
import Negotiator from 'negotiator';
|
|
3
3
|
import { COOKIE_LOCALE_NAME } from '../shared/constants';
|
|
4
|
+
import getHost from './getHost';
|
|
4
5
|
function findLocaleDomain(requestHeaders, i18n) {
|
|
5
|
-
let host = requestHeaders
|
|
6
|
-
requestHeaders.get('host') ??
|
|
7
|
-
undefined;
|
|
6
|
+
let host = getHost(requestHeaders);
|
|
8
7
|
// Remove port
|
|
9
8
|
host = host?.replace(/:\d+$/, '');
|
|
10
9
|
// Consider optional www subdomain
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveLocale.js","sourceRoot":"","sources":["../../../src/middleware/resolveLocale.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,8BAA8B,CAAC;AACnD,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAEvD,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,SAAS,gBAAgB,CACvB,cAAuB,EACvB,IAA8B;IAE9B,IAAI,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,cAAc;IACd,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAElC,kCAAkC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5C,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACjC,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,CAAC,GAAG,EAAE,EAAC,GAAG,GAAG,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,IAAI,OAAO,EAAE;QACnB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;KACf;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,IAA8B,EAC9B,cAAuB,EACvB,cAA8B,EAC9B,QAAgB;IAEhB,IAAI,MAAM,EAAE,MAAM,CAAC;IAEnB,2BAA2B;IAC3B,IAAI,QAAQ,EAAE;QACZ,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAClC,MAAM,GAAG,OAAO,CAAC;aAClB;SACF;KACF;IAED,uBAAuB;IACvB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;QAC3B,MAAM,GAAG,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEhD,IAAI,MAAM,EAAE;YACV,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;SAC/B;KACF;IAED,8BAA8B;IAC9B,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE;QAC7B,IAAI,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;YAC1C,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC;SACxD;KACF;IAED,2CAA2C;IAC3C,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE;QAC7B,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC;YAC/B,OAAO,EAAE;gBACP,iBAAiB,EAAE,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,SAAS;aACtE;SACF,CAAC,CAAC,SAAS,EAAE,CAAC;QACf,IAAI;YACF,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SAC7D;QAAC,OAAO,CAAC,EAAE;YACV,mBAAmB;SACpB;KACF;IAED,6BAA6B;IAC7B,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import NextIntlMiddlewareConfig from './NextIntlMiddlewareConfig';
|
|
3
|
+
/**
|
|
4
|
+
* See https://developers.google.com/search/docs/specialty/international/localized-versions
|
|
5
|
+
*/
|
|
6
|
+
export default function setAlternateLinksHeader(config: NextIntlMiddlewareConfig, request: NextRequest, response: NextResponse): void;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
function getUnprefixedPathname(config, request) {
|
|
2
|
+
const url = new URL(request.url);
|
|
3
|
+
if (!url.pathname.endsWith('/')) {
|
|
4
|
+
url.pathname += '/';
|
|
5
|
+
}
|
|
6
|
+
url.pathname = url.pathname.replace(new RegExp(`^/(${config.locales.join('|')})/`), '/');
|
|
7
|
+
// Remove trailing slash
|
|
8
|
+
if (url.pathname !== '/') {
|
|
9
|
+
url.pathname = url.pathname.slice(0, -1);
|
|
10
|
+
}
|
|
11
|
+
return url.toString();
|
|
12
|
+
}
|
|
13
|
+
function getAlternateEntry(url, locale) {
|
|
14
|
+
return `<${url}>; rel="alternate"; hreflang="${locale}"`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* See https://developers.google.com/search/docs/specialty/international/localized-versions
|
|
18
|
+
*/
|
|
19
|
+
export default function setAlternateLinksHeader(config, request, response) {
|
|
20
|
+
const unprefixedPathname = getUnprefixedPathname(config, request);
|
|
21
|
+
const links = config.locales.flatMap((locale) => {
|
|
22
|
+
function localizePathname(url) {
|
|
23
|
+
if (url.pathname === '/') {
|
|
24
|
+
url.pathname = `/${locale}`;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
url.pathname = `/${locale}${url.pathname}`;
|
|
28
|
+
}
|
|
29
|
+
return url;
|
|
30
|
+
}
|
|
31
|
+
let url;
|
|
32
|
+
const domainConfigs = config.domains?.filter((cur) => cur.defaultLocale === locale) || [];
|
|
33
|
+
if (domainConfigs.length > 1) {
|
|
34
|
+
// Prio 1: Configured domain(s)
|
|
35
|
+
return domainConfigs.map((domainConfig) => {
|
|
36
|
+
url = new URL(unprefixedPathname);
|
|
37
|
+
url.host = domainConfig.domain;
|
|
38
|
+
return getAlternateEntry(url.toString(), locale);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// Prio 2: Prefixed route
|
|
43
|
+
url = new URL(unprefixedPathname);
|
|
44
|
+
localizePathname(url);
|
|
45
|
+
}
|
|
46
|
+
return getAlternateEntry(url.toString(), locale);
|
|
47
|
+
});
|
|
48
|
+
links.push(getAlternateEntry(unprefixedPathname, 'x-default'));
|
|
49
|
+
response.headers.set('Link', links.join(', '));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=setAlternateLinksHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setAlternateLinksHeader.js","sourceRoot":"","sources":["../../../src/middleware/setAlternateLinksHeader.tsx"],"names":[],"mappings":"AAGA,SAAS,qBAAqB,CAC5B,MAAgC,EAChC,OAAoB;IAEpB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC/B,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC;KACrB;IAED,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CACjC,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAC9C,GAAG,CACJ,CAAC;IAEF,wBAAwB;IACxB,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE;QACxB,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC1C;IAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,MAAc;IACpD,OAAO,IAAI,GAAG,iCAAiC,MAAM,GAAG,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,MAAgC,EAChC,OAAoB,EACpB,QAAsB;IAEtB,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9C,SAAS,gBAAgB,CAAC,GAAQ;YAChC,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE;gBACxB,GAAG,CAAC,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAC;aAC7B;iBAAM;gBACL,GAAG,CAAC,QAAQ,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;aAC5C;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,GAAG,CAAC;QAER,MAAM,aAAa,GACjB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QAEtE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,+BAA+B;YAC/B,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;gBACxC,GAAG,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAClC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC;gBAC/B,OAAO,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,yBAAyB;YACzB,GAAG,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAClC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SACvB;QAED,OAAO,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC;IAE/D,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "next-intl",
|
|
3
|
-
"version": "2.11.0-beta.
|
|
3
|
+
"version": "2.11.0-beta.14",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"author": "Jan Amann <jan@amann.work>",
|
|
6
6
|
"description": "A minimal, but complete solution for internationalization in Next.js apps.",
|
|
@@ -30,16 +30,14 @@
|
|
|
30
30
|
"./server": "./dist/src/server/index.js",
|
|
31
31
|
"./client": "./dist/src/client/index.js",
|
|
32
32
|
"./config": "./config.js",
|
|
33
|
-
"./middleware": "./dist/src/middleware.js",
|
|
33
|
+
"./middleware": "./dist/src/middleware/index.js",
|
|
34
34
|
"./withNextIntl": "./withNextIntl.js",
|
|
35
35
|
"./plugin": "./plugin.js"
|
|
36
36
|
},
|
|
37
37
|
"files": [
|
|
38
38
|
"dist",
|
|
39
39
|
"src",
|
|
40
|
-
"server.js",
|
|
41
40
|
"server.d.ts",
|
|
42
|
-
"client.js",
|
|
43
41
|
"client.d.ts",
|
|
44
42
|
"config.js",
|
|
45
43
|
"middleware.d.ts",
|
|
@@ -7,6 +7,9 @@ type NextIntlMiddlewareConfig = {
|
|
|
7
7
|
|
|
8
8
|
/** Configure a list of domains where the `defaultLocale` is changed (e.g. `es.example.com/about`, `example.fr/about`). Note that the `x-forwarded-host` or alternatively the `host` header will be used to determine the requested domain. */
|
|
9
9
|
domains?: Array<{domain: string; defaultLocale: string}>;
|
|
10
|
+
|
|
11
|
+
/** Sets the `Link` response header to notify search engines about content in other languages (defaults to `true`). See https://developers.google.com/search/docs/specialty/international/localized-versions#http */
|
|
12
|
+
alternateLinks?: boolean;
|
|
10
13
|
};
|
|
11
14
|
|
|
12
15
|
export default NextIntlMiddlewareConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {default} from './middleware';
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import {NextRequest, NextResponse} from 'next/server';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import {COOKIE_LOCALE_NAME, HEADER_LOCALE_NAME} from '../shared/constants';
|
|
3
|
+
import NextIntlMiddlewareConfig from './NextIntlMiddlewareConfig';
|
|
4
|
+
import resolveLocale from './resolveLocale';
|
|
5
|
+
import setAlternateLinksHeader from './setAlternateLinksHeader';
|
|
5
6
|
|
|
6
7
|
const ROOT_URL = '/';
|
|
7
8
|
|
|
8
9
|
export default function createIntlMiddleware(config: NextIntlMiddlewareConfig) {
|
|
9
10
|
return function middleware(request: NextRequest) {
|
|
10
|
-
// Ideally we could use the `headers()` and `cookies()` API here
|
|
11
|
-
// as well, but they are currently not available in middleware.
|
|
12
11
|
const {domain, locale} = resolveLocale(
|
|
13
12
|
config,
|
|
14
13
|
request.headers,
|
|
@@ -95,6 +94,10 @@ export default function createIntlMiddleware(config: NextIntlMiddlewareConfig) {
|
|
|
95
94
|
response.cookies.set(COOKIE_LOCALE_NAME, locale);
|
|
96
95
|
}
|
|
97
96
|
|
|
97
|
+
if ((config.alternateLinks ?? true) && config.locales.length > 1) {
|
|
98
|
+
setAlternateLinksHeader(config, request, response);
|
|
99
|
+
}
|
|
100
|
+
|
|
98
101
|
return response;
|
|
99
102
|
};
|
|
100
103
|
}
|
|
@@ -3,16 +3,13 @@ import Negotiator from 'negotiator';
|
|
|
3
3
|
import {RequestCookies} from 'next/dist/server/web/spec-extension/cookies';
|
|
4
4
|
import {COOKIE_LOCALE_NAME} from '../shared/constants';
|
|
5
5
|
import NextIntlMiddlewareConfig from './NextIntlMiddlewareConfig';
|
|
6
|
+
import getHost from './getHost';
|
|
6
7
|
|
|
7
8
|
function findLocaleDomain(
|
|
8
9
|
requestHeaders: Headers,
|
|
9
10
|
i18n: NextIntlMiddlewareConfig
|
|
10
11
|
) {
|
|
11
|
-
let host =
|
|
12
|
-
requestHeaders.get('x-forwarded-host') ??
|
|
13
|
-
requestHeaders.get('host') ??
|
|
14
|
-
undefined;
|
|
15
|
-
|
|
12
|
+
let host = getHost(requestHeaders);
|
|
16
13
|
// Remove port
|
|
17
14
|
host = host?.replace(/:\d+$/, '');
|
|
18
15
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {NextRequest, NextResponse} from 'next/server';
|
|
2
|
+
import NextIntlMiddlewareConfig from './NextIntlMiddlewareConfig';
|
|
3
|
+
|
|
4
|
+
function getUnprefixedPathname(
|
|
5
|
+
config: NextIntlMiddlewareConfig,
|
|
6
|
+
request: NextRequest
|
|
7
|
+
) {
|
|
8
|
+
const url = new URL(request.url);
|
|
9
|
+
if (!url.pathname.endsWith('/')) {
|
|
10
|
+
url.pathname += '/';
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
url.pathname = url.pathname.replace(
|
|
14
|
+
new RegExp(`^/(${config.locales.join('|')})/`),
|
|
15
|
+
'/'
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
// Remove trailing slash
|
|
19
|
+
if (url.pathname !== '/') {
|
|
20
|
+
url.pathname = url.pathname.slice(0, -1);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return url.toString();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function getAlternateEntry(url: string, locale: string) {
|
|
27
|
+
return `<${url}>; rel="alternate"; hreflang="${locale}"`;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* See https://developers.google.com/search/docs/specialty/international/localized-versions
|
|
32
|
+
*/
|
|
33
|
+
export default function setAlternateLinksHeader(
|
|
34
|
+
config: NextIntlMiddlewareConfig,
|
|
35
|
+
request: NextRequest,
|
|
36
|
+
response: NextResponse
|
|
37
|
+
) {
|
|
38
|
+
const unprefixedPathname = getUnprefixedPathname(config, request);
|
|
39
|
+
|
|
40
|
+
const links = config.locales.flatMap((locale) => {
|
|
41
|
+
function localizePathname(url: URL) {
|
|
42
|
+
if (url.pathname === '/') {
|
|
43
|
+
url.pathname = `/${locale}`;
|
|
44
|
+
} else {
|
|
45
|
+
url.pathname = `/${locale}${url.pathname}`;
|
|
46
|
+
}
|
|
47
|
+
return url;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
let url;
|
|
51
|
+
|
|
52
|
+
const domainConfigs =
|
|
53
|
+
config.domains?.filter((cur) => cur.defaultLocale === locale) || [];
|
|
54
|
+
|
|
55
|
+
if (domainConfigs.length > 1) {
|
|
56
|
+
// Prio 1: Configured domain(s)
|
|
57
|
+
return domainConfigs.map((domainConfig) => {
|
|
58
|
+
url = new URL(unprefixedPathname);
|
|
59
|
+
url.host = domainConfig.domain;
|
|
60
|
+
return getAlternateEntry(url.toString(), locale);
|
|
61
|
+
});
|
|
62
|
+
} else {
|
|
63
|
+
// Prio 2: Prefixed route
|
|
64
|
+
url = new URL(unprefixedPathname);
|
|
65
|
+
localizePathname(url);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return getAlternateEntry(url.toString(), locale);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
links.push(getAlternateEntry(unprefixedPathname, 'x-default'));
|
|
72
|
+
|
|
73
|
+
response.headers.set('Link', links.join(', '));
|
|
74
|
+
}
|
package/client.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './dist/src/client';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NextIntlMiddlewareConfig.js","sourceRoot":"","sources":["../../../src/server/NextIntlMiddlewareConfig.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveLocale.js","sourceRoot":"","sources":["../../../src/server/resolveLocale.tsx"],"names":[],"mappings":"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"}
|
package/server.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './dist/src/server';
|