@digitaldefiance/i18n-lib 1.3.13 → 1.3.14

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.
Files changed (243) hide show
  1. package/README.md +4 -0
  2. package/package.json +4 -3
  3. package/src/active-context.d.ts +30 -0
  4. package/src/active-context.d.ts.map +1 -0
  5. package/src/active-context.js +3 -0
  6. package/src/active-context.js.map +1 -0
  7. package/src/component-definition.d.ts +12 -0
  8. package/src/component-definition.d.ts.map +1 -0
  9. package/src/component-definition.js +3 -0
  10. package/src/component-definition.js.map +1 -0
  11. package/src/component-registration.d.ts +10 -0
  12. package/src/component-registration.d.ts.map +1 -0
  13. package/src/component-registration.js +3 -0
  14. package/src/component-registration.js.map +1 -0
  15. package/src/component-registry.d.ts +69 -0
  16. package/src/component-registry.d.ts.map +1 -0
  17. package/src/component-registry.js +248 -0
  18. package/src/component-registry.js.map +1 -0
  19. package/src/context-error-type.d.ts +4 -0
  20. package/src/context-error-type.d.ts.map +1 -0
  21. package/src/context-error-type.js +8 -0
  22. package/src/context-error-type.js.map +1 -0
  23. package/src/context-error.d.ts +7 -0
  24. package/src/context-error.d.ts.map +1 -0
  25. package/src/context-error.js +18 -0
  26. package/src/context-error.js.map +1 -0
  27. package/src/context-manager.d.ts +34 -0
  28. package/src/context-manager.d.ts.map +1 -0
  29. package/src/context-manager.js +60 -0
  30. package/src/context-manager.js.map +1 -0
  31. package/src/context.d.ts +45 -0
  32. package/src/context.d.ts.map +1 -0
  33. package/src/context.js +70 -0
  34. package/src/context.js.map +1 -0
  35. package/src/core-i18n.d.ts +63 -0
  36. package/src/core-i18n.d.ts.map +1 -0
  37. package/src/core-i18n.js +478 -0
  38. package/src/core-i18n.js.map +1 -0
  39. package/src/core-string-key.d.ts +43 -0
  40. package/src/core-string-key.d.ts.map +1 -0
  41. package/src/core-string-key.js +51 -0
  42. package/src/core-string-key.js.map +1 -0
  43. package/src/create-translation-adapter.d.ts +21 -0
  44. package/src/create-translation-adapter.d.ts.map +1 -0
  45. package/src/create-translation-adapter.js +37 -0
  46. package/src/create-translation-adapter.js.map +1 -0
  47. package/src/currency-code.d.ts +20 -0
  48. package/src/currency-code.d.ts.map +1 -0
  49. package/src/currency-code.js +37 -0
  50. package/src/currency-code.js.map +1 -0
  51. package/src/{currency-format.ts → currency-format.d.ts} +5 -5
  52. package/src/currency-format.d.ts.map +1 -0
  53. package/src/currency-format.js +3 -0
  54. package/src/currency-format.js.map +1 -0
  55. package/src/currency.d.ts +12 -0
  56. package/src/currency.d.ts.map +1 -0
  57. package/src/currency.js +49 -0
  58. package/src/currency.js.map +1 -0
  59. package/src/default-config.d.ts +33 -0
  60. package/src/default-config.d.ts.map +1 -0
  61. package/src/default-config.js +102 -0
  62. package/src/default-config.js.map +1 -0
  63. package/src/enum-registry.d.ts +45 -0
  64. package/src/enum-registry.d.ts.map +1 -0
  65. package/src/enum-registry.js +103 -0
  66. package/src/enum-registry.js.map +1 -0
  67. package/src/global-active-context.d.ts +51 -0
  68. package/src/global-active-context.d.ts.map +1 -0
  69. package/src/global-active-context.js +179 -0
  70. package/src/global-active-context.js.map +1 -0
  71. package/src/handleable.d.ts +14 -0
  72. package/src/handleable.d.ts.map +1 -0
  73. package/src/handleable.js +66 -0
  74. package/src/handleable.js.map +1 -0
  75. package/src/i-global-active-context.d.ts +23 -0
  76. package/src/i-global-active-context.d.ts.map +1 -0
  77. package/src/i-global-active-context.js +3 -0
  78. package/src/i-global-active-context.js.map +1 -0
  79. package/src/i-handleable-error-options.d.ts +7 -0
  80. package/src/i-handleable-error-options.d.ts.map +1 -0
  81. package/src/i-handleable-error-options.js +3 -0
  82. package/src/i-handleable-error-options.js.map +1 -0
  83. package/src/i-handleable.d.ts +6 -0
  84. package/src/i-handleable.d.ts.map +1 -0
  85. package/src/i-handleable.js +3 -0
  86. package/src/i-handleable.js.map +1 -0
  87. package/src/i18n-config.d.ts +21 -0
  88. package/src/i18n-config.d.ts.map +1 -0
  89. package/src/i18n-config.js +3 -0
  90. package/src/i18n-config.js.map +1 -0
  91. package/src/{i18n-context.ts → i18n-context.d.ts} +7 -7
  92. package/src/i18n-context.d.ts.map +1 -0
  93. package/src/i18n-context.js +3 -0
  94. package/src/i18n-context.js.map +1 -0
  95. package/src/i18n-engine.d.ts +179 -0
  96. package/src/i18n-engine.d.ts.map +1 -0
  97. package/src/i18n-engine.js +355 -0
  98. package/src/i18n-engine.js.map +1 -0
  99. package/src/{index.ts → index.d.ts} +2 -10
  100. package/src/index.d.ts.map +1 -0
  101. package/src/index.js +71 -0
  102. package/src/index.js.map +1 -0
  103. package/src/{language-codes.ts → language-codes.d.ts} +12 -23
  104. package/src/language-codes.d.ts.map +1 -0
  105. package/src/language-codes.js +32 -0
  106. package/src/language-codes.js.map +1 -0
  107. package/src/language-definition.d.ts +14 -0
  108. package/src/language-definition.d.ts.map +1 -0
  109. package/src/language-definition.js +3 -0
  110. package/src/language-definition.js.map +1 -0
  111. package/src/language-registry.d.ts +114 -0
  112. package/src/language-registry.d.ts.map +1 -0
  113. package/src/language-registry.js +217 -0
  114. package/src/language-registry.js.map +1 -0
  115. package/src/plugin-i18n-engine.d.ts +147 -0
  116. package/src/plugin-i18n-engine.d.ts.map +1 -0
  117. package/src/plugin-i18n-engine.js +369 -0
  118. package/src/plugin-i18n-engine.js.map +1 -0
  119. package/src/plugin-translatable-generic-error.d.ts +30 -0
  120. package/src/plugin-translatable-generic-error.d.ts.map +1 -0
  121. package/src/plugin-translatable-generic-error.js +72 -0
  122. package/src/plugin-translatable-generic-error.js.map +1 -0
  123. package/src/plugin-translatable-handleable-generic.d.ts +29 -0
  124. package/src/plugin-translatable-handleable-generic.d.ts.map +1 -0
  125. package/src/plugin-translatable-handleable-generic.js +44 -0
  126. package/src/plugin-translatable-handleable-generic.js.map +1 -0
  127. package/src/plugin-typed-handleable.d.ts +15 -0
  128. package/src/plugin-typed-handleable.d.ts.map +1 -0
  129. package/src/plugin-typed-handleable.js +51 -0
  130. package/src/plugin-typed-handleable.js.map +1 -0
  131. package/src/registry-config.d.ts +15 -0
  132. package/src/registry-config.d.ts.map +1 -0
  133. package/src/registry-config.js +3 -0
  134. package/src/registry-config.js.map +1 -0
  135. package/src/registry-error-type.d.ts +13 -0
  136. package/src/registry-error-type.d.ts.map +1 -0
  137. package/src/registry-error-type.js +17 -0
  138. package/src/registry-error-type.js.map +1 -0
  139. package/src/registry-error.d.ts +19 -0
  140. package/src/registry-error.d.ts.map +1 -0
  141. package/src/registry-error.js +48 -0
  142. package/src/registry-error.js.map +1 -0
  143. package/src/strict-types.d.ts +19 -0
  144. package/src/strict-types.d.ts.map +1 -0
  145. package/src/strict-types.js +18 -0
  146. package/src/strict-types.js.map +1 -0
  147. package/src/template.d.ts +13 -0
  148. package/src/template.d.ts.map +1 -0
  149. package/src/template.js +31 -0
  150. package/src/template.js.map +1 -0
  151. package/src/timezone.d.ts +12 -0
  152. package/src/timezone.d.ts.map +1 -0
  153. package/src/timezone.js +24 -0
  154. package/src/timezone.js.map +1 -0
  155. package/src/translatable.d.ts +6 -0
  156. package/src/translatable.d.ts.map +1 -0
  157. package/src/translatable.js +12 -0
  158. package/src/translatable.js.map +1 -0
  159. package/src/translation-engine.d.ts +9 -0
  160. package/src/translation-engine.d.ts.map +1 -0
  161. package/src/translation-engine.js +3 -0
  162. package/src/translation-engine.js.map +1 -0
  163. package/src/translation-request.d.ts +10 -0
  164. package/src/translation-request.d.ts.map +1 -0
  165. package/src/translation-request.js +3 -0
  166. package/src/translation-request.js.map +1 -0
  167. package/src/translation-response.d.ts +9 -0
  168. package/src/translation-response.d.ts.map +1 -0
  169. package/src/translation-response.js +3 -0
  170. package/src/translation-response.js.map +1 -0
  171. package/src/typed-error.d.ts +73 -0
  172. package/src/typed-error.d.ts.map +1 -0
  173. package/src/typed-error.js +267 -0
  174. package/src/typed-error.js.map +1 -0
  175. package/src/typed-handleable.d.ts +15 -0
  176. package/src/typed-handleable.d.ts.map +1 -0
  177. package/src/typed-handleable.js +46 -0
  178. package/src/typed-handleable.js.map +1 -0
  179. package/src/{types.ts → types.d.ts} +21 -75
  180. package/src/types.d.ts.map +1 -0
  181. package/src/types.js +19 -0
  182. package/src/types.js.map +1 -0
  183. package/src/unified-translator.d.ts +31 -0
  184. package/src/unified-translator.d.ts.map +1 -0
  185. package/src/unified-translator.js +71 -0
  186. package/src/unified-translator.js.map +1 -0
  187. package/src/utils.d.ts +65 -0
  188. package/src/utils.d.ts.map +1 -0
  189. package/src/utils.js +129 -0
  190. package/src/utils.js.map +1 -0
  191. package/src/validation-config.d.ts +12 -0
  192. package/src/validation-config.d.ts.map +1 -0
  193. package/src/validation-config.js +3 -0
  194. package/src/validation-config.js.map +1 -0
  195. package/src/validation-result.d.ts +13 -0
  196. package/src/validation-result.d.ts.map +1 -0
  197. package/src/validation-result.js +3 -0
  198. package/src/validation-result.js.map +1 -0
  199. package/LICENSE +0 -21
  200. package/src/active-context.ts +0 -30
  201. package/src/component-definition.ts +0 -11
  202. package/src/component-registration.ts +0 -13
  203. package/src/component-registry.ts +0 -392
  204. package/src/context-error-type.ts +0 -3
  205. package/src/context-error.ts +0 -16
  206. package/src/context-manager.ts +0 -71
  207. package/src/context.ts +0 -90
  208. package/src/core-i18n.ts +0 -609
  209. package/src/core-string-key.ts +0 -49
  210. package/src/create-translation-adapter.ts +0 -47
  211. package/src/currency-code.ts +0 -35
  212. package/src/currency.ts +0 -52
  213. package/src/default-config.ts +0 -199
  214. package/src/enum-registry.ts +0 -138
  215. package/src/global-active-context.ts +0 -255
  216. package/src/handleable.ts +0 -79
  217. package/src/i-global-active-context.ts +0 -59
  218. package/src/i-handleable-error-options.ts +0 -6
  219. package/src/i-handleable.ts +0 -5
  220. package/src/i18n-config.ts +0 -29
  221. package/src/i18n-engine.ts +0 -491
  222. package/src/language-definition.ts +0 -13
  223. package/src/language-registry.ts +0 -292
  224. package/src/plugin-i18n-engine.ts +0 -520
  225. package/src/plugin-translatable-generic-error.ts +0 -106
  226. package/src/plugin-translatable-handleable-generic.ts +0 -60
  227. package/src/plugin-typed-handleable.ts +0 -77
  228. package/src/registry-config.ts +0 -15
  229. package/src/registry-error-type.ts +0 -12
  230. package/src/registry-error.ts +0 -74
  231. package/src/strict-types.ts +0 -35
  232. package/src/template.ts +0 -63
  233. package/src/timezone.ts +0 -20
  234. package/src/translatable.ts +0 -15
  235. package/src/translation-engine.ts +0 -8
  236. package/src/translation-request.ts +0 -12
  237. package/src/translation-response.ts +0 -8
  238. package/src/typed-error.ts +0 -384
  239. package/src/typed-handleable.ts +0 -70
  240. package/src/unified-translator.ts +0 -96
  241. package/src/utils.ts +0 -213
  242. package/src/validation-config.ts +0 -11
  243. package/src/validation-result.ts +0 -12
