@better-i18n/next 0.6.2 → 0.7.0
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/client.d.ts.map +1 -1
- package/dist/client.js +47 -9
- package/dist/client.js.map +1 -1
- 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 +39 -8
- 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 +6 -1
|
@@ -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/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAkC7C,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,EAAE,QAAQ,CAAC;IACnB,gEAAgE;IAChE,MAAM,EAAE,UAAU,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,eAAe,EACzB,MAAM,EACN,QAAQ,EAAE,YAAY,EACtB,QAAQ,GACT,EAAE,uBAAuB,2CA8EzB;AAID,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAcF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,KAAG,0BAoFzD,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAiB1E;AAmCD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC"}
|
package/dist/client.js
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { createContext, useCallback, useContext, useEffect, useMemo, useState, } from "react";
|
|
4
|
-
import { useRouter } from "next/navigation";
|
|
4
|
+
import { useRouter, usePathname } from "next/navigation";
|
|
5
5
|
import { NextIntlClientProvider } from "next-intl";
|
|
6
6
|
import { createI18nCore } from "@better-i18n/core";
|
|
7
7
|
import { normalizeConfig } from "./config.js";
|
|
8
|
+
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
9
|
+
function buildLocalePath(pathname, currentLocale, newLocale, defaultLocale, localePrefix) {
|
|
10
|
+
if (localePrefix === "always") {
|
|
11
|
+
const rest = pathname.replace(new RegExp(`^/${currentLocale}(/|$)`), "/");
|
|
12
|
+
return `/${newLocale}${rest === "/" ? "" : rest}`;
|
|
13
|
+
}
|
|
14
|
+
// "as-needed": default locale has no prefix, others do
|
|
15
|
+
const currentIsDefault = currentLocale === defaultLocale;
|
|
16
|
+
const newIsDefault = newLocale === defaultLocale;
|
|
17
|
+
if (currentIsDefault) {
|
|
18
|
+
return newIsDefault ? pathname : `/${newLocale}${pathname}`;
|
|
19
|
+
}
|
|
20
|
+
const rest = pathname.replace(new RegExp(`^/${currentLocale}(/|$)`), "/");
|
|
21
|
+
const clean = rest === "/" ? "" : rest;
|
|
22
|
+
return newIsDefault ? (clean || "/") : `/${newLocale}${clean}`;
|
|
23
|
+
}
|
|
8
24
|
const BetterI18nContext = createContext(null);
|
|
9
25
|
/**
|
|
10
26
|
* Provider that wraps `NextIntlClientProvider` and enables instant locale
|
|
@@ -51,9 +67,12 @@ export function BetterI18nProvider({ locale: initialLocale, messages: initialMes
|
|
|
51
67
|
config.staticData,
|
|
52
68
|
config.fetchTimeout,
|
|
53
69
|
config.retryCount,
|
|
70
|
+
config.localePrefix,
|
|
54
71
|
]);
|
|
55
72
|
// Provider-level memoized core instance — reused by setLocale
|
|
56
73
|
const i18nCore = useMemo(() => createI18nCore(normalized), [normalized]);
|
|
74
|
+
const router = useRouter();
|
|
75
|
+
const pathname = usePathname();
|
|
57
76
|
const [locale, setLocaleState] = useState(initialLocale);
|
|
58
77
|
const [messages, setMessages] = useState(initialMessages);
|
|
59
78
|
// Sync with server-provided values when they change (e.g. navigation to a new page)
|
|
@@ -72,13 +91,20 @@ export function BetterI18nProvider({ locale: initialLocale, messages: initialMes
|
|
|
72
91
|
// 3. Instant client-side update — no server round-trip
|
|
73
92
|
setLocaleState(newLocale);
|
|
74
93
|
setMessages(newMessages);
|
|
94
|
+
// 4. Sync server components via navigation or refresh
|
|
95
|
+
if (normalized.localePrefix === "never") {
|
|
96
|
+
router.refresh();
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const newPath = buildLocalePath(pathname, locale, newLocale, normalized.defaultLocale, normalized.localePrefix);
|
|
100
|
+
router.replace(newPath);
|
|
101
|
+
}
|
|
75
102
|
}
|
|
76
103
|
catch (err) {
|
|
77
|
-
console.error("[better-i18n] Client-side locale switch failed
|
|
78
|
-
// Fallback: let the server handle it
|
|
104
|
+
console.error("[better-i18n] Client-side locale switch failed:", err);
|
|
79
105
|
window.location.reload();
|
|
80
106
|
}
|
|
81
|
-
}, [locale, normalized.cookieName, i18nCore]);
|
|
107
|
+
}, [locale, normalized.cookieName, normalized.localePrefix, normalized.defaultLocale, i18nCore, router, pathname]);
|
|
82
108
|
return (_jsx(BetterI18nContext.Provider, { value: { setLocale }, children: _jsx(NextIntlClientProvider, { locale: locale, messages: messages, timeZone: timeZone, children: children }) }));
|
|
83
109
|
}
|
|
84
110
|
// Client-side request deduplication cache
|
|
@@ -216,18 +242,30 @@ export function useSetLocale(config) {
|
|
|
216
242
|
}
|
|
217
243
|
return useStandaloneSetLocale(config);
|
|
218
244
|
}
|
|
219
|
-
/** Internal standalone hook — cookie +
|
|
245
|
+
/** Internal standalone hook — cookie + URL navigation (or refresh for "never") */
|
|
220
246
|
function useStandaloneSetLocale(config) {
|
|
221
247
|
const normalized = useMemo(() => normalizeConfig(config), [
|
|
222
248
|
config.project,
|
|
223
249
|
config.defaultLocale,
|
|
224
250
|
config.cookieName,
|
|
251
|
+
config.localePrefix,
|
|
225
252
|
]);
|
|
226
253
|
const router = useRouter();
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
254
|
+
const pathname = usePathname();
|
|
255
|
+
return useCallback((newLocale) => {
|
|
256
|
+
document.cookie = `${normalized.cookieName}=${newLocale}; path=/; max-age=31536000; samesite=lax`;
|
|
257
|
+
if (normalized.localePrefix === "never") {
|
|
258
|
+
router.refresh();
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
// Detect current locale from URL segment
|
|
262
|
+
const segment = pathname.split("/")[1] || "";
|
|
263
|
+
const currentLocale = /^[a-z]{2,3}(-[a-z]{2,4})?$/i.test(segment)
|
|
264
|
+
? segment : normalized.defaultLocale;
|
|
265
|
+
const newPath = buildLocalePath(pathname, currentLocale, newLocale, normalized.defaultLocale, normalized.localePrefix);
|
|
266
|
+
router.replace(newPath);
|
|
267
|
+
}
|
|
268
|
+
}, [normalized.cookieName, normalized.localePrefix, normalized.defaultLocale, router, pathname]);
|
|
231
269
|
}
|
|
232
270
|
// ─── LocaleDropdown ──────────────────────────────────────────────────
|
|
233
271
|
export { LocaleDropdown } from "./components/locale-dropdown.js";
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,GAET,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.tsx"],"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;;;;oBAuE84B,CAAC;;;;IAhEz9B;;;;;;;;;;;;;;;;;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
|
@@ -83,14 +83,27 @@ export function createBetterI18nMiddleware(config, callback) {
|
|
|
83
83
|
const detectedLocale = result.locale;
|
|
84
84
|
let response;
|
|
85
85
|
if (localePrefix === "never") {
|
|
86
|
-
// 3a. "never" mode:
|
|
87
|
-
//
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
// 3a. "never" mode: replicate next-intl's exact rewrite mechanism.
|
|
87
|
+
// - new URL() instead of nextUrl.clone() — NextURL internal state breaks rewrite
|
|
88
|
+
// - Headers via { request: { headers } } — response.headers don't reach page handler
|
|
89
|
+
// - X-NEXT-INTL-LOCALE header — getRequestConfig reads this to determine locale
|
|
90
|
+
let pathname = request.nextUrl.pathname;
|
|
91
|
+
// Guard: if URL accidentally contains a locale prefix (e.g. /tr/about),
|
|
92
|
+
// strip it and redirect — prevents double-prefix rewrite bug
|
|
93
|
+
const firstSegment = pathname.split("/")[1];
|
|
94
|
+
if (firstSegment && availableLocales.includes(firstSegment)) {
|
|
95
|
+
const strippedPath = pathname.slice(firstSegment.length + 1) || "/";
|
|
96
|
+
return NextResponse.redirect(new URL(`${strippedPath}${request.nextUrl.search}`, request.url));
|
|
97
|
+
}
|
|
98
|
+
const rewriteUrl = new URL(`/${detectedLocale}${pathname}${request.nextUrl.search}`, request.url);
|
|
99
|
+
const headers = new Headers(request.headers);
|
|
100
|
+
headers.set("X-NEXT-INTL-LOCALE", detectedLocale);
|
|
101
|
+
response = NextResponse.rewrite(rewriteUrl, { request: { headers } });
|
|
91
102
|
}
|
|
92
103
|
else {
|
|
93
|
-
// 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).
|
|
94
107
|
const localesKey = availableLocales.join(",");
|
|
95
108
|
if (!cachedMiddleware || cachedLocalesKey !== localesKey) {
|
|
96
109
|
cachedMiddleware = createMiddleware({
|
|
@@ -100,9 +113,27 @@ export function createBetterI18nMiddleware(config, callback) {
|
|
|
100
113
|
});
|
|
101
114
|
cachedLocalesKey = localesKey;
|
|
102
115
|
}
|
|
103
|
-
|
|
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
|
+
}
|
|
104
135
|
}
|
|
105
|
-
// 4. Add x-locale header for backwards compatibility
|
|
136
|
+
// 4. Add x-locale response header for backwards compatibility
|
|
106
137
|
response.headers.set("x-locale", detectedLocale);
|
|
107
138
|
// 5. Set our custom cookie if needed
|
|
108
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.0",
|
|
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": [
|