@yaebal/i18n 0.0.1 → 0.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE;;;;GAIG;AACH,MAAM,WAAW,UAAU;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED,6EAA6E;AAC7E,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE7C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;AAE5E,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,GAAG,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM;IAC5C,aAAa,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzB,kEAAkE;IAClE,OAAO,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,mEAAmE;IACnE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAyC7F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE;;;;GAIG;AACH,MAAM,WAAW,UAAU;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED,6EAA6E;AAC7E,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE7C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;AAE5E,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,GAAG,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM;IAC5C,aAAa,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzB,kEAAkE;IAClE,OAAO,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,mEAAmE;IACnE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAgD7F"}
package/lib/index.js CHANGED
@@ -10,10 +10,10 @@ export function i18n(options) {
10
10
  const getKey = options.getKey ?? ((ctx) => ctx.chat?.id?.toString());
11
11
  return (composer) => composer.derive(async (ctx) => {
12
12
  const key = getKey(ctx);
13
- let locale = (key !== undefined ? await storage.get(key) : undefined) ?? defaultLocale;
13
+ let currentLocale = (key !== undefined ? await storage.get(key) : undefined) ?? defaultLocale;
14
14
  const t = (k, params) => {
15
15
  const def = locales[defaultLocale] ?? {};
16
- const dict = locales[locale] ?? def;
16
+ const dict = locales[currentLocale] ?? def;
17
17
  const raw = dict[k] ?? def[k] ?? k;
18
18
  let s;
19
19
  if (typeof raw === "string") {
@@ -21,7 +21,7 @@ export function i18n(options) {
21
21
  }
22
22
  else {
23
23
  const n = params?.n;
24
- const category = typeof n === "number" ? new Intl.PluralRules(locale).select(n) : "other";
24
+ const category = typeof n === "number" ? new Intl.PluralRules(currentLocale).select(n) : "other";
25
25
  s = raw[category] ?? raw.other;
26
26
  }
27
27
  if (params) {
@@ -31,11 +31,17 @@ export function i18n(options) {
31
31
  return s;
32
32
  };
33
33
  const changeLanguage = async (next) => {
34
- locale = next;
34
+ currentLocale = next;
35
35
  if (key !== undefined)
36
36
  await storage.set(key, next);
37
37
  };
38
- return { t, locale, changeLanguage };
38
+ return {
39
+ t,
40
+ get locale() {
41
+ return currentLocale;
42
+ },
43
+ changeLanguage,
44
+ };
39
45
  });
40
46
  }
41
47
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAuB,MAAM,iBAAiB,CAAC;AA2CrE;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAmB,OAAuB;IAC7D,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE3C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,aAAa,EAAU,CAAC;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9E,OAAO,CAAC,QAAQ,EAAE,EAAE,CACnB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAyB,EAAE;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,MAAM,GACT,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC;QAE3E,MAAM,CAAC,GAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAS,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAS,OAAO,CAAC,MAAW,CAAC,IAAI,GAAG,CAAC;YAC/C,MAAM,GAAG,GAAc,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE9C,IAAI,CAAS,CAAC;YACd,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC7B,CAAC,GAAG,GAAG,CAAC;YACT,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;gBACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAE1F,CAAC,GAAG,GAAG,CAAC,QAA4B,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC;YACpD,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACZ,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;YAED,OAAO,CAAC,CAAC;QACV,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;YAC5D,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC;QAEF,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAuB,MAAM,iBAAiB,CAAC;AA2CrE;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAmB,OAAuB;IAC7D,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE3C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,aAAa,EAAU,CAAC;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9E,OAAO,CAAC,QAAQ,EAAE,EAAE,CACnB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAyB,EAAE;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,aAAa,GAChB,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC;QAE3E,MAAM,CAAC,GAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAS,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAS,OAAO,CAAC,aAAkB,CAAC,IAAI,GAAG,CAAC;YACtD,MAAM,GAAG,GAAc,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE9C,IAAI,CAAS,CAAC;YACd,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC7B,CAAC,GAAG,GAAG,CAAC;YACT,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;gBACpB,MAAM,QAAQ,GACb,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAEjF,CAAC,GAAG,GAAG,CAAC,QAA4B,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC;YACpD,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACZ,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;YAED,OAAO,CAAC,CAAC;QACV,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;YAC5D,aAAa,GAAG,IAAI,CAAC;YACrB,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC;QAEF,OAAO;YACN,CAAC;YACD,IAAI,MAAM;gBACT,OAAO,aAAa,CAAC;YACtB,CAAC;YACD,cAAc;SACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaebal/i18n",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "yaebal i18n plugin — per-chat locale, ctx.t / ctx.changeLanguage (powers useTranslation).",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -16,7 +16,7 @@
16
16
  "src"
17
17
  ],
18
18
  "dependencies": {
19
- "@yaebal/core": "0.0.1",
19
+ "@yaebal/core": "0.0.2",
20
20
  "@yaebal/session": "0.0.1"
21
21
  },
22
22
  "devDependencies": {
package/src/index.ts CHANGED
@@ -56,12 +56,12 @@ export function i18n<L extends string>(options: I18nOptions<L>): Plugin<Context,
56
56
  return (composer) =>
57
57
  composer.derive(async (ctx): Promise<I18nControls> => {
58
58
  const key = getKey(ctx);
59
- let locale: string =
59
+ let currentLocale: string =
60
60
  (key !== undefined ? await storage.get(key) : undefined) ?? defaultLocale;
61
61
 
62
62
  const t: TFn = (k, params) => {
63
63
  const def: Dict = locales[defaultLocale] ?? {};
64
- const dict: Dict = locales[locale as L] ?? def;
64
+ const dict: Dict = locales[currentLocale as L] ?? def;
65
65
  const raw: DictValue = dict[k] ?? def[k] ?? k;
66
66
 
67
67
  let s: string;
@@ -69,7 +69,8 @@ export function i18n<L extends string>(options: I18nOptions<L>): Plugin<Context,
69
69
  s = raw;
70
70
  } else {
71
71
  const n = params?.n;
72
- const category = typeof n === "number" ? new Intl.PluralRules(locale).select(n) : "other";
72
+ const category =
73
+ typeof n === "number" ? new Intl.PluralRules(currentLocale).select(n) : "other";
73
74
 
74
75
  s = raw[category as keyof PluralDict] ?? raw.other;
75
76
  }
@@ -77,15 +78,21 @@ export function i18n<L extends string>(options: I18nOptions<L>): Plugin<Context,
77
78
  if (params) {
78
79
  for (const [pk, pv] of Object.entries(params)) s = s.replaceAll(`{${pk}}`, String(pv));
79
80
  }
80
-
81
+
81
82
  return s;
82
83
  };
83
84
 
84
85
  const changeLanguage = async (next: string): Promise<void> => {
85
- locale = next;
86
+ currentLocale = next;
86
87
  if (key !== undefined) await storage.set(key, next);
87
88
  };
88
89
 
89
- return { t, locale, changeLanguage };
90
+ return {
91
+ t,
92
+ get locale() {
93
+ return currentLocale;
94
+ },
95
+ changeLanguage,
96
+ };
90
97
  });
91
98
  }