@@ -0,0 +1,21 @@
1
+ import { PluginI18nEngine } from './plugin-i18n-engine';
2
+ import { TranslationEngine } from './translation-engine';
3
+ /**
4
+ * Creates a TranslationEngine adapter from a PluginI18nEngine for a specific component.
5
+ * This allows PluginI18nEngine to be used where TranslationEngine interface is expected.
6
+ *
7
+ * @param pluginEngine - The PluginI18nEngine instance to wrap
8
+ * @param componentId - The component ID to use for translations
9
+ * @returns A TranslationEngine that delegates to the PluginI18nEngine
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const pluginEngine = getMyPluginI18nEngine();
14
+ * const adapter = createTranslationAdapter(pluginEngine, 'my-component');
15
+ *
16
+ * // Now can be used where TranslationEngine is expected
17
+ * const error = new MyError(errorType, adapter);
18
+ * ```
19
+ */
20
+ export declare function createTranslationAdapter<TStringKey extends string, TLanguage extends string>(pluginEngine: PluginI18nEngine<TLanguage>, componentId: string): TranslationEngine<TStringKey>;
21
+ //# sourceMappingURL=create-translation-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-translation-adapter.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/create-translation-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,EAC1F,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,EACzC,WAAW,EAAE,MAAM,GAClB,iBAAiB,CAAC,UAAU,CAAC,CAuB/B"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTranslationAdapter = createTranslationAdapter;
4
+ /**
5
+ * Creates a TranslationEngine adapter from a PluginI18nEngine for a specific component.
6
+ * This allows PluginI18nEngine to be used where TranslationEngine interface is expected.
7
+ *
8
+ * @param pluginEngine - The PluginI18nEngine instance to wrap
9
+ * @param componentId - The component ID to use for translations
10
+ * @returns A TranslationEngine that delegates to the PluginI18nEngine
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const pluginEngine = getMyPluginI18nEngine();
15
+ * const adapter = createTranslationAdapter(pluginEngine, 'my-component');
16
+ *
17
+ * // Now can be used where TranslationEngine is expected
18
+ * const error = new MyError(errorType, adapter);
19
+ * ```
20
+ */
21
+ function createTranslationAdapter(pluginEngine, componentId) {
22
+ return {
23
+ translate: (key, vars, lang) => {
24
+ try {
25
+ return pluginEngine.translate(componentId, key, vars, lang);
26
+ }
27
+ catch (error) {
28
+ // Fallback to key if translation fails
29
+ return String(key);
30
+ }
31
+ },
32
+ safeTranslate: (key, vars, lang) => {
33
+ return pluginEngine.safeTranslate(componentId, key, vars, lang);
34
+ },
35
+ };
36
+ }
37
+ //# sourceMappingURL=create-translation-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-translation-adapter.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/create-translation-adapter.ts"],"names":[],"mappings":";;AAoBA,4DA0BC;AA3CD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,wBAAwB,CACtC,YAAyC,EACzC,WAAmB;IAEnB,OAAO;QACL,SAAS,EAAE,CACT,GAAe,EACf,IAAsC,EACtC,IAAgB,EACR,EAAE;YACV,IAAI,CAAC;gBACH,OAAO,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,uCAAuC;gBACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,aAAa,EAAE,CACb,GAAe,EACf,IAAsC,EACtC,IAAgB,EACR,EAAE;YACV,OAAO,YAAY,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Class representing a validated currency code.
3
+ */
4
+ export declare class CurrencyCode {
5
+ private _value;
6
+ /**
7
+ * Gets the currency code value.
8
+ */
9
+ get value(): string;
10
+ /**
11
+ * Sets the currency code value after validating it.
12
+ */
13
+ set value(value: string);
14
+ /**
15
+ * Gets the list of all valid currency codes.
16
+ */
17
+ static get values(): string[];
18
+ constructor(value?: string);
19
+ }
20
+ //# sourceMappingURL=currency-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-code.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/currency-code.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA+B;IAC7C;;OAEG;IACH,IAAW,KAAK,IAAI,MAAM,CAEzB;IACD;;OAEG;IACH,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAK7B;IAED;;OAEG;IACH,WAAkB,MAAM,IAAI,MAAM,EAAE,CAEnC;gBAEW,KAAK,GAAE,MAA4B;CAGhD"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CurrencyCode = void 0;
4
+ const currency_codes_1 = require("currency-codes");
5
+ const types_1 = require("./types");
6
+ /**
7
+ * Class representing a validated currency code.
8
+ */
9
+ class CurrencyCode {
10
+ _value = types_1.DefaultCurrencyCode;
11
+ /**
12
+ * Gets the currency code value.
13
+ */
14
+ get value() {
15
+ return this._value;
16
+ }
17
+ /**
18
+ * Sets the currency code value after validating it.
19
+ */
20
+ set value(value) {
21
+ if (!CurrencyCode.values.includes(value)) {
22
+ throw new Error('Invalid currency code');
23
+ }
24
+ this._value = value;
25
+ }
26
+ /**
27
+ * Gets the list of all valid currency codes.
28
+ */
29
+ static get values() {
30
+ return (0, currency_codes_1.codes)();
31
+ }
32
+ constructor(value = types_1.DefaultCurrencyCode) {
33
+ this.value = value;
34
+ }
35
+ }
36
+ exports.CurrencyCode = CurrencyCode;
37
+ //# sourceMappingURL=currency-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-code.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/currency-code.ts"],"names":[],"mappings":";;;AAAA,mDAAuC;AACvC,mCAA8C;AAE9C;;GAEG;AACH,MAAa,YAAY;IACf,MAAM,GAAW,2BAAmB,CAAC;IAC7C;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD;;OAEG;IACH,IAAW,KAAK,CAAC,KAAa;QAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,MAAM;QACtB,OAAO,IAAA,sBAAK,GAAE,CAAC;IACjB,CAAC;IAED,YAAY,QAAgB,2BAAmB;QAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AA5BD,oCA4BC"}
@@ -1,11 +1,11 @@
1
1
  import { CurrencyPosition } from './types';
