intl-template 1.0.0-alpha.3 → 1.0.0-alpha.5

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/dist/intl.d.ts CHANGED
@@ -25,6 +25,8 @@ export class Runes extends Array<any> {
25
25
  * Represents a Translation object that handles string translation based on locale and templates.
26
26
  */
27
27
  export class Translation {
28
+ constructor(locale: any);
29
+ defaultLocale: any;
28
30
  set templates(value: ProxyConstructor);
29
31
  get templates(): ProxyConstructor;
30
32
  /**
@@ -38,16 +40,18 @@ export class Translation {
38
40
  */
39
41
  translate: (locale: string, strings: TemplateStringsArray | string, ...parts: any[]) => Runes;
40
42
  /**
41
- * Apply template by regex string
43
+ * Use regex extract template and vars
42
44
  * @param {*} locale
43
45
  * @param {*} regexString
44
46
  * @param {*} matchString
45
47
  * @returns {Runes}
46
48
  */
47
49
  translateByRegEx: (locale: any, regexString: any, matchString: any) => Runes;
50
+ l10n: (strings: any, ...parts: any[]) => Runes;
51
+ l10nRegExp: (regexString: any, matchString: any) => Runes;
48
52
  #private;
49
53
  }
50
54
  export default translation;
51
- export const l10n: (strings: string | TemplateStringsArray, ...parts: any[]) => Runes;
52
- export const l10nRegExp: (regexString: any, matchString: any) => Runes;
55
+ export function l10n(strings: any, ...parts: any[]): Runes;
56
+ export function l10nRegExp(regexString: any, matchString: any): Runes;
53
57
  declare const translation: Translation;
package/dist/intl.js CHANGED
@@ -1,55 +1,24 @@
1
- var __extends = (this && this.__extends) || (function () {
2
- var extendStatics = function (d, b) {
3
- extendStatics = Object.setPrototypeOf ||
4
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
- return extendStatics(d, b);
7
- };
8
- return function (d, b) {
9
- if (typeof b !== "function" && b !== null)
10
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
- extendStatics(d, b);
12
- function __() { this.constructor = d; }
13
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
- };
15
- })();
16
1
  var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
17
2
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
18
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
19
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
20
5
  };
21
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
22
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
23
- if (ar || !(i in from)) {
24
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
25
- ar[i] = from[i];
26
- }
27
- }
28
- return to.concat(ar || Array.prototype.slice.call(from));
29
- };
30
- var _a, _b;
31
6
  var _Translation_templates;
32
- var Runes = /** @class */ (function (_super) {
33
- __extends(Runes, _super);
34
- function Runes() {
35
- return _super !== null && _super.apply(this, arguments) || this;
36
- }
37
- Runes.prototype.toString = function () {
7
+ export class Runes extends Array {
8
+ toString() {
38
9
  return this.join("");
39
- };
40
- return Runes;
41
- }(Array));
42
- export { Runes };
10
+ }
11
+ }
43
12
  /**
44
13
  * Parses a template string and extracts the template parts and order of slots.
45
14
  * @param {string} templateString - The template string to parse.
46
15
  * @returns {{ template: string[], order: number[] }}
47
16
  */
