@better-translate/nextjs 1.0.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/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/chunk-VW2LUTE7.js +291 -0
- package/dist/index.cjs +267 -0
- package/dist/index.d.cts +33 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +20 -0
- package/dist/navigation.cjs +374 -0
- package/dist/navigation.d.cts +55 -0
- package/dist/navigation.d.ts +55 -0
- package/dist/navigation.js +163 -0
- package/dist/proxy.cjs +318 -0
- package/dist/proxy.d.cts +11 -0
- package/dist/proxy.d.ts +11 -0
- package/dist/proxy.js +86 -0
- package/dist/server.cjs +121 -0
- package/dist/server.d.cts +30 -0
- package/dist/server.d.ts +30 -0
- package/dist/server.js +98 -0
- package/package.json +67 -0
package/dist/server.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// src/server.ts
|
|
2
|
+
import { cache } from "react";
|
|
3
|
+
import {
|
|
4
|
+
getRequestLocale as getStoredRequestLocale,
|
|
5
|
+
resolveRequestLocale,
|
|
6
|
+
setRequestLocale as setStoredRequestLocale
|
|
7
|
+
} from "@better-translate/core/server";
|
|
8
|
+
function getRequestConfig(factory) {
|
|
9
|
+
return factory;
|
|
10
|
+
}
|
|
11
|
+
function setRequestLocale(locale) {
|
|
12
|
+
setStoredRequestLocale(locale);
|
|
13
|
+
}
|
|
14
|
+
function createServerHelpers(requestConfig) {
|
|
15
|
+
const readRequestConfig = cache(async () => {
|
|
16
|
+
const resolved = await requestConfig();
|
|
17
|
+
const translator = resolved.translator;
|
|
18
|
+
return {
|
|
19
|
+
locale: resolved.locale,
|
|
20
|
+
translator
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
async function getResolvedLocale(options) {
|
|
24
|
+
const { locale: configLocale, translator } = await readRequestConfig();
|
|
25
|
+
return resolveRequestLocale(translator, {
|
|
26
|
+
locale: options?.config?.locale ?? options?.locale,
|
|
27
|
+
requestLocale: getStoredRequestLocale(),
|
|
28
|
+
configLocale
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async function getDirection(options) {
|
|
32
|
+
const [{ translator }, locale] = await Promise.all([
|
|
33
|
+
readRequestConfig(),
|
|
34
|
+
getResolvedLocale(options)
|
|
35
|
+
]);
|
|
36
|
+
return translator.getDirection({
|
|
37
|
+
config: typeof options?.config?.rtl === "boolean" ? {
|
|
38
|
+
rtl: options.config.rtl
|
|
39
|
+
} : void 0,
|
|
40
|
+
locale
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async function isRtl(options) {
|
|
44
|
+
return await getDirection(options) === "rtl";
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
async getAvailableLanguages() {
|
|
48
|
+
return (await readRequestConfig()).translator.getAvailableLanguages();
|
|
49
|
+
},
|
|
50
|
+
getDirection,
|
|
51
|
+
async getLocale() {
|
|
52
|
+
return getResolvedLocale();
|
|
53
|
+
},
|
|
54
|
+
async getMessages() {
|
|
55
|
+
const [{ translator }, locale] = await Promise.all([
|
|
56
|
+
readRequestConfig(),
|
|
57
|
+
getResolvedLocale()
|
|
58
|
+
]);
|
|
59
|
+
const loadedMessages = await translator.loadLocale(locale);
|
|
60
|
+
const cachedMessages = translator.getMessages()[locale];
|
|
61
|
+
if (loadedMessages) {
|
|
62
|
+
return loadedMessages;
|
|
63
|
+
}
|
|
64
|
+
if (cachedMessages) {
|
|
65
|
+
return cachedMessages;
|
|
66
|
+
}
|
|
67
|
+
throw new Error(
|
|
68
|
+
`Locale "${locale}" messages are not available. Preload them or register a loader in your Better Translate core config.`
|
|
69
|
+
);
|
|
70
|
+
},
|
|
71
|
+
isRtl,
|
|
72
|
+
async getTranslations(options) {
|
|
73
|
+
const [{ translator }, locale] = await Promise.all([
|
|
74
|
+
readRequestConfig(),
|
|
75
|
+
getResolvedLocale(options)
|
|
76
|
+
]);
|
|
77
|
+
await translator.loadLocale(locale);
|
|
78
|
+
return ((...args) => {
|
|
79
|
+
const [key, translateOptions] = args;
|
|
80
|
+
return translator.t(
|
|
81
|
+
key,
|
|
82
|
+
{
|
|
83
|
+
...translateOptions ?? {},
|
|
84
|
+
locale
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
async getTranslator() {
|
|
90
|
+
return (await readRequestConfig()).translator;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export {
|
|
95
|
+
createServerHelpers,
|
|
96
|
+
getRequestConfig,
|
|
97
|
+
setRequestLocale
|
|
98
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@better-translate/nextjs",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Next.js integration package for Better Translate.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"main": "./dist/index.cjs",
|
|
9
|
+
"module": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"require": "./dist/index.cjs"
|
|
16
|
+
},
|
|
17
|
+
"./server": {
|
|
18
|
+
"types": "./dist/server.d.ts",
|
|
19
|
+
"import": "./dist/server.js",
|
|
20
|
+
"require": "./dist/server.cjs"
|
|
21
|
+
},
|
|
22
|
+
"./navigation": {
|
|
23
|
+
"types": "./dist/navigation.d.ts",
|
|
24
|
+
"import": "./dist/navigation.js",
|
|
25
|
+
"require": "./dist/navigation.cjs"
|
|
26
|
+
},
|
|
27
|
+
"./proxy": {
|
|
28
|
+
"types": "./dist/proxy.d.ts",
|
|
29
|
+
"import": "./dist/proxy.js",
|
|
30
|
+
"require": "./dist/proxy.cjs"
|
|
31
|
+
},
|
|
32
|
+
"./package.json": "./package.json"
|
|
33
|
+
},
|
|
34
|
+
"files": ["dist", "LICENSE", "README.md"],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsup src/index.ts src/server.ts src/navigation.tsx src/proxy.ts --format esm,cjs --dts --clean",
|
|
37
|
+
"check-types": "tsc --noEmit",
|
|
38
|
+
"test": "bun test tests/runtime",
|
|
39
|
+
"test:types": "tsc -p tests/types/tsconfig.json --noEmit"
|
|
40
|
+
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "git+https://github.com/jralvarenga/better-translate.git",
|
|
47
|
+
"directory": "packages/nextjs"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://github.com/jralvarenga/better-translate/tree/main/packages/nextjs#readme",
|
|
50
|
+
"bugs": {
|
|
51
|
+
"url": "https://github.com/jralvarenga/better-translate/issues"
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"@formatjs/intl-localematcher": "^0.6.2",
|
|
55
|
+
"@better-translate/core": "workspace:^",
|
|
56
|
+
"negotiator": "^1.0.0"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"next": "^16.0.0",
|
|
60
|
+
"react": "^19.0.0",
|
|
61
|
+
"react-dom": "^19.0.0"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@repo/typescript-config": "*"
|
|
65
|
+
},
|
|
66
|
+
"keywords": ["i18n", "l10n", "nextjs", "translations", "typescript"]
|
|
67
|
+
}
|