2
-
3
2
  /**
4
3
  * Represents the format details for a specific currency in a given locale.
5
4
  */
6
5
  export interface CurrencyFormat {
7
- symbol: string;
8
- position: CurrencyPosition;
9
- groupSeparator: string;
10
- decimalSeparator: string;
6
+ symbol: string;
7
+ position: CurrencyPosition;
8
+ groupSeparator: string;
9
+ decimalSeparator: string;
11
10
  }
11
+ //# sourceMappingURL=currency-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-format.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/currency-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=currency-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-format.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/currency-format.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Currency formatting utilities
3
+ */
4
+ import { CurrencyFormat } from './currency-format';
5
+ /**
6
+ * Get currency format details for a given locale and currency code.
7
+ * @param locale The locale string (e.g., 'en-US')
8
+ * @param currencyCode The ISO 4217 currency code (e.g., 'USD')
9
+ * @returns The currency format details
10
+ */
11
+ export declare function getCurrencyFormat(locale: string, currencyCode: string): CurrencyFormat;
12
+ //# sourceMappingURL=currency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/currency.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,cAAc,CAmChB"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * Currency formatting utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getCurrencyFormat = getCurrencyFormat;
7
+ /**
8
+ * Get currency format details for a given locale and currency code.
9
+ * @param locale The locale string (e.g., 'en-US')
10
+ * @param currencyCode The ISO 4217 currency code (e.g., 'USD')
11
+ * @returns The currency format details
12
+ */
13
+ function getCurrencyFormat(locale, currencyCode) {
14
+ const formatter = new Intl.NumberFormat(locale, {
15
+ style: 'currency',
16
+ currency: currencyCode,
17
+ });
18
+ const parts = formatter.formatToParts(1234567.89);
19
+ const symbol = parts.find((part) => part.type === 'currency')?.value || '';
20
+ const symbolIndex = parts.findIndex((part) => part.type === 'currency');
21
+ const decimalIndex = parts.findIndex((part) => part.type === 'decimal');
22
+ const integerIndex = parts.findIndex((part) => part.type === 'integer');
23
+ let position;
24
+ if (decimalIndex === -1) {
25
+ // No decimal separator
26
+ if (symbolIndex < integerIndex) {
27
+ position = 'prefix';
28
+ }
29
+ else {
30
+ position = 'postfix';
31
+ }
32
+ }
33
+ else if (symbolIndex < decimalIndex && symbolIndex < integerIndex) {
34
+ position = 'prefix';
35
+ }
36
+ else if (symbolIndex > decimalIndex) {
37
+ position = 'postfix';
38
+ }
39
+ else {
40
+ position = 'infix';
41
+ }
42
+ return {
43
+ symbol,
44
+ position,
45
+ groupSeparator: parts.find((part) => part.type === 'group')?.value || ',',
46
+ decimalSeparator: parts.find((part) => part.type === 'decimal')?.value || '.',
47
+ };
48
+ }
49
+ //# sourceMappingURL=currency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/currency.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAWH,8CAsCC;AA5CD;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,MAAc,EACd,YAAoB;IAEpB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QAC9C,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IAC3E,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAExE,IAAI,QAA0B,CAAC;IAC/B,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,uBAAuB;QACvB,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,SAAS,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,IAAI,WAAW,GAAG,YAAY,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;QACpE,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC;SAAM,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;QACtC,QAAQ,GAAG,SAAS,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,OAAO,CAAC;IACrB,CAAC;IAED,OAAO;QACL,MAAM;QACN,QAAQ;QACR,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG;QACzE,gBAAgB,EACd,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,GAAG;KAC9D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { I18nContext } from './i18n-context';
2
+ import { I18nEngine } from './i18n-engine';
3
+ import { LanguageCodes } from './language-codes';
4
+ import { Timezone } from './timezone';
5
+ import { LanguageCodeCollection } from './types';
6
+ export declare enum DefaultStringKey {
7
+ Common_Test = "common_test",
8
+ Error_InstanceAlreadyExistsTemplate = "error_instanceAlreadyExistsTemplate",
9
+ Error_InstanceNotFoundTemplate = "error_instanceNotFoundTemplate",
10
+ Error_MissingStringCollectionTemplate = "error_missingStringCollectionTemplate",
11
+ Error_MissingTranslationTemplate = "error_missingTranslationTemplate",
12
+ Error_DefaultLanguageNoCollectionTemplate = "error_defaultLanguageNoCollectionTemplate",
13
+ Error_MissingTranslationKeyTemplate = "error_missingTranslationKeyTemplate"
14
+ }
15
+ export type DefaultLanguageCode = typeof LanguageCodes.EN_US | typeof LanguageCodes.EN_GB | typeof LanguageCodes.FR | typeof LanguageCodes.ES | typeof LanguageCodes.ZH_CN | typeof LanguageCodes.UK;
16
+ export declare const DefaultLanguageCodes: LanguageCodeCollection<DefaultLanguageCode>;
17
+ declare global {
18
+ namespace I18n {
19
+ interface Config {
20
+ StringKey: DefaultStringKey;
21
+ Language: DefaultLanguageCode;
22
+ LanguageCodes: LanguageCodeCollection<DefaultLanguageCode>;
23
+ engine: I18nEngine<I18n.Config['StringKey'], I18n.Config['Language'], Record<any, any>>;
24
+ }
25
+ }
26
+ }
27
+ export type StringKey = I18n.Config['StringKey'];
28
+ export type Language = I18n.Config['Language'];
29
+ export type Engine = I18n.Config['engine'];
30
+ export type DefaultLanguageCodesType = I18n.Config['LanguageCodes'];
31
+ export declare const getI18nEngine: () => Engine;
32
+ export declare const getDefaultI18nEngine: <TConstants extends Record<string, any>, TContext extends I18nContext<DefaultLanguageCode>>(constants: TConstants, timezone?: Timezone, adminTimezone?: Timezone) => I18nEngine<DefaultStringKey, DefaultLanguageCode, TConstants, TContext>;
33
+ //# sourceMappingURL=default-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-config.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/default-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAEL,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAGjB,oBAAY,gBAAgB;IAC1B,WAAW,gBAAgB;IAC3B,mCAAmC,wCAAwC;IAC3E,8BAA8B,mCAAmC;IACjE,qCAAqC,0CAA0C;IAC/E,gCAAgC,qCAAqC;IACrE,yCAAyC,8CAA8C;IACvF,mCAAmC,wCAAwC;CAC5E;AAGD,MAAM,MAAM,mBAAmB,GAC3B,OAAO,aAAa,CAAC,KAAK,GAC1B,OAAO,aAAa,CAAC,KAAK,GAC1B,OAAO,aAAa,CAAC,EAAE,GACvB,OAAO,aAAa,CAAC,EAAE,GACvB,OAAO,aAAa,CAAC,KAAK,GAC1B,OAAO,aAAa,CAAC,EAAE,CAAC;AAE5B,eAAO,MAAM,oBAAoB,EAAE,sBAAsB,CAAC,mBAAmB,CAO5E,CAAC;AAGF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,IAAI,CAAC;QACb,UAAU,MAAM;YACd,SAAS,EAAE,gBAAgB,CAAC;YAC5B,QAAQ,EAAE,mBAAmB,CAAC;YAC9B,aAAa,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;YAC3D,MAAM,EAAE,UAAU,CAChB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EACxB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EACvB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CACjB,CAAC;SACH;KACF;CACF;AAGD,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/C,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3C,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAGpE,eAAO,MAAM,aAAa,QAAO,MAA4C,CAAC;AAkH9E,eAAO,MAAM,oBAAoB,GAC/B,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtC,QAAQ,SAAS,WAAW,CAAC,mBAAmB,CAAC,EAEjD,WAAW,UAAU,EACrB,WAAW,QAAQ,EACnB,gBAAgB,QAAQ,4EAcvB,CAAC"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultI18nEngine = exports.getI18nEngine = exports.DefaultLanguageCodes = exports.DefaultStringKey = void 0;
4
+ const currency_code_1 = require("./currency-code");
5
+ const i18n_engine_1 = require("./i18n-engine");
6
+ const language_codes_1 = require("./language-codes");
7
+ const timezone_1 = require("./timezone");
8
+ const types_1 = require("./types");
9
+ // Default enum types that can be augmented by consumers
10
+ var DefaultStringKey;
11
+ (function (DefaultStringKey) {
12
+ DefaultStringKey["Common_Test"] = "common_test";
13
+ DefaultStringKey["Error_InstanceAlreadyExistsTemplate"] = "error_instanceAlreadyExistsTemplate";
14
+ DefaultStringKey["Error_InstanceNotFoundTemplate"] = "error_instanceNotFoundTemplate";
15
+ DefaultStringKey["Error_MissingStringCollectionTemplate"] = "error_missingStringCollectionTemplate";
16
+ DefaultStringKey["Error_MissingTranslationTemplate"] = "error_missingTranslationTemplate";
17
+ DefaultStringKey["Error_DefaultLanguageNoCollectionTemplate"] = "error_defaultLanguageNoCollectionTemplate";
18
+ DefaultStringKey["Error_MissingTranslationKeyTemplate"] = "error_missingTranslationKeyTemplate";
19
+ })(DefaultStringKey || (exports.DefaultStringKey = DefaultStringKey = {}));
20
+ exports.DefaultLanguageCodes = {
21
+ [language_codes_1.LanguageCodes.EN_US]: 'en-US',
22
+ [language_codes_1.LanguageCodes.EN_GB]: 'en-GB',
23
+ [language_codes_1.LanguageCodes.FR]: 'fr',
24
+ [language_codes_1.LanguageCodes.ES]: 'es',
25
+ [language_codes_1.LanguageCodes.ZH_CN]: 'zh-CN',
26
+ [language_codes_1.LanguageCodes.UK]: 'uk',
27
+ };
28
+ // Singleton instance that uses the augmented types
29
+ const getI18nEngine = () => i18n_engine_1.I18nEngine.getInstance();
30
+ exports.getI18nEngine = getI18nEngine;
31
+ const getConfig = (constants, timezone, adminTimezone) => ({
32
+ strings: {
33
+ [language_codes_1.LanguageCodes.EN_US]: {
34
+ [DefaultStringKey.Common_Test]: 'Test',
35
+ [DefaultStringKey.Error_InstanceAlreadyExistsTemplate]: "Instance with key '{key}' already exists",
36
+ [DefaultStringKey.Error_InstanceNotFoundTemplate]: "Instance with key '{key}' not found",
37
+ [DefaultStringKey.Error_MissingStringCollectionTemplate]: 'Missing string collection for language: {language}',
38
+ [DefaultStringKey.Error_MissingTranslationTemplate]: "Missing translation for key '{key}' in language '{language}'",
39
+ [DefaultStringKey.Error_DefaultLanguageNoCollectionTemplate]: "Default language '{language}' has no string collection",
40
+ [DefaultStringKey.Error_MissingTranslationKeyTemplate]: 'Missing translation key for type: {type}',
41
+ },
42
+ [language_codes_1.LanguageCodes.EN_GB]: {
43
+ [DefaultStringKey.Common_Test]: 'Test',
44
+ [DefaultStringKey.Error_InstanceAlreadyExistsTemplate]: "Instance with key '{key}' already exists",
45
+ [DefaultStringKey.Error_InstanceNotFoundTemplate]: "Instance with key '{key}' not found",
46
+ [DefaultStringKey.Error_MissingStringCollectionTemplate]: 'Missing string collection for language: {language}',
47
+ [DefaultStringKey.Error_MissingTranslationTemplate]: "Missing translation for key '{key}' in language '{language}'",
48
+ [DefaultStringKey.Error_DefaultLanguageNoCollectionTemplate]: "Default language '{language}' has no string collection",
49
+ [DefaultStringKey.Error_MissingTranslationKeyTemplate]: 'Missing translation key for type: {type}',
50
+ },
51
+ [language_codes_1.LanguageCodes.FR]: {
52
+ [DefaultStringKey.Common_Test]: 'Test',
53
+ [DefaultStringKey.Error_InstanceAlreadyExistsTemplate]: "Instance avec clé '{key}' existe déjà",
54
+ [DefaultStringKey.Error_InstanceNotFoundTemplate]: "Instance avec clé '{key}' introuvable",
55
+ [DefaultStringKey.Error_MissingStringCollectionTemplate]: 'Collection de chaînes manquante pour la langue: {language}',
56
+ [DefaultStringKey.Error_MissingTranslationTemplate]: "Traduction manquante pour la clé '{key}' dans la langue '{language}'",
57
+ [DefaultStringKey.Error_DefaultLanguageNoCollectionTemplate]: "La langue par défaut '{language}' n'a pas de collection de chaînes",
58
+ [DefaultStringKey.Error_MissingTranslationKeyTemplate]: 'Clé de traduction manquante pour le type: {type}',
59
+ },
60
+ [language_codes_1.LanguageCodes.ZH_CN]: {
61
+ [DefaultStringKey.Common_Test]: '测试',
62
+ [DefaultStringKey.Error_InstanceAlreadyExistsTemplate]: "键为'{key}'的实例已存在",
63
+ [DefaultStringKey.Error_InstanceNotFoundTemplate]: "未找到键为'{key}'的实例",
64
+ [DefaultStringKey.Error_MissingStringCollectionTemplate]: '缺少语言的字符串集合: {language}',
65
+ [DefaultStringKey.Error_MissingTranslationTemplate]: "在语言'{language}'中缺少键'{key}'的翻译",
66
+ [DefaultStringKey.Error_DefaultLanguageNoCollectionTemplate]: "默认语言'{language}'没有字符串集合",
67
+ [DefaultStringKey.Error_MissingTranslationKeyTemplate]: '类型缺少翻译键: {type}',
68
+ },
69
+ [language_codes_1.LanguageCodes.ES]: {
70
+ [DefaultStringKey.Common_Test]: 'Prueba',
71
+ [DefaultStringKey.Error_InstanceAlreadyExistsTemplate]: "La instancia con clave '{key}' ya existe",
72
+ [DefaultStringKey.Error_InstanceNotFoundTemplate]: "Instancia con clave '{key}' no encontrada",
73
+ [DefaultStringKey.Error_MissingStringCollectionTemplate]: 'Falta colección de cadenas para el idioma: {language}',
74
+ [DefaultStringKey.Error_MissingTranslationTemplate]: "Falta traducción para la clave '{key}' en el idioma '{language}'",
75
+ [DefaultStringKey.Error_DefaultLanguageNoCollectionTemplate]: "El idioma predeterminado '{language}' no tiene colección de cadenas",
76
+ [DefaultStringKey.Error_MissingTranslationKeyTemplate]: 'Falta clave de traducción para el tipo: {type}',
77
+ },
78
+ [language_codes_1.LanguageCodes.UK]: {
79
+ [DefaultStringKey.Common_Test]: 'Тест',
80
+ [DefaultStringKey.Error_InstanceAlreadyExistsTemplate]: "Екземпляр з ключем '{key}' вже існує",
81
+ [DefaultStringKey.Error_InstanceNotFoundTemplate]: "Екземпляр з ключем '{key}' не знайдено",
82
+ [DefaultStringKey.Error_MissingStringCollectionTemplate]: 'Відсутня колекція рядків для мови: {language}',
83
+ [DefaultStringKey.Error_MissingTranslationTemplate]: "Відсутній переклад для ключа '{key}' в мові '{language}'",
84
+ [DefaultStringKey.Error_DefaultLanguageNoCollectionTemplate]: "Мова за замовчуванням '{language}' не має колекції рядків",
85
+ [DefaultStringKey.Error_MissingTranslationKeyTemplate]: 'Відсутній ключ перекладу для типу: {type}',
86
+ },
87
+ },
88
+ stringNames: Object.values(DefaultStringKey),
89
+ defaultLanguage: language_codes_1.LanguageCodes.EN_US,
90
+ defaultTranslationContext: 'user',
91
+ defaultCurrencyCode: new currency_code_1.CurrencyCode(types_1.DefaultCurrencyCode),
92
+ languageCodes: exports.DefaultLanguageCodes,
93
+ languages: [language_codes_1.LanguageCodes.EN_US, language_codes_1.LanguageCodes.EN_GB, language_codes_1.LanguageCodes.FR, language_codes_1.LanguageCodes.ES, language_codes_1.LanguageCodes.ZH_CN, language_codes_1.LanguageCodes.UK],
94
+ constants: constants,
95
+ enumName: 'DefaultStringKey',
96
+ enumObj: DefaultStringKey,
97
+ timezone: timezone ?? new timezone_1.Timezone('UTC'),
98
+ adminTimezone: adminTimezone ?? new timezone_1.Timezone('UTC'),
99
+ });
100
+ const getDefaultI18nEngine = (constants, timezone, adminTimezone) => new i18n_engine_1.I18nEngine(getConfig(constants, timezone, adminTimezone), 'user');
101
+ exports.getDefaultI18nEngine = getDefaultI18nEngine;
102
+ //# sourceMappingURL=default-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-config.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/default-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { EnumLanguageTranslation } from './types';
2
+ /**
3
+ * Registry for managing enum translations across multiple languages.
4
+ */
5
+ export declare class EnumTranslationRegistry<TStringKey extends string, TLanguage extends string> {
6
+ protected translations: Map<any, Partial<{ [L in TLanguage]: import("./types").EnumTranslation<any>; }>>;
7
+ protected enumNames: WeakMap<any, string>;
8
+ protected availableLanguages: Set<TLanguage>;
9
+ protected translateFn?: (key: TStringKey, vars?: Record<string, any>) => string;
10
+ constructor(availableLanguages: TLanguage[], translateFn?: (key: TStringKey, vars?: Record<string, any>) => string);
11
+ /**
12
+ * Registers an enumeration with its translations and a name.
13
+ * @param enumObj The enumeration object
14
+ * @param translations The translations for the enumeration
15
+ * @param enumName The name of the enumeration
16
+ */
17
+ register<TEnum extends string | number>(enumObj: Record<string, TEnum>, translations: EnumLanguageTranslation<TEnum, TLanguage>, enumName: string): void;
18
+ /**
19
+ * Translates a value from the given enumeration to the specified language.
20
+ * @param enumObj The enumeration object
21
+ * @param value The value to translate
22
+ * @param language The target language for translation
23
+ * @returns The translated string
24
+ */
25
+ translate<TEnum extends string | number>(enumObj: Record<string, TEnum>, value: TEnum, language: TLanguage): string;
26
+ /**
27
+ * Gets the name of the enumeration.
28
+ * @param enumObj The enumeration object
29
+ * @returns The name of the enumeration
30
+ */
31
+ private getEnumName;
32
+ /**
33
+ * Checks if the registry has translations for the given enumeration.
34
+ * @param enumObj The enumeration object
35
+ * @returns True if translations exist, false otherwise
36
+ */
37
+ has(enumObj: any): boolean;
38
+ /**
39
+ * Validates that enum translations only contain available languages.
40
+ * @param translations The translations to validate
41
+ * @param enumName The name of the enumeration for error messages
42
+ */
43
+ private validateTranslations;
44
+ }
45
+ //# sourceMappingURL=enum-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-registry.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/enum-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD;;GAEG;AACH,qBAAa,uBAAuB,CAClC,UAAU,SAAS,MAAM,EACzB,SAAS,SAAS,MAAM;IAExB,SAAS,CAAC,YAAY,mFAGlB;IACJ,SAAS,CAAC,SAAS,uBAA8B;IACjD,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7C,SAAS,CAAC,WAAW,CAAC,EAAE,CACtB,GAAG,EAAE,UAAU,EACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KACvB,MAAM,CAAC;gBAGV,kBAAkB,EAAE,SAAS,EAAE,EAC/B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM;IAMvE;;;;;OAKG;IACI,QAAQ,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC9B,YAAY,EAAE,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,EACvD,QAAQ,EAAE,MAAM,GACf,IAAI;IAMP;;;;;;OAMG;IACI,SAAS,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC9B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,SAAS,GAClB,MAAM;IA2CT;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAI1B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;CAgB7B"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnumTranslationRegistry = void 0;
4
+ /**
5
+ * Registry for managing enum translations across multiple languages.
6
+ */
7
+ class EnumTranslationRegistry {
8
+ translations = new Map();
9
+ enumNames = new WeakMap();
10
+ availableLanguages;
11
+ translateFn;
12
+ constructor(availableLanguages, translateFn) {
13
+ this.availableLanguages = new Set(availableLanguages);
14
+ this.translateFn = translateFn;
15
+ }
16
+ /**
17
+ * Registers an enumeration with its translations and a name.
18
+ * @param enumObj The enumeration object
19
+ * @param translations The translations for the enumeration
20
+ * @param enumName The name of the enumeration
21
+ */
22
+ register(enumObj, translations, enumName) {
23
+ this.validateTranslations(translations, enumName);
24
+ this.translations.set(enumObj, translations);
25
+ this.enumNames.set(enumObj, enumName);
26
+ }
27
+ /**
28
+ * Translates a value from the given enumeration to the specified language.
29
+ * @param enumObj The enumeration object
30
+ * @param value The value to translate
31
+ * @param language The target language for translation
32
+ * @returns The translated string
33
+ */
34
+ translate(enumObj, value, language) {
35
+ const translations = this.translations.get(enumObj);
36
+ if (!translations) {
37
+ const message = this.translateFn
38
+ ? this.translateFn('Error_EnumNotFoundTemplate', {
39
+ enumName: this.getEnumName(enumObj),
40
+ })
41
+ : `No translations found for enum: ${this.getEnumName(enumObj)}`;
42
+ throw new Error(message);
43
+ }
44
+ const langTranslations = translations[language];
45
+ if (!langTranslations) {
46
+ const message = this.translateFn
47
+ ? this.translateFn('Error_EnumLanguageNotFoundTemplate', {
48
+ language,
49
+ })
50
+ : `No translations found for language: ${language}`;
51
+ throw new Error(message);
52
+ }
53
+ let result = langTranslations[value];
54
+ if (!result && typeof value === 'number') {
55
+ const stringKey = Object.keys(enumObj).find((key) => enumObj[key] === value);
56
+ if (stringKey) {
57
+ result = langTranslations[stringKey];
58
+ }
59
+ }
60
+ if (!result) {
61
+ const message = this.translateFn
62
+ ? this.translateFn('Error_EnumValueNotFoundTemplate', {
63
+ value: String(value),
64
+ })
65
+ : `No translation found for value: ${String(value)}`;
66
+ throw new Error(message);
67
+ }
68
+ return result;
69
+ }
70
+ /**
71
+ * Gets the name of the enumeration.
72
+ * @param enumObj The enumeration object
73
+ * @returns The name of the enumeration
74
+ */
75
+ getEnumName(enumObj) {
76
+ return this.enumNames.get(enumObj) || 'UnknownEnum';
77
+ }
78
+ /**
79
+ * Checks if the registry has translations for the given enumeration.
80
+ * @param enumObj The enumeration object
81
+ * @returns True if translations exist, false otherwise
82
+ */
83
+ has(enumObj) {
84
+ return this.translations.has(enumObj);
85
+ }
86
+ /**
87
+ * Validates that enum translations only contain available languages.
88
+ * @param translations The translations to validate
89
+ * @param enumName The name of the enumeration for error messages
90
+ */
91
+ validateTranslations(translations, enumName) {
92
+ for (const language of Object.keys(translations)) {
93
+ if (!this.availableLanguages.has(language)) {
94
+ const message = this.translateFn
95
+ ? this.translateFn('Error_EnumLanguageNotAvailableTemplate', { language, enumName })
96
+ : `Language '${language}' in enum '${enumName}' is not available in this engine instance`;
97
+ throw new Error(message);
98
+ }
99
+ }
100
+ }
101
+ }
102
+ exports.EnumTranslationRegistry = EnumTranslationRegistry;
103
+ //# sourceMappingURL=enum-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-registry.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/enum-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { IActiveContext } from './active-context';
2
+ import { CurrencyCode } from './currency-code';
3
+ import { DefaultLanguageCode } from './default-config';
4
+ import { IGlobalActiveContext } from './i-global-active-context';
5
+ import { Timezone } from './timezone';
6
+ import { LanguageContextSpace } from './types';
7
+ export declare class GlobalActiveContext<TLanguage extends string, TActiveContext extends IActiveContext<TLanguage>> implements IGlobalActiveContext<TLanguage, TActiveContext> {
8
+ protected static _contextMap: Map<string, IActiveContext<any>>;
9
+ static readonly defaultContextKey = "default";
10
+ static readonly defaultLanguage: DefaultLanguageCode;
11
+ private static _instance;
12
+ static get instance(): GlobalActiveContext<any, any>;
13
+ static getInstance<TLanguage extends string, TActiveContext extends IActiveContext<TLanguage>>(): GlobalActiveContext<TLanguage, TActiveContext>;
14
+ static overrideInstance(instance: GlobalActiveContext<any, any>): void;
15
+ createContext(defaultLanguage: TLanguage, defaultAdminLanguage?: TLanguage, key?: string): TActiveContext;
16
+ getContext(key?: string): TActiveContext;
17
+ get context(): TActiveContext;
18
+ set context(ctx: TActiveContext);
19
+ setUserLanguage(language: TLanguage, key?: string): void;
20
+ get userLanguage(): TLanguage;
21
+ set userLanguage(lang: TLanguage);
22
+ setCurrencyCode(code: CurrencyCode, key?: string): void;
23
+ get currencyCode(): CurrencyCode;
24
+ set currencyCode(code: CurrencyCode);
25
+ /**
26
+ * Sets the admin language for console operations
27
+ * @param language The language to set for admin operations
28
+ */
29
+ setAdminLanguage(language: TLanguage, key?: string): void;
30
+ get adminLanguage(): TLanguage;
31
+ set adminLanguage(lang: TLanguage);
32
+ /**
33
+ * Sets the language context for the current context
34
+ * @param context The language context to set
35
+ */
36
+ setLanguageContextSpace(context: LanguageContextSpace, key?: string): void;
37
+ getLanguageContextSpace(key?: string): LanguageContextSpace;
38
+ get languageContextSpace(): LanguageContextSpace;
39
+ set languageContextSpace(context: LanguageContextSpace);
40
+ setUserTimezone(tz: Timezone, key?: string): void;
41
+ get userTimezone(): Timezone;
42
+ set userTimezone(tz: Timezone);
43
+ setAdminTimezone(tz: Timezone, key?: string): void;
44
+ get adminTimezone(): Timezone;
45
+ set adminTimezone(tz: Timezone);
46
+ /**
47
+ * Clear all contexts (useful for testing)
48
+ */
49
+ static clearAll(): void;
50
+ }
51
+ //# sourceMappingURL=global-active-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-active-context.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/global-active-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAGL,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,qBAAa,mBAAmB,CAAC,SAAS,SAAS,MAAM,EAAE,cAAc,SAAS,cAAc,CAAC,SAAS,CAAC,CAAE,YAAW,oBAAoB,CAAC,SAAS,EAAE,cAAc,CAAC;IACrK,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAa;IAC3E,gBAAuB,iBAAiB,aAAa;IACrD,gBAAuB,eAAe,EAAE,mBAAmB,CAAW;IAEtE,OAAO,CAAC,MAAM,CAAC,SAAS,CAA4C;IACpE,WAAkB,QAAQ,IAAI,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAM1D;WACa,WAAW,CAAC,SAAS,SAAS,MAAM,EAAE,cAAc,SAAS,cAAc,CAAC,SAAS,CAAC,KAAK,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC;WAOzI,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;IAItE,aAAa,CAClB,eAAe,EAAE,SAAS,EAC1B,oBAAoB,GAAE,SAA2B,EACjD,GAAG,GAAE,MAA8C,GAClD,cAAc;IA6BV,UAAU,CACf,GAAG,GAAE,MAA8C,GAClD,cAAc;IAUjB,IAAW,OAAO,IAAI,cAAc,CAInC;IAED,IAAW,OAAO,CAAC,GAAG,EAAE,cAAc,EAKrC;IAEM,eAAe,CACpB,QAAQ,EAAE,SAAS,EACnB,GAAG,GAAE,MAA8C,GAClD,IAAI;IAWP,IAAW,YAAY,IAAI,SAAS,CAEnC;IAED,IAAW,YAAY,CAAC,IAAI,EAAE,SAAS,EAEtC;IAEM,eAAe,CACpB,IAAI,EAAE,YAAY,EAClB,GAAG,GAAE,MAA8C,GAClD,IAAI;IAWP,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,YAAY,CAAC,IAAI,EAAE,YAAY,EAEzC;IAED;;;OAGG;IACI,gBAAgB,CACrB,QAAQ,EAAE,SAAS,EACnB,GAAG,GAAE,MAA8C,GAClD,IAAI;IAWP,IAAW,aAAa,IAAI,SAAS,CAEpC;IAED,IAAW,aAAa,CAAC,IAAI,EAAE,SAAS,EAEvC;IAED;;;OAGG;IACI,uBAAuB,CAC5B,OAAO,EAAE,oBAAoB,EAC7B,GAAG,GAAE,MAA8C,GAClD,IAAI;IAWA,uBAAuB,CAC5B,GAAG,GAAE,MAA8C,GAClD,oBAAoB;IAUvB,IAAW,oBAAoB,IAAI,oBAAoB,CAEtD;IAED,IAAW,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,EAE5D;IAEM,eAAe,CACpB,EAAE,EAAE,QAAQ,EACZ,GAAG,GAAE,MAA8C,GAClD,IAAI;IAWP,IAAW,YAAY,IAAI,QAAQ,CAElC;IAED,IAAW,YAAY,CAAC,EAAE,EAAE,QAAQ,EAEnC;IAEM,gBAAgB,CACrB,EAAE,EAAE,QAAQ,EACZ,GAAG,GAAE,MAA8C,GAClD,IAAI;IAWP,IAAW,aAAa,IAAI,QAAQ,CAEnC;IAED,IAAW,aAAa,CAAC,EAAE,EAAE,QAAQ,EAEpC;IAED;;OAEG;WACW,QAAQ,IAAI,IAAI;CAI/B"}