@better-i18n/next 0.6.3 → 0.7.1
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/__tests__/server-locale-resolution.test.d.ts +2 -0
- package/dist/__tests__/server-locale-resolution.test.d.ts.map +1 -0
- package/dist/__tests__/server-locale-resolution.test.js +71 -0
- package/dist/__tests__/server-locale-resolution.test.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +23 -3
- package/dist/middleware.js.map +1 -1
- package/dist/server.d.ts +11 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +57 -14
- package/dist/server.js.map +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-locale-resolution.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/server-locale-resolution.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from "vitest";
|
|
2
|
+
// Mock modules not available in test environment
|
|
3
|
+
vi.mock("react", () => ({ cache: (fn) => fn }));
|
|
4
|
+
vi.mock("next-intl/server", () => ({ getRequestConfig: (fn) => fn }));
|
|
5
|
+
vi.mock("next/headers", () => ({}));
|
|
6
|
+
// Import after mocks
|
|
7
|
+
const { resolveLocaleFromRequest } = await import("../server.js");
|
|
8
|
+
// ─── Test fixtures ──────────────────────────────────────────────────
|
|
9
|
+
const LOCALES = ["en", "tr", "de"];
|
|
10
|
+
const DEFAULT_LOCALE = "en";
|
|
11
|
+
// ─── URL-based modes ("always" / "as-needed") ───────────────────────
|
|
12
|
+
describe("resolveLocaleFromRequest — URL-based modes", () => {
|
|
13
|
+
it.each(["always", "as-needed"])("%s: requestLocale valid → uses requestLocale (ignores header & cookie)", (mode) => {
|
|
14
|
+
const result = resolveLocaleFromRequest("de", "tr", // cookie
|
|
15
|
+
"tr", // header
|
|
16
|
+
LOCALES, DEFAULT_LOCALE, mode);
|
|
17
|
+
expect(result).toBe("de");
|
|
18
|
+
});
|
|
19
|
+
it.each(["always", "as-needed"])("%s: requestLocale undefined + header valid → uses header (not cookie)", (mode) => {
|
|
20
|
+
const result = resolveLocaleFromRequest(undefined, "de", // cookie — should be ignored
|
|
21
|
+
"tr", // header — should be used
|
|
22
|
+
LOCALES, DEFAULT_LOCALE, mode);
|
|
23
|
+
expect(result).toBe("tr");
|
|
24
|
+
});
|
|
25
|
+
it.each(["always", "as-needed"])("%s: requestLocale undefined + no header + cookie → defaultLocale (cookie ignored)", (mode) => {
|
|
26
|
+
const result = resolveLocaleFromRequest(undefined, "tr", // cookie — should be ignored
|
|
27
|
+
null, // no header
|
|
28
|
+
LOCALES, DEFAULT_LOCALE, mode);
|
|
29
|
+
expect(result).toBe("en");
|
|
30
|
+
});
|
|
31
|
+
it.each(["always", "as-needed"])("%s: requestLocale undefined + no header + no cookie → defaultLocale", (mode) => {
|
|
32
|
+
const result = resolveLocaleFromRequest(undefined, null, null, LOCALES, DEFAULT_LOCALE, mode);
|
|
33
|
+
expect(result).toBe("en");
|
|
34
|
+
});
|
|
35
|
+
it.each(["always", "as-needed"])("%s: requestLocale invalid + header valid → defaultLocale (requestLocale truthy)", (mode) => {
|
|
36
|
+
const result = resolveLocaleFromRequest("fr", null, "tr", LOCALES, DEFAULT_LOCALE, mode);
|
|
37
|
+
expect(result).toBe("en");
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
// ─── "never" mode (cookie is source of truth) ───────────────────────
|
|
41
|
+
describe('resolveLocaleFromRequest — "never" mode', () => {
|
|
42
|
+
it("requestLocale undefined + cookie valid → cookie fallback", () => {
|
|
43
|
+
const result = resolveLocaleFromRequest(undefined, "tr", // cookie
|
|
44
|
+
null, // header (not used in "never")
|
|
45
|
+
LOCALES, DEFAULT_LOCALE, "never");
|
|
46
|
+
expect(result).toBe("tr");
|
|
47
|
+
});
|
|
48
|
+
it("requestLocale undefined + no cookie → defaultLocale", () => {
|
|
49
|
+
const result = resolveLocaleFromRequest(undefined, null, null, LOCALES, DEFAULT_LOCALE, "never");
|
|
50
|
+
expect(result).toBe("en");
|
|
51
|
+
});
|
|
52
|
+
it("requestLocale undefined + cookie invalid → defaultLocale", () => {
|
|
53
|
+
const result = resolveLocaleFromRequest(undefined, "fr", null, LOCALES, DEFAULT_LOCALE, "never");
|
|
54
|
+
expect(result).toBe("en");
|
|
55
|
+
});
|
|
56
|
+
it("requestLocale valid + cookie valid → requestLocale takes priority", () => {
|
|
57
|
+
const result = resolveLocaleFromRequest("de", "tr", null, LOCALES, DEFAULT_LOCALE, "never");
|
|
58
|
+
expect(result).toBe("de");
|
|
59
|
+
});
|
|
60
|
+
it("requestLocale invalid + cookie valid → defaultLocale (requestLocale truthy, cookie not checked)", () => {
|
|
61
|
+
const result = resolveLocaleFromRequest("fr", "tr", null, LOCALES, DEFAULT_LOCALE, "never");
|
|
62
|
+
expect(result).toBe("en");
|
|
63
|
+
});
|
|
64
|
+
it("cookie is used over header in never mode", () => {
|
|
65
|
+
const result = resolveLocaleFromRequest(undefined, "tr", // cookie — used in "never"
|
|
66
|
+
"de", // header — ignored in "never"
|
|
67
|
+
LOCALES, DEFAULT_LOCALE, "never");
|
|
68
|
+
expect(result).toBe("tr");
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=server-locale-resolution.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-locale-resolution.test.js","sourceRoot":"","sources":["../../src/__tests__/server-locale-resolution.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -66,6 +66,5 @@ export { BetterI18nProvider, useManifestLanguages, useSetLocale } from "./client
|
|
|
66
66
|
export type { BetterI18nProviderProps } from "./client.js";
|
|
67
67
|
export type { I18nConfig, LanguageOption, Locale, LocalePrefix, LogLevel, ManifestLanguage, ManifestResponse, Messages, } from "./types.js";
|
|
68
68
|
export type { I18nMiddlewareConfig } from "@better-i18n/core";
|
|
69
|
-
export { createRevalidateHandler } from "./revalidate.js";
|
|
70
69
|
export type { RevalidateHandlerOptions, WebhookPayload } from "./revalidate.js";
|
|
71
70
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,OAAO,EAGL,0BAA0B,EAC1B,iBAAiB,EACjB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU;;;IAOzC,0EAA0E;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,OAAO,EAGL,0BAA0B,EAC1B,iBAAiB,EACjB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU;;;IAOzC,0EAA0E;;;;oBAuEslC,CAAC;;;;IAhEjqC;;;;;;;;;;;;;;;;;OAiBG;kCAC2B,kBAAkB;CAgBnD,CAAC;AAGF,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D,YAAY,EACV,UAAU,EACV,cAAc,EACd,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,YAAY,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -79,6 +79,4 @@ export { createBetterI18nMiddleware, composeMiddleware };
|
|
|
79
79
|
export { createNextI18nCore } from "./server.js";
|
|
80
80
|
// Client hooks & provider
|
|
81
81
|
export { BetterI18nProvider, useManifestLanguages, useSetLocale } from "./client.js";
|
|
82
|
-
// Webhook revalidation handler
|
|
83
|
-
export { createRevalidateHandler } from "./revalidate.js";
|
|
84
82
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAkB,EAAE,EAAE;IAC/C,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE5C,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,2BAA2B,CAAC,UAAU,CAAC;QACtD,0EAA0E;QAC1E,UAAU,EAAE,oBAAoB,CAAC,UAAU,CAAC;QAC5C,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAE7B;;;;;;;;;;;;;;;;;WAiBG;QACH,gBAAgB,EAAE,CAAC,QAA6B,EAAE,EAAE;YAClD,OAAO,0BAA0B,CAC/B;gBACE,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,SAAS,EAAE;oBACT,MAAM,EAAE,IAAI;oBACZ,eAAe,EAAE,IAAI;oBACrB,UAAU,EAAE,UAAU,CAAC,UAAU;iBAClC;aACF,EACD,QAAQ,CACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,uCAAuC;AACvC,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;AAGzD,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,0BAA0B;AAC1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAkB,EAAE,EAAE;IAC/C,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE5C,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,2BAA2B,CAAC,UAAU,CAAC;QACtD,0EAA0E;QAC1E,UAAU,EAAE,oBAAoB,CAAC,UAAU,CAAC;QAC5C,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAE7B;;;;;;;;;;;;;;;;;WAiBG;QACH,gBAAgB,EAAE,CAAC,QAA6B,EAAE,EAAE;YAClD,OAAO,0BAA0B,CAC/B;gBACE,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,SAAS,EAAE;oBACT,MAAM,EAAE,IAAI;oBACZ,eAAe,EAAE,IAAI;oBACrB,UAAU,EAAE,UAAU,CAAC,UAAU;iBAClC;aACF,EACD,QAAQ,CACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,uCAAuC;AACvC,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;AAGzD,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,0BAA0B;AAC1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/middleware.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,MAIpB,SAAS,WAAW,mCAYtD,CAAC;AAEF,eAAO,MAAM,eAAe,WAlBiB,UAAU,MAIpB,SAAS,WAAW,mCAcJ,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE,kBAAkB,IAkBf,SAAS,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,MAIpB,SAAS,WAAW,mCAYtD,CAAC;AAEF,eAAO,MAAM,eAAe,WAlBiB,UAAU,MAIpB,SAAS,WAAW,mCAcJ,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE,kBAAkB,IAkBf,SAAS,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC,CAoH3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,IAUpD,SAAS,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC,CA0B3D"}
|
package/dist/middleware.js
CHANGED
|
@@ -101,7 +101,9 @@ export function createBetterI18nMiddleware(config, callback) {
|
|
|
101
101
|
response = NextResponse.rewrite(rewriteUrl, { request: { headers } });
|
|
102
102
|
}
|
|
103
103
|
else {
|
|
104
|
-
// 3b. URL-based modes: delegate to next-intl middleware
|
|
104
|
+
// 3b. URL-based modes: delegate to next-intl middleware for routing,
|
|
105
|
+
// then inject x-better-i18n-locale as a REQUEST header so it's available
|
|
106
|
+
// via headers() in server components (getRequestConfig fallback).
|
|
105
107
|
const localesKey = availableLocales.join(",");
|
|
106
108
|
if (!cachedMiddleware || cachedLocalesKey !== localesKey) {
|
|
107
109
|
cachedMiddleware = createMiddleware({
|
|
@@ -111,9 +113,27 @@ export function createBetterI18nMiddleware(config, callback) {
|
|
|
111
113
|
});
|
|
112
114
|
cachedLocalesKey = localesKey;
|
|
113
115
|
}
|
|
114
|
-
|
|
116
|
+
const intlResponse = cachedMiddleware(request);
|
|
117
|
+
if (intlResponse.status >= 300) {
|
|
118
|
+
// Redirect — pass through as-is, no header injection needed
|
|
119
|
+
response = intlResponse;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// Non-redirect: wrap with request headers so server components can
|
|
123
|
+
// read the locale via headers() when requestLocale is undefined
|
|
124
|
+
const requestHeaders = new Headers(request.headers);
|
|
125
|
+
requestHeaders.set("x-better-i18n-locale", detectedLocale);
|
|
126
|
+
response = NextResponse.next({ request: { headers: requestHeaders } });
|
|
127
|
+
// Preserve response headers and cookies from next-intl middleware
|
|
128
|
+
intlResponse.headers.forEach((value, key) => {
|
|
129
|
+
response.headers.set(key, value);
|
|
130
|
+
});
|
|
131
|
+
intlResponse.cookies.getAll().forEach((c) => {
|
|
132
|
+
response.cookies.set(c.name, c.value);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
115
135
|
}
|
|
116
|
-
// 4. Add x-locale header for backwards compatibility
|
|
136
|
+
// 4. Add x-locale response header for backwards compatibility
|
|
117
137
|
response.headers.set("x-locale", detectedLocale);
|
|
118
138
|
// 5. Set our custom cookie if needed
|
|
119
139
|
if (cookie && result.shouldSetCookie) {
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -30,6 +30,17 @@ export interface NextI18nCore extends I18nCore {
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
export declare const createNextI18nCore: (config: I18nConfig) => NextI18nCore;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the active locale from request context.
|
|
35
|
+
*
|
|
36
|
+
* Pure helper — no Next.js runtime deps, easy to unit-test.
|
|
37
|
+
*
|
|
38
|
+
* Cookie fallback is ONLY used in "never" mode where cookie is the source of
|
|
39
|
+
* truth. In URL-based modes ("always" / "as-needed") requestLocale undefined
|
|
40
|
+
* (ISR revalidation, build-time static generation) must NOT fall back to cookie
|
|
41
|
+
* — otherwise a stale cookie overrides the URL locale.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveLocaleFromRequest(requestLocale: string | undefined, cookieLocale: string | null | undefined, cachedLocale: string | null | undefined, locales: string[], defaultLocale: string, localePrefix: "always" | "as-needed" | "never"): string;
|
|
33
44
|
/**
|
|
34
45
|
* Create next-intl request config for App Router
|
|
35
46
|
*
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAC;AASnE;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C;;OAEG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACpD;AAeD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,UAAU,KAAG,YA0CvD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,GAC7C,MAAM,CA0BR;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2BAA2B,GAAI,QAAQ,UAAU,gKAkD1D,CAAC;AAIL;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,UAAU,0DACN,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,UAAU,EAAE,UAAU;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,0DACnC,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU,sBACJ,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,UAAU,EAAE,QAAQ,MAAM,sBACd,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,0DACZ,CAAC;AAG5C,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import { cache } from "react";
|
|
1
2
|
import { getRequestConfig } from "next-intl/server";
|
|
2
|
-
import { cookies } from "next/headers";
|
|
3
3
|
import { createI18nCore } from "@better-i18n/core";
|
|
4
4
|
import { normalizeConfig } from "./config.js";
|
|
5
|
+
/**
|
|
6
|
+
* Per-request locale cache using React's `cache()`.
|
|
7
|
+
* The first getRequestConfig call resolves requestLocale (e.g. "tr" from middleware).
|
|
8
|
+
* The second call in the same request may receive undefined — this cache bridges them.
|
|
9
|
+
*/
|
|
10
|
+
const getRequestLocaleCache = cache(() => ({ locale: undefined }));
|
|
5
11
|
/**
|
|
6
12
|
* Create a fetch function with Next.js ISR revalidation
|
|
7
13
|
*/
|
|
@@ -72,6 +78,41 @@ export const createNextI18nCore = (config) => {
|
|
|
72
78
|
getMessages: (locale) => messagesCore.getMessages(locale),
|
|
73
79
|
};
|
|
74
80
|
};
|
|
81
|
+
/**
|
|
82
|
+
* Resolve the active locale from request context.
|
|
83
|
+
*
|
|
84
|
+
* Pure helper — no Next.js runtime deps, easy to unit-test.
|
|
85
|
+
*
|
|
86
|
+
* Cookie fallback is ONLY used in "never" mode where cookie is the source of
|
|
87
|
+
* truth. In URL-based modes ("always" / "as-needed") requestLocale undefined
|
|
88
|
+
* (ISR revalidation, build-time static generation) must NOT fall back to cookie
|
|
89
|
+
* — otherwise a stale cookie overrides the URL locale.
|
|
90
|
+
*/
|
|
91
|
+
export function resolveLocaleFromRequest(requestLocale, cookieLocale, cachedLocale, locales, defaultLocale, localePrefix) {
|
|
92
|
+
let locale = requestLocale;
|
|
93
|
+
if (!locale) {
|
|
94
|
+
if (localePrefix === "never") {
|
|
95
|
+
// "never" mode: cookie is source of truth
|
|
96
|
+
if (cookieLocale && locales.includes(cookieLocale)) {
|
|
97
|
+
locale = cookieLocale;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// URL-based modes ("always" / "as-needed"): use per-request cached locale
|
|
102
|
+
// from the first getRequestConfig call. This covers cases where requestLocale
|
|
103
|
+
// is undefined (secondary render passes) without falling back to cookie
|
|
104
|
+
// — which could differ from the URL locale.
|
|
105
|
+
if (cachedLocale && locales.includes(cachedLocale)) {
|
|
106
|
+
locale = cachedLocale;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Final fallback to defaultLocale
|
|
111
|
+
if (!locale || !locales.includes(locale)) {
|
|
112
|
+
locale = defaultLocale;
|
|
113
|
+
}
|
|
114
|
+
return locale;
|
|
115
|
+
}
|
|
75
116
|
/**
|
|
76
117
|
* Create next-intl request config for App Router
|
|
77
118
|
*
|
|
@@ -90,26 +131,28 @@ export const createNextIntlRequestConfig = (config) => getRequestConfig(async ({
|
|
|
90
131
|
const i18n = createNextI18nCore(config);
|
|
91
132
|
const normalized = normalizeConfig(config);
|
|
92
133
|
const locales = await i18n.getLocales();
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
|
|
134
|
+
const resolvedRequestLocale = await requestLocale;
|
|
135
|
+
// Per-request cache: the first getRequestConfig call receives requestLocale
|
|
136
|
+
// from middleware (e.g. "tr"). The second call in the same request may
|
|
137
|
+
// receive undefined. Cache bridges them so both resolve to the same locale.
|
|
138
|
+
const localeCache = getRequestLocaleCache();
|
|
139
|
+
if (resolvedRequestLocale && locales.includes(resolvedRequestLocale)) {
|
|
140
|
+
localeCache.locale = resolvedRequestLocale;
|
|
141
|
+
}
|
|
142
|
+
const cachedLocale = localeCache.locale;
|
|
143
|
+
let cookieLocale = null;
|
|
144
|
+
if (normalized.localePrefix === "never") {
|
|
145
|
+
// "never" mode: cookie is the source of truth
|
|
98
146
|
try {
|
|
147
|
+
const { cookies } = await import("next/headers");
|
|
99
148
|
const cookieStore = await cookies();
|
|
100
|
-
|
|
101
|
-
if (cookieLocale && locales.includes(cookieLocale)) {
|
|
102
|
-
locale = cookieLocale;
|
|
103
|
-
}
|
|
149
|
+
cookieLocale = cookieStore.get(normalized.cookieName)?.value ?? null;
|
|
104
150
|
}
|
|
105
151
|
catch {
|
|
106
152
|
// cookies() throws in non-request contexts (e.g. build time)
|
|
107
153
|
}
|
|
108
154
|
}
|
|
109
|
-
|
|
110
|
-
if (!locale || !locales.includes(locale)) {
|
|
111
|
-
locale = normalized.defaultLocale;
|
|
112
|
-
}
|
|
155
|
+
const locale = resolveLocaleFromRequest(resolvedRequestLocale, cookieLocale, cachedLocale, locales, normalized.defaultLocale, normalized.localePrefix);
|
|
113
156
|
// Resolve timeZone: explicit config > runtime auto-detection.
|
|
114
157
|
// Setting this explicitly avoids next-intl's ENVIRONMENT_FALLBACK warning
|
|
115
158
|
// and prevents server/client hydration mismatches for date/time formatting.
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@better-i18n/next",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Better-i18n Next.js integration",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
"bun": "./src/proxy.ts",
|
|
42
42
|
"default": "./dist/proxy.js"
|
|
43
43
|
},
|
|
44
|
+
"./revalidate": {
|
|
45
|
+
"types": "./dist/revalidate.d.ts",
|
|
46
|
+
"bun": "./src/revalidate.ts",
|
|
47
|
+
"default": "./dist/revalidate.js"
|
|
48
|
+
},
|
|
44
49
|
"./package.json": "./package.json"
|
|
45
50
|
},
|
|
46
51
|
"files": [
|
|
@@ -65,7 +70,7 @@
|
|
|
65
70
|
"prepublishOnly": "bun run build"
|
|
66
71
|
},
|
|
67
72
|
"dependencies": {
|
|
68
|
-
"@better-i18n/core": "0.
|
|
73
|
+
"@better-i18n/core": "0.4.0",
|
|
69
74
|
"@floating-ui/react": "^0.27.19"
|
|
70
75
|
},
|
|
71
76
|
"peerDependencies": {
|