@zerolith/i18n 0.0.0-stage → 0.1.0-alpha.2
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 +201 -0
- package/README.md +24 -2
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +93 -0
- package/dist/cli.js.map +1 -0
- package/dist/compile.d.ts +41 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +732 -0
- package/dist/compile.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +137 -0
- package/dist/index.js.map +1 -0
- package/package.json +55 -5
- package/src/cli.ts +124 -0
- package/src/compile.ts +949 -0
- package/src/index.ts +214 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zerolith/i18n: the locale layer, built on `Intl` with nothing shipped.
|
|
3
|
+
* Negotiation of the request's or the browser's languages against the
|
|
4
|
+
* locales an application supports, the current locale and its direction
|
|
5
|
+
* as signals, the document's `lang` and `dir`, and formatters cached per
|
|
6
|
+
* locale. Message catalogs are compiled ahead of time by
|
|
7
|
+
* `@zerolith/i18n/compile` into plain functions, so no message runtime
|
|
8
|
+
* exists here either.
|
|
9
|
+
*/
|
|
10
|
+
import { type ReadableSignal } from "zerolith";
|
|
11
|
+
/** One entry of an `Accept-Language` header or of `navigator.languages`. */
|
|
12
|
+
export interface LanguageRange {
|
|
13
|
+
readonly range: string;
|
|
14
|
+
readonly quality: number;
|
|
15
|
+
}
|
|
16
|
+
/** Parses an `Accept-Language` header into ranges ordered by quality, dropping those with quality zero. */
|
|
17
|
+
export declare function parseAcceptLanguage(header: string | null | undefined): LanguageRange[];
|
|
18
|
+
/**
|
|
19
|
+
* Picks the supported locale that best matches what was requested: an
|
|
20
|
+
* `Accept-Language` header, `navigator.languages`, or one tag. Each range
|
|
21
|
+
* is tried in order of quality, first as an exact match, then by dropping
|
|
22
|
+
* subtags from the end as RFC 4647 lookup does, then as the language of a
|
|
23
|
+
* more specific supported locale. `*` and no match at all give `fallback`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function negotiateLocale(requested: string | readonly string[] | null | undefined, supported: readonly string[], fallback: string): string;
|
|
26
|
+
/** The writing direction of a locale, from `Intl.Locale` where the engine provides it and from the script or language otherwise. */
|
|
27
|
+
export declare function localeDirection(locale: string): "ltr" | "rtl";
|
|
28
|
+
/** Options for `createLocale`. */
|
|
29
|
+
export interface LocaleOptions {
|
|
30
|
+
/** The locales the application ships, most preferred first. */
|
|
31
|
+
supported: readonly string[];
|
|
32
|
+
/** The locale used when nothing matches. Defaults to the first supported one. */
|
|
33
|
+
fallback?: string;
|
|
34
|
+
/** What to negotiate from at first: an `Accept-Language` header, `navigator.languages`, or a tag. Defaults to the fallback. */
|
|
35
|
+
initial?: string | readonly string[] | null;
|
|
36
|
+
}
|
|
37
|
+
/** The current locale as state. */
|
|
38
|
+
export interface LocaleState {
|
|
39
|
+
/** The current locale, always one of `supported`. */
|
|
40
|
+
readonly locale: ReadableSignal<string>;
|
|
41
|
+
/** The writing direction of the current locale. */
|
|
42
|
+
readonly direction: ReadableSignal<"ltr" | "rtl">;
|
|
43
|
+
readonly supported: readonly string[];
|
|
44
|
+
/** Switches locales after negotiating the request against `supported`. */
|
|
45
|
+
set(requested: string | readonly string[]): void;
|
|
46
|
+
}
|
|
47
|
+
/** Creates the locale state for an application. */
|
|
48
|
+
export declare function createLocale(options: LocaleOptions): LocaleState;
|
|
49
|
+
/** Keeps the document's `lang` and `dir` attributes in step with the locale; returns the effect's disposer. */
|
|
50
|
+
export declare function applyLocale(state: LocaleState, doc?: Document): () => void;
|
|
51
|
+
/** Formatters for the current locale; each reads the locale signal when called, so a computed value or template re-renders on a locale change. */
|
|
52
|
+
export interface Formatters {
|
|
53
|
+
number(value: number, options?: Intl.NumberFormatOptions): string;
|
|
54
|
+
date(value: Date | number, options?: Intl.DateTimeFormatOptions): string;
|
|
55
|
+
relative(value: number, unit: Intl.RelativeTimeFormatUnit, options?: Intl.RelativeTimeFormatOptions): string;
|
|
56
|
+
list(values: Iterable<string>, options?: Intl.ListFormatOptions): string;
|
|
57
|
+
plural(value: number, options?: Intl.PluralRulesOptions): Intl.LDMLPluralRule;
|
|
58
|
+
}
|
|
59
|
+
/** Creates formatters over a locale, given as a signal or as a fixed tag. Instances are cached per locale and options. */
|
|
60
|
+
export declare function formatters(locale: ReadableSignal<string> | string): Formatters;
|
|
61
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,cAAc,EAAyC,MAAM,UAAU,CAAC;AAEtF,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAE1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED,2GAA2G;AAC3G,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,EAAE,CA+BtF;AAcD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2BhJ;AAID,oIAAoI;AACpI,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAuB7D;AAED,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAE1B,+DAA+D;IAC/D,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+HAA+H;IAC/H,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CAC/C;AAED,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAExB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,0EAA0E;IAC1E,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CACpD;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,CAchE;AAED,+GAA+G;AAC/G,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,GAAE,QAAmB,GAAG,MAAM,IAAI,CAOpF;AAED,kJAAkJ;AAClJ,MAAM,WAAW,UAAU;IAEvB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC;IAC7G,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;IACzE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC;CACjF;AAgBD,0HAA0H;AAC1H,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,UAAU,CAU9E"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zerolith/i18n: the locale layer, built on `Intl` with nothing shipped.
|
|
3
|
+
* Negotiation of the request's or the browser's languages against the
|
|
4
|
+
* locales an application supports, the current locale and its direction
|
|
5
|
+
* as signals, the document's `lang` and `dir`, and formatters cached per
|
|
6
|
+
* locale. Message catalogs are compiled ahead of time by
|
|
7
|
+
* `@zerolith/i18n/compile` into plain functions, so no message runtime
|
|
8
|
+
* exists here either.
|
|
9
|
+
*/
|
|
10
|
+
import { computed, effect, signal } from "zerolith";
|
|
11
|
+
/** Parses an `Accept-Language` header into ranges ordered by quality, dropping those with quality zero. */
|
|
12
|
+
export function parseAcceptLanguage(header) {
|
|
13
|
+
if (header === null || header === undefined || header.trim() === "") {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
const ranges = [];
|
|
17
|
+
for (const [index, part] of header.split(",").entries()) {
|
|
18
|
+
const [rawRange = "", ...parameters] = part.split(";");
|
|
19
|
+
const range = rawRange.trim();
|
|
20
|
+
if (range === "") {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
let quality = 1;
|
|
24
|
+
for (const parameter of parameters) {
|
|
25
|
+
const [key = "", value = ""] = parameter.split("=");
|
|
26
|
+
if (key.trim().toLowerCase() === "q") {
|
|
27
|
+
const parsed = Number(value.trim());
|
|
28
|
+
quality = Number.isFinite(parsed) ? Math.min(1, Math.max(0, parsed)) : 0;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (quality > 0) {
|
|
32
|
+
ranges.push({ range, quality: quality - index * 1e-9 });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return ranges.toSorted((a, b) => b.quality - a.quality).map(({ range, quality }) => ({ range, quality: Math.round(quality * 1000) / 1000 }));
|
|
36
|
+
}
|
|
37
|
+
function canonical(tag) {
|
|
38
|
+
try {
|
|
39
|
+
return Intl.getCanonicalLocales(tag)[0] ?? tag;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return tag;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Picks the supported locale that best matches what was requested: an
|
|
47
|
+
* `Accept-Language` header, `navigator.languages`, or one tag. Each range
|
|
48
|
+
* is tried in order of quality, first as an exact match, then by dropping
|
|
49
|
+
* subtags from the end as RFC 4647 lookup does, then as the language of a
|
|
50
|
+
* more specific supported locale. `*` and no match at all give `fallback`.
|
|
51
|
+
*/
|
|
52
|
+
export function negotiateLocale(requested, supported, fallback) {
|
|
53
|
+
const ranges = typeof requested === "string" ? parseAcceptLanguage(requested).map((entry) => entry.range) : [...(requested ?? [])];
|
|
54
|
+
const candidates = supported.map((tag) => ({ tag, lower: canonical(tag).toLowerCase() }));
|
|
55
|
+
for (const range of ranges) {
|
|
56
|
+
const wanted = canonical(range).toLowerCase();
|
|
57
|
+
if (wanted === "*") {
|
|
58
|
+
return fallback;
|
|
59
|
+
}
|
|
60
|
+
for (let prefix = wanted; prefix !== ""; prefix = prefix.includes("-") ? prefix.slice(0, prefix.lastIndexOf("-")) : "") {
|
|
61
|
+
const exact = candidates.find((candidate) => candidate.lower === prefix);
|
|
62
|
+
if (exact !== undefined) {
|
|
63
|
+
return exact.tag;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const language = wanted.split("-")[0] ?? wanted;
|
|
67
|
+
const related = candidates.find((candidate) => candidate.lower.startsWith(`${language}-`));
|
|
68
|
+
if (related !== undefined) {
|
|
69
|
+
return related.tag;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return fallback;
|
|
73
|
+
}
|
|
74
|
+
const RTL_LANGUAGES = new Set(["ar", "arc", "ckb", "dv", "fa", "he", "iw", "ks", "ku", "nqo", "pa-arab", "ps", "sd", "syr", "ug", "ur", "yi"]);
|
|
75
|
+
/** The writing direction of a locale, from `Intl.Locale` where the engine provides it and from the script or language otherwise. */
|
|
76
|
+
export function localeDirection(locale) {
|
|
77
|
+
try {
|
|
78
|
+
const parsed = new Intl.Locale(locale);
|
|
79
|
+
const withInfo = parsed;
|
|
80
|
+
const info = withInfo.getTextInfo?.() ?? withInfo.textInfo;
|
|
81
|
+
if (info !== undefined) {
|
|
82
|
+
return info.direction === "rtl" ? "rtl" : "ltr";
|
|
83
|
+
}
|
|
84
|
+
const language = parsed.language.toLowerCase();
|
|
85
|
+
const script = parsed.script?.toLowerCase();
|
|
86
|
+
if (script === "arab" || script === "hebr" || script === "thaa" || script === "syrc" || script === "nkoo") {
|
|
87
|
+
return "rtl";
|
|
88
|
+
}
|
|
89
|
+
return RTL_LANGUAGES.has(language) || RTL_LANGUAGES.has(`${language}-${script ?? ""}`) ? "rtl" : "ltr";
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return "ltr";
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** Creates the locale state for an application. */
|
|
96
|
+
export function createLocale(options) {
|
|
97
|
+
const supported = [...options.supported];
|
|
98
|
+
const fallback = options.fallback ?? supported[0] ?? "en";
|
|
99
|
+
const locale = signal(negotiateLocale(options.initial ?? fallback, supported, fallback), { name: "locale" });
|
|
100
|
+
return {
|
|
101
|
+
locale,
|
|
102
|
+
direction: computed(() => localeDirection(locale.get())),
|
|
103
|
+
supported,
|
|
104
|
+
set(requested) {
|
|
105
|
+
locale.set(negotiateLocale(requested, supported, fallback));
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** Keeps the document's `lang` and `dir` attributes in step with the locale; returns the effect's disposer. */
|
|
110
|
+
export function applyLocale(state, doc = document) {
|
|
111
|
+
return effect(() => {
|
|
112
|
+
doc.documentElement.lang = state.locale.get();
|
|
113
|
+
doc.documentElement.dir = state.direction.get();
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
const cache = new Map();
|
|
117
|
+
function cached(kind, locale, options, create) {
|
|
118
|
+
const key = `${kind}\u0000${locale}\u0000${options === undefined ? "" : JSON.stringify(options)}`;
|
|
119
|
+
let instance = cache.get(key);
|
|
120
|
+
if (instance === undefined) {
|
|
121
|
+
instance = create();
|
|
122
|
+
cache.set(key, instance);
|
|
123
|
+
}
|
|
124
|
+
return instance;
|
|
125
|
+
}
|
|
126
|
+
/** Creates formatters over a locale, given as a signal or as a fixed tag. Instances are cached per locale and options. */
|
|
127
|
+
export function formatters(locale) {
|
|
128
|
+
const current = () => (typeof locale === "string" ? locale : locale.get());
|
|
129
|
+
return {
|
|
130
|
+
number: (value, options) => cached("number", current(), options, () => new Intl.NumberFormat(current(), options)).format(value),
|
|
131
|
+
date: (value, options) => cached("date", current(), options, () => new Intl.DateTimeFormat(current(), options)).format(value),
|
|
132
|
+
relative: (value, unit, options) => cached("relative", current(), options, () => new Intl.RelativeTimeFormat(current(), options)).format(value, unit),
|
|
133
|
+
list: (values, options) => cached("list", current(), options, () => new Intl.ListFormat(current(), options)).format(values),
|
|
134
|
+
plural: (value, options) => cached("plural", current(), options, () => new Intl.PluralRules(current(), options)).select(value)
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,56 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
"name": "@zerolith/i18n",
|
|
3
|
+
"version": "0.1.0-alpha.2",
|
|
4
|
+
"description": "Internationalization for zerolith built on Intl with nothing shipped: locale negotiation and state, direction and document language, cached formatters, and a compiler that turns MessageFormat 2 catalogs into per-locale modules",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"author": "molexxxx",
|
|
7
|
+
"homepage": "https://github.com/molexxxx/zerolith#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/molexxxx/zerolith.git",
|
|
11
|
+
"directory": "packages/i18n"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/molexxxx/zerolith/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"zerolith",
|
|
18
|
+
"i18n",
|
|
19
|
+
"intl",
|
|
20
|
+
"messageformat"
|
|
21
|
+
],
|
|
22
|
+
"type": "module",
|
|
23
|
+
"sideEffects": false,
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=24.0.0"
|
|
26
|
+
},
|
|
27
|
+
"bin": {
|
|
28
|
+
"zerolith-i18n": "dist/cli.js"
|
|
29
|
+
},
|
|
30
|
+
"exports": {
|
|
31
|
+
".": {
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
33
|
+
"default": "./dist/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./compile": {
|
|
36
|
+
"types": "./dist/compile.d.ts",
|
|
37
|
+
"default": "./dist/compile.js"
|
|
38
|
+
},
|
|
39
|
+
"./package.json": "./package.json"
|
|
40
|
+
},
|
|
41
|
+
"files": [
|
|
42
|
+
"dist",
|
|
43
|
+
"src",
|
|
44
|
+
"LICENSE",
|
|
45
|
+
"README.md"
|
|
46
|
+
],
|
|
47
|
+
"scripts": {
|
|
48
|
+
"build": "tsc -p tsconfig.build.json"
|
|
49
|
+
},
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"zerolith": "^0.1.0-alpha.2"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"zerolith": "^0.1.0-alpha.2"
|
|
55
|
+
}
|
|
56
|
+
}
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* `zerolith-i18n <folder> [--out <folder>] [--js] [--strict]`: compiles
|
|
4
|
+
* every `<locale>.json` catalog in a folder into `<locale>.ts` (or `.js`)
|
|
5
|
+
* plus an index module, and reports keys that some locales lack.
|
|
6
|
+
*/
|
|
7
|
+
import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
|
|
8
|
+
import { basename, join } from "node:path";
|
|
9
|
+
import process from "node:process";
|
|
10
|
+
import { type Catalog, compileIndex, compileMessages, messageNames } from "./compile.js";
|
|
11
|
+
|
|
12
|
+
const USAGE = "usage: zerolith-i18n <folder> [--out <folder>] [--js] [--strict]\n";
|
|
13
|
+
|
|
14
|
+
interface Arguments
|
|
15
|
+
{
|
|
16
|
+
folder: string | undefined;
|
|
17
|
+
out: string | undefined;
|
|
18
|
+
javascript: boolean;
|
|
19
|
+
strict: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function parse(argv: readonly string[]): Arguments
|
|
23
|
+
{
|
|
24
|
+
const parsed: Arguments = { folder: undefined, out: undefined, javascript: false, strict: false };
|
|
25
|
+
for (let index = 0; index < argv.length; index++)
|
|
26
|
+
{
|
|
27
|
+
const argument = argv[index] ?? "";
|
|
28
|
+
if (argument === "--out")
|
|
29
|
+
{
|
|
30
|
+
const value = argv[index + 1];
|
|
31
|
+
if (value === undefined)
|
|
32
|
+
{
|
|
33
|
+
throw new Error("--out needs a value");
|
|
34
|
+
}
|
|
35
|
+
parsed.out = value;
|
|
36
|
+
index++;
|
|
37
|
+
}
|
|
38
|
+
else if (argument === "--js")
|
|
39
|
+
{
|
|
40
|
+
parsed.javascript = true;
|
|
41
|
+
}
|
|
42
|
+
else if (argument === "--strict")
|
|
43
|
+
{
|
|
44
|
+
parsed.strict = true;
|
|
45
|
+
}
|
|
46
|
+
else if (argument.startsWith("--"))
|
|
47
|
+
{
|
|
48
|
+
throw new Error(`unknown option ${argument}`);
|
|
49
|
+
}
|
|
50
|
+
else if (parsed.folder === undefined)
|
|
51
|
+
{
|
|
52
|
+
parsed.folder = argument;
|
|
53
|
+
}
|
|
54
|
+
else
|
|
55
|
+
{
|
|
56
|
+
throw new Error(`unexpected argument ${argument}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return parsed;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Runs the command with the given arguments and returns the exit code. */
|
|
63
|
+
export async function main(argv: readonly string[]): Promise<number>
|
|
64
|
+
{
|
|
65
|
+
let parsed: Arguments;
|
|
66
|
+
try
|
|
67
|
+
{
|
|
68
|
+
parsed = parse(argv);
|
|
69
|
+
}
|
|
70
|
+
catch (error)
|
|
71
|
+
{
|
|
72
|
+
process.stderr.write(`zerolith-i18n: ${error instanceof Error ? error.message : String(error)}\n${USAGE}`);
|
|
73
|
+
return 2;
|
|
74
|
+
}
|
|
75
|
+
if (parsed.folder === undefined)
|
|
76
|
+
{
|
|
77
|
+
process.stderr.write(USAGE);
|
|
78
|
+
return 2;
|
|
79
|
+
}
|
|
80
|
+
const files = (await readdir(parsed.folder)).filter((name) => name.endsWith(".json")).toSorted();
|
|
81
|
+
if (files.length === 0)
|
|
82
|
+
{
|
|
83
|
+
process.stderr.write(`zerolith-i18n: no .json catalogs in ${parsed.folder}\n`);
|
|
84
|
+
return 1;
|
|
85
|
+
}
|
|
86
|
+
const out = parsed.out ?? parsed.folder;
|
|
87
|
+
await mkdir(out, { recursive: true });
|
|
88
|
+
const language = parsed.javascript ? "js" : "ts";
|
|
89
|
+
const folder = parsed.folder;
|
|
90
|
+
const catalogs = new Map<string, Catalog>(await Promise.all(files.map(async (file): Promise<[string, Catalog]> => [basename(file, ".json"), JSON.parse(await readFile(join(folder, file), "utf8")) as Catalog])));
|
|
91
|
+
const all = new Set<string>();
|
|
92
|
+
for (const catalog of catalogs.values())
|
|
93
|
+
{
|
|
94
|
+
for (const name of messageNames(catalog))
|
|
95
|
+
{
|
|
96
|
+
all.add(name);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
let missing = 0;
|
|
100
|
+
const writes: Promise<void>[] = [];
|
|
101
|
+
for (const [locale, catalog] of catalogs)
|
|
102
|
+
{
|
|
103
|
+
const present = new Set(messageNames(catalog));
|
|
104
|
+
for (const name of all)
|
|
105
|
+
{
|
|
106
|
+
if (!present.has(name))
|
|
107
|
+
{
|
|
108
|
+
missing++;
|
|
109
|
+
process.stderr.write(`zerolith-i18n: ${locale} lacks ${name}\n`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const compiled = compileMessages(locale, catalog, { language, source: `${locale}.json` });
|
|
113
|
+
writes.push(writeFile(join(out, `${locale}.${language}`), compiled.code));
|
|
114
|
+
}
|
|
115
|
+
writes.push(writeFile(join(out, `index.${language}`), compileIndex([...catalogs.keys()], { language })));
|
|
116
|
+
await Promise.all(writes);
|
|
117
|
+
process.stdout.write(`zerolith-i18n: ${catalogs.size} locale(s), ${all.size} message(s), written to ${out}\n`);
|
|
118
|
+
return missing > 0 && parsed.strict ? 1 : 0;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (process.argv[1] !== undefined && /zerolith-i18n|[\\/]cli\.js$/.test(process.argv[1]))
|
|
122
|
+
{
|
|
123
|
+
process.exitCode = await main(process.argv.slice(2));
|
|
124
|
+
}
|