48
17
  export function parseTemplate(templateString) {
49
- var order = [];
50
- var template = [];
51
- var parts = templateString.split(/({\d*})/);
52
- parts.forEach(function (part) {
18
+ const order = [];
19
+ const template = [];
20
+ const parts = templateString.split(/({\d*})/);
21
+ parts.forEach((part) => {
53
22
  if (part.match(/^{\d*}$/)) {
54
23
  if (part === '{}') {
55
24
  order.push(order.length);
@@ -63,22 +32,21 @@ export function parseTemplate(templateString) {
63
32
  template.push(part);
64
33
  }
65
34
  });
66
- return { template: template, order: order };
35
+ return { template, order };
67
36
  }
68
37
  /**
69
38
  * Represents a Translation object that handles string translation based on locale and templates.
70
39
  */
71
- var Translation = /** @class */ (function () {
72
- function Translation() {
73
- var _this = this;
40
+ export class Translation {
41
+ constructor(locale) {
74
42
  /**
75
43
  * Templates object that stores the translation templates for each locale.
76
44
  * @type {Proxy}
77
45
  */
78
46
  _Translation_templates.set(this, new Proxy({}, {
79
- get: function (templates, locale) {
47
+ get(templates, locale) {
80
48
  return new Proxy(templates[locale] || {}, {
81
- set: function (region, key, value) {
49
+ set(region, key, value) {
82
50
  if (typeof value !== "string") {
83
51
  throw new Error("Template must be a string.");
84
52
  }
@@ -87,9 +55,8 @@ var Translation = /** @class */ (function () {
87
55
  }
88
56
  });
89
57
  },
90
- set: function (templates, locale, regionTemplates) {
91
- templates[locale] = Object.entries(regionTemplates).reduce(function (region, _a) {
92
- var key = _a[0], value = _a[1];
58
+ set(templates, locale, regionTemplates) {
59
+ templates[locale] = Object.entries(regionTemplates).reduce((region, [key, value]) => {
93
60
  region[key] = parseTemplate(value);
94
61
  return region;
95
62
  }, {});
@@ -105,33 +72,32 @@ var Translation = /** @class */ (function () {
105
72
  * @returns {Runes} - The translated string with dynamic parts inserted.
106
73
  * @throws {Error} - If the length of the template parts does not match the length of the template.
107
74
  */
108
- this.translate = function (locale, strings) {
75
+ this.translate = (locale, strings, ...parts) => {
109
76
  var _a, _b, _c;
110
- var parts = [];
111
- for (var _i = 2; _i < arguments.length; _i++) {
112
- parts[_i - 2] = arguments[_i];
113
- }
114
77
  if (typeof strings === "string") {
115
78
  strings = strings.split("{}");
116
79
  }
117
- var key = strings.join("{}");
118
- var translation = (_a = __classPrivateFieldGet(_this, _Translation_templates, "f")) === null || _a === void 0 ? void 0 : _a[locale];
119
- var _d = (translation === null || translation === void 0 ? void 0 : translation[key]) || {}, template = _d.template, order = _d.order;
80
+ const key = strings.join("{}");
81
+ let translation = (_a = __classPrivateFieldGet(this, _Translation_templates, "f")) === null || _a === void 0 ? void 0 : _a[locale];
82
+ if (!translation) {
83
+ translation = __classPrivateFieldGet(this, _Translation_templates, "f")[this.defaultLocale];
84
+ }
85
+ let { template, order } = (translation === null || translation === void 0 ? void 0 : translation[key]) || {};
120
86
  if (!template) {
121
87
  if (((_c = (_b = import.meta) === null || _b === void 0 ? void 0 : _b.env) === null || _c === void 0 ? void 0 : _c.MODE) === "development") {
122
- console.warn("not match translate key, ".concat(key), { translation: translation, locale: locale, strings: strings, parts: parts });
88
+ console.warn(`not match translate key, ${key}`, { translation, locale, strings, parts });
123
89
  }
124
90
  template = strings.slice();
125
- order = parts.map(function (_, i) { return i; });
91
+ order = parts.map((_, i) => i);
126
92
  }
127
93
  if (parts.length !== template.length - 1) {
128
- throw new Error("translate template parts length does not match. locale: ".concat(locale, ", key: ").concat(key));
94
+ throw new Error(`translate template parts length does not match. locale: ${locale}, key: ${key}`);
129
95
  }
130
- var runes = template.reduce(function (runes, template, idx) {
96
+ const runes = template.reduce((runes, template, idx) => {
131
97
  runes.push(template);
132
- var orderIdx = order[idx];
98
+ const orderIdx = order[idx];
133
99
  if (orderIdx >= 0) {
134
- var part = parts[orderIdx];
100
+ const part = parts[orderIdx];
135
101
  if (typeof part === "function") {
136
102
  runes.push(part(locale));
137
103
  }
@@ -144,60 +110,59 @@ var Translation = /** @class */ (function () {
144
110
  return runes;
145
111
  };
146
112
  /**
147
- * Apply template by regex string
113
+ * Use regex extract template and vars
148
114
  * @param {*} locale
149
115
  * @param {*} regexString
150
116
  * @param {*} matchString
151
117
  * @returns {Runes}
152
118
  */
153
- this.translateByRegEx = function (locale, regexString, matchString) {
154
- var _a = regexTemplate(regexString, matchString), parts = _a.parts, strings = _a.strings;
155
- return _this.translate.apply(_this, __spreadArray([locale, strings], parts, false));
119
+ this.translateByRegEx = (locale, regexString, matchString) => {
120
+ const { parts, strings } = regexTemplate(regexString, matchString);
121
+ return this.translate(locale, strings, ...parts);
122
+ };
123
+ this.l10n = (strings, ...parts) => {
124
+ return translation.translate(this.defaultLocale, strings, ...parts);
156
125
  };
126
+ this.l10nRegExp = (regexString, matchString) => {
127
+ return translation.translateByRegEx(this.defaultLocale, regexString, matchString);
128
+ };
129
+ this.defaultLocale = locale;
157
130
  }
158
- Object.defineProperty(Translation.prototype, "templates", {
159
- get: function () {
160
- return __classPrivateFieldGet(this, _Translation_templates, "f");
161
- },
162
- set: function (value) {
163
- var _this = this;
164
- Object.entries(value).forEach(function (_a) {
165
- var locale = _a[0], regionTemplates = _a[1];
166
- __classPrivateFieldGet(_this, _Translation_templates, "f")[locale] = regionTemplates;
167
- });
168
- return true;
169
- },
170
- enumerable: false,
171
- configurable: true
172
- });
173
- return Translation;
174
- }());
175
- export { Translation };
131
+ get templates() {
132
+ return __classPrivateFieldGet(this, _Translation_templates, "f");
133
+ }
134
+ set templates(value) {
135
+ Object.entries(value).forEach(([locale, regionTemplates]) => {
136
+ __classPrivateFieldGet(this, _Translation_templates, "f")[locale] = regionTemplates;
137
+ });
138
+ return true;
139
+ }
140
+ }
176
141
  _Translation_templates = new WeakMap();
177
- var translation = new Translation();
142
+ const translation = new Translation();
178
143
  export default translation;
179
- export var l10n = translation.translate.bind(null, (_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _a === void 0 ? void 0 : _a.language);
180
- export var l10nRegExp = translation.translateByRegEx.bind(null, (_b = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _b === void 0 ? void 0 : _b.language);
144
+ export const l10n = translation.l10n;
145
+ export const l10nRegExp = translation.l10nRegExp;
181
146
  /**
182
147
  * @param {string} regexString
183
148
  * @param {string} matchString
184
149
  * @returns {{ strings: Array<string>, parts: Array<string> }}
185
150
  */
186
151
  export function regexTemplate(regexString, matchString) {
187
- var parts = [];
188
- var strings = [];
189
- var matches = new RegExp(regexString).exec(matchString);
152
+ let parts = [];
153
+ const strings = [];
154
+ const matches = new RegExp(regexString).exec(matchString);
190
155
  if (!matches) {
191
- return { parts: [], strings: strings };
156
+ return { parts: [], strings };
192
157
  }
193
158
  parts = matches.slice(1);
194
159
  regexString
195
160
  .split(/(\([^)]+\))/) // split by regex group
196
- .forEach(function (part) {
161
+ .forEach(part => {
197
162
  if (!part.startsWith("(") || !part.endsWith(")")) {
198
163
  strings.push(part);
199
164
  }
200
165
  });
201
- return { strings: strings, parts: parts };
166
+ return { strings, parts };
202
167
  }
203
168
  //# sourceMappingURL=intl.js.map
package/dist/intl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"intl.js","sourceRoot":"","sources":["../src/intl.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intl.js","sourceRoot":"","sources":["../src/intl.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intl-template",
3
- "version": "1.0.0-alpha.3",
3
+ "version": "1.0.0-alpha.5",
4
4
  "description": "l10n tagged template literals",
5
5
  "type": "module",
6
6
  "main": "dist/intl.js",
package/src/intl.js CHANGED
@@ -33,6 +33,10 @@ export function parseTemplate(templateString) {
33
33
  * Represents a Translation object that handles string translation based on locale and templates.
34
34
  */
35
35
  export class Translation {
36
+ constructor(locale) {
37
+ this.defaultLocale = locale
38
+ }
39
+
36
40
  /**
37
41
  * Templates object that stores the translation templates for each locale.
38
42
  * @type {Proxy}
@@ -89,7 +93,10 @@ export class Translation {
89
93
  }
90
94
 
91
95
  const key = strings.join("{}")
92
- const translation = this.#templates?.[locale]
96
+ let translation = this.#templates?.[locale]
97
+ if (!translation) {
98
+ translation = this.#templates[this.defaultLocale]
99
+ }
93
100
  let { template, order } = translation?.[key] || {}
94
101
  if (!template) {
95
102
  if (import.meta?.env?.MODE === "development") {
@@ -123,7 +130,7 @@ export class Translation {
123
130
  }
124
131
 
125
132
  /**
126
- * Apply template by regex string
133
+ * Use regex extract template and vars
127
134
  * @param {*} locale
128
135
  * @param {*} regexString
129
136
  * @param {*} matchString
@@ -133,15 +140,23 @@ export class Translation {
133
140
  const { parts, strings } = regexTemplate(regexString, matchString)
134
141
  return this.translate(locale, strings, ...parts);
135
142
  }
143
+
144
+ l10n = (strings, ...parts) => {
145
+ return translation.translate(this.defaultLocale, strings, ...parts)
146
+ }
147
+
148
+ l10nRegExp = (regexString, matchString) => {
149
+ return translation.translateByRegEx(this.defaultLocale, regexString, matchString)
150
+ }
136
151
  }
137
152
 
138
153
  const translation = new Translation()
139
154
 
140
155
  export default translation
141
156
 
142
- export const l10n = translation.translate.bind(null, globalThis?.navigator?.language);
157
+ export const l10n = translation.l10n
143
158
 
144
- export const l10nRegExp = translation.translateByRegEx.bind(null, globalThis?.navigator?.language);
159
+ export const l10nRegExp = translation.l10nRegExp
145
160
 
146
161
  /**
147
162
  * @param {string} regexString
package/tsconfig.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "allowJs": true,
4
- "target": "ES5",
4
+ "target": "es2015",
5
5
  "lib": [
6
6
  "ESNext",
7
7
  "DOM"