next-safe-i18n 0.0.2 → 0.1.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/README.md +50 -0
- package/dist/i18n.d.ts +4 -1
- package/dist/i18n.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,3 +1,53 @@
|
|
|
1
1
|
# Next Safe I18n
|
|
2
2
|
|
|
3
3
|
Safe and modern i18n for Next.js
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install next-safe-i18n
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
Create an i18n file like this.
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { createI18n } from 'next-safe-i18n/i18n'
|
|
17
|
+
import en from './en.json'
|
|
18
|
+
import 'server-only'
|
|
19
|
+
|
|
20
|
+
const dictionaries = {
|
|
21
|
+
en: import('./en.json'),
|
|
22
|
+
'zh-cn': import('./zh-cn.json'),
|
|
23
|
+
'zh-tw': import('./zh-tw.json'),
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type Locale = keyof typeof dictionaries
|
|
27
|
+
|
|
28
|
+
export type Dictionary = typeof en
|
|
29
|
+
|
|
30
|
+
const i18n = createI18n<Locale, Dictionary>({
|
|
31
|
+
defaultLocale: 'en',
|
|
32
|
+
locales: ['en', 'zh-cn', 'zh-tw'],
|
|
33
|
+
dictionaries
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
export default i18n
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Add this to your proxy file.
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import i18n from "./i18n"
|
|
43
|
+
|
|
44
|
+
export const proxy = i18n.createProxy()
|
|
45
|
+
|
|
46
|
+
export const config = {
|
|
47
|
+
// Matcher ignoring `/_next/` and `/api/`
|
|
48
|
+
matcher: ["/((?!api|_next/static|_next/image|favicon|apple-touch|images).*)"],
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
In your `page.tsx`, add this:
|
package/dist/i18n.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NextRequest, NextResponse } from "next/server";
|
|
2
2
|
import I18NConfig from "./config";
|
|
3
3
|
export type I18n<Locale extends string, Dictionary> = {
|
|
4
|
-
createProxy(proxy
|
|
4
|
+
createProxy(proxy?: (request: NextRequest) => (NextResponse | undefined) | undefined): (request: NextRequest) => NextResponse;
|
|
5
5
|
fetchLocale(params: Params<Locale>): Promise<Locale>;
|
|
6
6
|
fetchLocaleAndDictionary(params: Params<Locale>): Promise<{
|
|
7
7
|
locale: Locale;
|
|
@@ -11,5 +11,8 @@ export type I18n<Locale extends string, Dictionary> = {
|
|
|
11
11
|
export type Params<Locale> = Promise<{
|
|
12
12
|
lang: Locale;
|
|
13
13
|
}>;
|
|
14
|
+
export type Props<Locale> = {
|
|
15
|
+
params: Params<Locale>;
|
|
16
|
+
};
|
|
14
17
|
export declare function createI18n<Locale extends string, Dictionary>(config: I18NConfig<Locale, Dictionary>): I18n<Locale, Dictionary>;
|
|
15
18
|
//# sourceMappingURL=i18n.d.ts.map
|
package/dist/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAIvD,OAAO,UAAU,MAAM,UAAU,CAAA;AAEjC,MAAM,MAAM,IAAI,CAAC,MAAM,SAAS,MAAM,EAAE,UAAU,IAAI;IACpD,WAAW,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAIvD,OAAO,UAAU,MAAM,UAAU,CAAA;AAEjC,MAAM,MAAM,IAAI,CAAC,MAAM,SAAS,MAAM,EAAE,UAAU,IAAI;IACpD,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,YAAY,CAAA;IAC7H,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC,CAAA;CACtG,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC;IACnC,IAAI,EAAE,MAAM,CAAA;CACb,CAAC,CAAA;AAEF,MAAM,MAAM,KAAK,CAAC,MAAM,IAAI;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;CACvB,CAAA;AAED,wBAAgB,UAAU,CAAC,MAAM,SAAS,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CA0C9H"}
|