@better-i18n/next 0.3.0 → 0.4.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/package.json +1 -1
- package/src/index.ts +44 -1
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
createI18nProxy,
|
|
10
10
|
createBetterI18nMiddleware,
|
|
11
11
|
composeMiddleware,
|
|
12
|
+
type MiddlewareCallback,
|
|
12
13
|
} from "./middleware";
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -22,13 +23,21 @@ import {
|
|
|
22
23
|
* export const i18n = createI18n({
|
|
23
24
|
* project: 'acme/dashboard',
|
|
24
25
|
* defaultLocale: 'en',
|
|
26
|
+
* localePrefix: 'always',
|
|
25
27
|
* })
|
|
26
28
|
*
|
|
27
29
|
* // i18n/request.ts
|
|
28
30
|
* export default i18n.requestConfig
|
|
29
31
|
*
|
|
30
|
-
* // middleware.ts
|
|
32
|
+
* // middleware.ts (simple)
|
|
31
33
|
* export default i18n.middleware
|
|
34
|
+
*
|
|
35
|
+
* // middleware.ts (with auth - Clerk-style)
|
|
36
|
+
* export default i18n.betterMiddleware(async (request, { locale }) => {
|
|
37
|
+
* if (needsLogin) {
|
|
38
|
+
* return NextResponse.redirect(new URL(`/${locale}/login`, request.url));
|
|
39
|
+
* }
|
|
40
|
+
* });
|
|
32
41
|
* ```
|
|
33
42
|
*/
|
|
34
43
|
export const createI18n = (config: I18nConfig) => {
|
|
@@ -38,11 +47,45 @@ export const createI18n = (config: I18nConfig) => {
|
|
|
38
47
|
return {
|
|
39
48
|
config: normalized,
|
|
40
49
|
requestConfig: createNextIntlRequestConfig(normalized),
|
|
50
|
+
/** @deprecated Use betterMiddleware() for Clerk-style callback support */
|
|
41
51
|
middleware: createI18nMiddleware(normalized),
|
|
42
52
|
proxy: createI18nProxy(normalized),
|
|
43
53
|
getManifest: i18n.getManifest,
|
|
44
54
|
getLocales: i18n.getLocales,
|
|
45
55
|
getMessages: i18n.getMessages,
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Create middleware with optional Clerk-style callback for auth integration
|
|
59
|
+
*
|
|
60
|
+
* @example Simple usage
|
|
61
|
+
* ```ts
|
|
62
|
+
* export default i18n.betterMiddleware();
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @example With auth callback
|
|
66
|
+
* ```ts
|
|
67
|
+
* export default i18n.betterMiddleware(async (request, { locale, response }) => {
|
|
68
|
+
* if (needsLogin) {
|
|
69
|
+
* return NextResponse.redirect(new URL(`/${locale}/login`, request.url));
|
|
70
|
+
* }
|
|
71
|
+
* // Return nothing = i18n response is used (headers preserved!)
|
|
72
|
+
* });
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
betterMiddleware: (callback?: MiddlewareCallback) => {
|
|
76
|
+
return createBetterI18nMiddleware(
|
|
77
|
+
{
|
|
78
|
+
project: normalized.project,
|
|
79
|
+
defaultLocale: normalized.defaultLocale,
|
|
80
|
+
localePrefix: normalized.localePrefix,
|
|
81
|
+
detection: {
|
|
82
|
+
cookie: true,
|
|
83
|
+
browserLanguage: true,
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
callback
|
|
87
|
+
);
|
|
88
|
+
},
|
|
46
89
|
};
|
|
47
90
|
};
|
|
48
91
|
|