canopy-i18n 0.0.2 → 0.0.4
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 +6 -7
- package/dist/applyLocaleDeep.d.ts +1 -2
- package/dist/builder.d.ts +1 -1
- package/dist/builder.js +2 -2
- package/dist/message.d.ts +4 -2
- package/dist/message.js +12 -6
- package/dist/test.js +2 -0
- package/dist/testData.d.ts +3 -0
- package/dist/testData.js +6 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,8 +24,8 @@ yarn add canopy-i18n
|
|
|
24
24
|
```ts
|
|
25
25
|
import { createMessageBuilder, applyLocaleDeep } from 'canopy-i18n';
|
|
26
26
|
|
|
27
|
-
// 1) Declare allowed locales and
|
|
28
|
-
const builder = createMessageBuilder(['ja', 'en'] as const, 'ja'
|
|
27
|
+
// 1) Declare allowed locales and fallback
|
|
28
|
+
const builder = createMessageBuilder(['ja', 'en'] as const, 'ja');
|
|
29
29
|
|
|
30
30
|
// 2) Define messages
|
|
31
31
|
const title = builder({
|
|
@@ -56,12 +56,11 @@ console.log(msg.setLocale('en').render({ name: 'Tanaka', age: 20 }));
|
|
|
56
56
|
|
|
57
57
|
## API
|
|
58
58
|
|
|
59
|
-
### createMessageBuilder(locales,
|
|
59
|
+
### createMessageBuilder(locales, fallbackLocale)
|
|
60
60
|
Returns a `builder` function to create localized messages.
|
|
61
61
|
|
|
62
62
|
- **locales**: `readonly string[]` — Allowed locale keys (e.g. `['ja', 'en'] as const`).
|
|
63
|
-
- **
|
|
64
|
-
- **fallbackLocale**: fallback locale when the active locale value is missing.
|
|
63
|
+
- **fallbackLocale**: fallback locale when the active locale value is missing. New messages start with this locale active.
|
|
65
64
|
|
|
66
65
|
Overloads:
|
|
67
66
|
- `builder<Record<L[number], string>>() -> I18nMessage<L, void>`
|
|
@@ -114,7 +113,7 @@ Import all message exports as a namespace and set the locale across the whole tr
|
|
|
114
113
|
```ts
|
|
115
114
|
// messages.ts
|
|
116
115
|
import { createMessageBuilder } from 'canopy-i18n';
|
|
117
|
-
const builder = createMessageBuilder(['ja', 'en'] as const, 'ja'
|
|
116
|
+
const builder = createMessageBuilder(['ja', 'en'] as const, 'ja');
|
|
118
117
|
|
|
119
118
|
export const title = builder({
|
|
120
119
|
ja: 'タイトルテスト',
|
|
@@ -143,7 +142,7 @@ console.log(m.msg.render({ name: 'Tanaka', age: 20 }));
|
|
|
143
142
|
```ts
|
|
144
143
|
// i18n/builder.ts
|
|
145
144
|
import { createMessageBuilder } from 'canopy-i18n';
|
|
146
|
-
export const builder = createMessageBuilder(['ja', 'en'] as const, 'ja'
|
|
145
|
+
export const builder = createMessageBuilder(['ja', 'en'] as const, 'ja');
|
|
147
146
|
```
|
|
148
147
|
|
|
149
148
|
```ts
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export declare function applyLocaleDeep<T extends
|
|
2
|
-
export declare function applyLocaleDeep<T extends unknown[]>(obj: T, locale: string): T;
|
|
1
|
+
export declare function applyLocaleDeep<T extends object>(obj: T, locale: string): T;
|
package/dist/builder.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Template } from "./types";
|
|
2
2
|
import { LocalizedMessage } from "./message";
|
|
3
|
-
export declare function createMessageBuilder<const Ls extends readonly string[]>(locales: Ls,
|
|
3
|
+
export declare function createMessageBuilder<const Ls extends readonly string[]>(locales: Ls, fallbackLocale: Ls[number]): {
|
|
4
4
|
<C>(data: Record<Ls[number], Template<C>>): LocalizedMessage<Ls, C>;
|
|
5
5
|
(data: Record<Ls[number], string>): LocalizedMessage<Ls, void>;
|
|
6
6
|
};
|
package/dist/builder.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createMessageBuilder = createMessageBuilder;
|
|
4
4
|
const message_1 = require("./message");
|
|
5
|
-
function createMessageBuilder(locales,
|
|
5
|
+
function createMessageBuilder(locales, fallbackLocale) {
|
|
6
6
|
function builder(data) {
|
|
7
|
-
return new message_1.I18nMessage(locales,
|
|
7
|
+
return new message_1.I18nMessage(locales, fallbackLocale).setData(data);
|
|
8
8
|
}
|
|
9
9
|
return builder;
|
|
10
10
|
}
|
package/dist/message.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ export declare class I18nMessage<Ls extends readonly string[], C> {
|
|
|
3
3
|
readonly locales: Ls;
|
|
4
4
|
private _locale;
|
|
5
5
|
private _fallbackLocale;
|
|
6
|
-
|
|
7
|
-
constructor(locales: Ls,
|
|
6
|
+
private _data;
|
|
7
|
+
constructor(locales: Ls, fallbackLocale: Ls[number]);
|
|
8
8
|
get locale(): Ls[number];
|
|
9
9
|
get fallbackLocale(): Ls[number];
|
|
10
10
|
setLocale(locale: Ls[number]): this;
|
|
11
11
|
setFallbackLocale(locale: Ls[number]): this;
|
|
12
|
+
get data(): Record<Ls[number], Template<C>>;
|
|
13
|
+
setData(data: Record<Ls[number], Template<C>>): this;
|
|
12
14
|
render(this: I18nMessage<Ls, void>): string;
|
|
13
15
|
render(ctx: C): string;
|
|
14
16
|
}
|
package/dist/message.js
CHANGED
|
@@ -9,12 +9,11 @@ class I18nMessage {
|
|
|
9
9
|
locales;
|
|
10
10
|
_locale;
|
|
11
11
|
_fallbackLocale;
|
|
12
|
-
|
|
13
|
-
constructor(locales,
|
|
12
|
+
_data;
|
|
13
|
+
constructor(locales, fallbackLocale) {
|
|
14
14
|
this.locales = locales;
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.data = data;
|
|
15
|
+
this._fallbackLocale = fallbackLocale;
|
|
16
|
+
this._locale = fallbackLocale;
|
|
18
17
|
}
|
|
19
18
|
get locale() {
|
|
20
19
|
return this._locale;
|
|
@@ -30,8 +29,15 @@ class I18nMessage {
|
|
|
30
29
|
this._fallbackLocale = locale;
|
|
31
30
|
return this;
|
|
32
31
|
}
|
|
32
|
+
get data() {
|
|
33
|
+
return this._data;
|
|
34
|
+
}
|
|
35
|
+
setData(data) {
|
|
36
|
+
this._data = data;
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
33
39
|
render(ctx) {
|
|
34
|
-
const v = this.
|
|
40
|
+
const v = this._data[this._locale] ?? this._data[this._fallbackLocale];
|
|
35
41
|
return isTemplateFunction(v) ? v(ctx) : v;
|
|
36
42
|
}
|
|
37
43
|
}
|
package/dist/test.js
CHANGED
|
@@ -7,4 +7,6 @@ for (const locale of ['ja', 'en']) {
|
|
|
7
7
|
console.log(msg.render({ name: '田中', age: 20 }));
|
|
8
8
|
console.log(title.render());
|
|
9
9
|
console.log(nested.hello.render());
|
|
10
|
+
const hs = (0, index_1.applyLocaleDeep)(trs.hasSentMsg, locale);
|
|
11
|
+
console.log(hs.render({ email: 'test@example.com' }));
|
|
10
12
|
}
|
package/dist/testData.d.ts
CHANGED
|
@@ -7,3 +7,6 @@ export declare const nested: {
|
|
|
7
7
|
hello: import("./message").LocalizedMessage<readonly ["ja", "en"], unknown>;
|
|
8
8
|
world: import("./message").LocalizedMessage<readonly ["ja", "en"], unknown>;
|
|
9
9
|
};
|
|
10
|
+
export declare const hasSentMsg: import("./message").LocalizedMessage<readonly ["ja", "en"], {
|
|
11
|
+
email: string;
|
|
12
|
+
}>;
|
package/dist/testData.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.nested = exports.msg = exports.title = void 0;
|
|
3
|
+
exports.hasSentMsg = exports.nested = exports.msg = exports.title = void 0;
|
|
4
4
|
const index_1 = require("./index");
|
|
5
|
-
const builder = (0, index_1.createMessageBuilder)(['ja', 'en'], 'ja'
|
|
5
|
+
const builder = (0, index_1.createMessageBuilder)(['ja', 'en'], 'ja');
|
|
6
6
|
exports.title = builder({
|
|
7
7
|
ja: 'タイトルテスト',
|
|
8
8
|
en: 'Title Test'
|
|
@@ -21,3 +21,7 @@ exports.nested = {
|
|
|
21
21
|
en: 'World'
|
|
22
22
|
})
|
|
23
23
|
};
|
|
24
|
+
exports.hasSentMsg = builder({
|
|
25
|
+
ja: o => `${o.email}にメールを送信しました。確認の上、処理を進めて下さい。`,
|
|
26
|
+
en: o => `Email sent to ${o.email}. Please check and proceed with the process.`
|
|
27
|
+
});
|