canopy-i18n 0.0.1 → 0.0.3
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/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/testData.js +1 -1
- package/package.json +4 -2
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
|
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/testData.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
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'
|
package/package.json
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "canopy-i18n",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "A tiny, type-safe i18n helper",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
10
12
|
"require": "./dist/index.js",
|
|
11
|
-
"
|
|
13
|
+
"default": "./dist/index.js"
|
|
12
14
|
}
|
|
13
15
|
},
|
|
14
16
|
"sideEffects": false,
|