@digitaldefiance/i18n-lib 1.3.20 → 2.0.0

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 (240) hide show
  1. package/README.md +399 -2218
  2. package/package.json +4 -1
  3. package/src/active-context.d.ts +2 -2
  4. package/src/active-context.d.ts.map +1 -1
  5. package/src/builders/i18n-builder.d.ts +24 -0
  6. package/src/builders/i18n-builder.d.ts.map +1 -0
  7. package/src/builders/i18n-builder.js +62 -0
  8. package/src/builders/i18n-builder.js.map +1 -0
  9. package/src/builders/index.d.ts +5 -0
  10. package/src/builders/index.d.ts.map +1 -0
  11. package/src/builders/index.js +8 -0
  12. package/src/builders/index.js.map +1 -0
  13. package/src/component-registry.d.ts +2 -1
  14. package/src/component-registry.d.ts.map +1 -1
  15. package/src/component-registry.js +5 -3
  16. package/src/component-registry.js.map +1 -1
  17. package/src/core/component-store.d.ts +20 -0
  18. package/src/core/component-store.d.ts.map +1 -0
  19. package/src/core/component-store.js +105 -0
  20. package/src/core/component-store.js.map +1 -0
  21. package/src/core/context-manager.d.ts +20 -0
  22. package/src/core/context-manager.d.ts.map +1 -0
  23. package/src/core/context-manager.js +50 -0
  24. package/src/core/context-manager.js.map +1 -0
  25. package/src/core/enum-registry.d.ts +14 -0
  26. package/src/core/enum-registry.d.ts.map +1 -0
  27. package/src/core/enum-registry.js +48 -0
  28. package/src/core/enum-registry.js.map +1 -0
  29. package/src/core/i18n-engine.d.ts +44 -0
  30. package/src/core/i18n-engine.d.ts.map +1 -0
  31. package/src/core/i18n-engine.js +192 -0
  32. package/src/core/i18n-engine.js.map +1 -0
  33. package/src/core/index.d.ts +9 -0
  34. package/src/core/index.d.ts.map +1 -0
  35. package/src/core/index.js +12 -0
  36. package/src/core/index.js.map +1 -0
  37. package/src/core/language-registry.d.ts +41 -0
  38. package/src/core/language-registry.d.ts.map +1 -0
  39. package/src/core/language-registry.js +157 -0
  40. package/src/core/language-registry.js.map +1 -0
  41. package/src/core-i18n.d.ts +4 -0
  42. package/src/core-i18n.d.ts.map +1 -1
  43. package/src/core-i18n.js +109 -4
  44. package/src/core-i18n.js.map +1 -1
  45. package/src/core-string-key.d.ts +10 -1
  46. package/src/core-string-key.d.ts.map +1 -1
  47. package/src/core-string-key.js +10 -0
  48. package/src/core-string-key.js.map +1 -1
  49. package/src/create-translation-adapter.d.ts +15 -3
  50. package/src/create-translation-adapter.d.ts.map +1 -1
  51. package/src/create-translation-adapter.js +44 -9
  52. package/src/create-translation-adapter.js.map +1 -1
  53. package/src/{context-error.d.ts → errors/context-error.d.ts} +1 -1
  54. package/src/errors/context-error.d.ts.map +1 -0
  55. package/src/errors/context-error.js +21 -0
  56. package/src/errors/context-error.js.map +1 -0
  57. package/src/{handleable.d.ts → errors/handleable.d.ts} +2 -2
  58. package/src/errors/handleable.d.ts.map +1 -0
  59. package/src/errors/handleable.js.map +1 -0
  60. package/src/errors/i18n-error.d.ts +32 -0
  61. package/src/errors/i18n-error.d.ts.map +1 -0
  62. package/src/errors/i18n-error.js +61 -0
  63. package/src/errors/i18n-error.js.map +1 -0
  64. package/src/errors/index.d.ts +5 -0
  65. package/src/errors/index.d.ts.map +1 -0
  66. package/src/errors/index.js +8 -0
  67. package/src/errors/index.js.map +1 -0
  68. package/src/{plugin-translatable-generic-error.d.ts → errors/plugin-translatable-generic.d.ts} +7 -7
  69. package/src/errors/plugin-translatable-generic.d.ts.map +1 -0
  70. package/src/{plugin-translatable-generic-error.js → errors/plugin-translatable-generic.js} +2 -3
  71. package/src/errors/plugin-translatable-generic.js.map +1 -0
  72. package/src/{plugin-translatable-handleable-generic.d.ts → errors/plugin-translatable-handleable-generic.d.ts} +4 -4
  73. package/src/errors/plugin-translatable-handleable-generic.d.ts.map +1 -0
  74. package/src/{plugin-translatable-handleable-generic.js → errors/plugin-translatable-handleable-generic.js} +2 -2
  75. package/src/errors/plugin-translatable-handleable-generic.js.map +1 -0
  76. package/src/errors/plugin-typed-handleable.d.ts +14 -0
  77. package/src/errors/plugin-typed-handleable.d.ts.map +1 -0
  78. package/src/{plugin-typed-handleable.js → errors/plugin-typed-handleable.js} +4 -4
  79. package/src/errors/plugin-typed-handleable.js.map +1 -0
  80. package/src/errors/translatable.d.ts +4 -0
  81. package/src/errors/translatable.d.ts.map +1 -0
  82. package/src/{translatable.js → errors/translatable.js} +4 -2
  83. package/src/errors/translatable.js.map +1 -0
  84. package/src/errors/typed-handleable.d.ts +13 -0
  85. package/src/errors/typed-handleable.d.ts.map +1 -0
  86. package/src/{typed-handleable.js → errors/typed-handleable.js} +8 -7
  87. package/src/errors/typed-handleable.js.map +1 -0
  88. package/src/{typed-error.d.ts → errors/typed.d.ts} +13 -15
  89. package/src/errors/typed.d.ts.map +1 -0
  90. package/src/{typed-error.js → errors/typed.js} +27 -23
  91. package/src/errors/typed.js.map +1 -0
  92. package/src/global-active-context.d.ts +4 -5
  93. package/src/global-active-context.d.ts.map +1 -1
  94. package/src/global-active-context.js +4 -4
  95. package/src/global-active-context.js.map +1 -1
  96. package/src/index.d.ts +15 -32
  97. package/src/index.d.ts.map +1 -1
  98. package/src/index.js +29 -37
  99. package/src/index.js.map +1 -1
  100. package/src/interfaces/component-config.interface.d.ts +9 -0
  101. package/src/interfaces/component-config.interface.d.ts.map +1 -0
  102. package/src/interfaces/component-config.interface.js +6 -0
  103. package/src/interfaces/component-config.interface.js.map +1 -0
  104. package/src/interfaces/engine-config.interface.d.ts +13 -0
  105. package/src/interfaces/engine-config.interface.d.ts.map +1 -0
  106. package/src/interfaces/engine-config.interface.js +6 -0
  107. package/src/interfaces/engine-config.interface.js.map +1 -0
  108. package/src/{i-global-active-context.d.ts → interfaces/global-active-context.d.ts} +5 -5
  109. package/src/interfaces/global-active-context.d.ts.map +1 -0
  110. package/src/{currency-format.js → interfaces/global-active-context.js} +1 -1
  111. package/src/interfaces/global-active-context.js.map +1 -0
  112. package/src/{i-handleable-error-options.d.ts → interfaces/handleable-error-options.d.ts} +1 -1
  113. package/src/interfaces/handleable-error-options.d.ts.map +1 -0
  114. package/src/{i-global-active-context.js → interfaces/handleable-error-options.js} +1 -1
  115. package/src/interfaces/handleable-error-options.js.map +1 -0
  116. package/src/{i-handleable.d.ts → interfaces/handleable.d.ts} +1 -1
  117. package/src/interfaces/handleable.d.ts.map +1 -0
  118. package/src/{i18n-config.js → interfaces/handleable.js} +1 -1
  119. package/src/interfaces/handleable.js.map +1 -0
  120. package/src/interfaces/i18n-engine.interface.d.ts +25 -0
  121. package/src/interfaces/i18n-engine.interface.d.ts.map +1 -0
  122. package/src/interfaces/i18n-engine.interface.js +6 -0
  123. package/src/interfaces/i18n-engine.interface.js.map +1 -0
  124. package/src/interfaces/index.d.ts +10 -0
  125. package/src/interfaces/index.d.ts.map +1 -0
  126. package/src/interfaces/index.js +13 -0
  127. package/src/interfaces/index.js.map +1 -0
  128. package/src/interfaces/language-definition.interface.d.ts +10 -0
  129. package/src/interfaces/language-definition.interface.d.ts.map +1 -0
  130. package/src/interfaces/language-definition.interface.js +6 -0
  131. package/src/interfaces/language-definition.interface.js.map +1 -0
  132. package/src/interfaces/translation-options.interface.d.ts +9 -0
  133. package/src/interfaces/translation-options.interface.d.ts.map +1 -0
  134. package/src/interfaces/translation-options.interface.js +6 -0
  135. package/src/interfaces/translation-options.interface.js.map +1 -0
  136. package/src/interfaces/validation-result.interface.d.ts +14 -0
  137. package/src/interfaces/validation-result.interface.d.ts.map +1 -0
  138. package/src/interfaces/validation-result.interface.js +6 -0
  139. package/src/interfaces/validation-result.interface.js.map +1 -0
  140. package/src/plugin-i18n-engine.d.ts.map +1 -1
  141. package/src/plugin-i18n-engine.js +20 -8
  142. package/src/plugin-i18n-engine.js.map +1 -1
  143. package/src/registry-config.d.ts +3 -2
  144. package/src/registry-config.d.ts.map +1 -1
  145. package/src/registry-error.d.ts +1 -1
  146. package/src/registry-error.d.ts.map +1 -1
  147. package/src/registry-error.js +3 -2
  148. package/src/registry-error.js.map +1 -1
  149. package/src/translation-engine.d.ts +2 -2
  150. package/src/translation-engine.d.ts.map +1 -1
  151. package/src/utils/currency.d.ts +19 -0
  152. package/src/utils/currency.d.ts.map +1 -0
  153. package/src/{currency.js → utils/currency.js} +25 -14
  154. package/src/utils/currency.js.map +1 -0
  155. package/src/utils/index.d.ts +7 -0
  156. package/src/utils/index.d.ts.map +1 -0
  157. package/src/utils/index.js +10 -0
  158. package/src/utils/index.js.map +1 -0
  159. package/src/utils/string-utils.d.ts +6 -0
  160. package/src/utils/string-utils.d.ts.map +1 -0
  161. package/src/utils/string-utils.js +34 -0
  162. package/src/utils/string-utils.js.map +1 -0
  163. package/src/utils/timezone.d.ts +13 -0
  164. package/src/utils/timezone.d.ts.map +1 -0
  165. package/src/utils/timezone.js +35 -0
  166. package/src/utils/timezone.js.map +1 -0
  167. package/src/context-error.d.ts.map +0 -1
  168. package/src/context-error.js +0 -18
  169. package/src/context-error.js.map +0 -1
  170. package/src/context-manager.d.ts +0 -34
  171. package/src/context-manager.d.ts.map +0 -1
  172. package/src/context-manager.js +0 -60
  173. package/src/context-manager.js.map +0 -1
  174. package/src/context.d.ts +0 -45
  175. package/src/context.d.ts.map +0 -1
  176. package/src/context.js +0 -70
  177. package/src/context.js.map +0 -1
  178. package/src/currency-code.d.ts +0 -20
  179. package/src/currency-code.d.ts.map +0 -1
  180. package/src/currency-code.js +0 -37
  181. package/src/currency-code.js.map +0 -1
  182. package/src/currency-format.d.ts +0 -11
  183. package/src/currency-format.d.ts.map +0 -1
  184. package/src/currency-format.js.map +0 -1
  185. package/src/currency.d.ts +0 -12
  186. package/src/currency.d.ts.map +0 -1
  187. package/src/currency.js.map +0 -1
  188. package/src/default-config.d.ts +0 -33
  189. package/src/default-config.d.ts.map +0 -1
  190. package/src/default-config.js +0 -102
  191. package/src/default-config.js.map +0 -1
  192. package/src/handleable.d.ts.map +0 -1
  193. package/src/handleable.js.map +0 -1
  194. package/src/i-global-active-context.d.ts.map +0 -1
  195. package/src/i-global-active-context.js.map +0 -1
  196. package/src/i-handleable-error-options.d.ts.map +0 -1
  197. package/src/i-handleable-error-options.js +0 -3
  198. package/src/i-handleable-error-options.js.map +0 -1
  199. package/src/i-handleable.d.ts.map +0 -1
  200. package/src/i-handleable.js +0 -3
  201. package/src/i-handleable.js.map +0 -1
  202. package/src/i18n-config.d.ts +0 -21
  203. package/src/i18n-config.d.ts.map +0 -1
  204. package/src/i18n-config.js.map +0 -1
  205. package/src/i18n-context.d.ts +0 -15
  206. package/src/i18n-context.d.ts.map +0 -1
  207. package/src/i18n-context.js +0 -3
  208. package/src/i18n-context.js.map +0 -1
  209. package/src/i18n-engine.d.ts +0 -179
  210. package/src/i18n-engine.d.ts.map +0 -1
  211. package/src/i18n-engine.js +0 -355
  212. package/src/i18n-engine.js.map +0 -1
  213. package/src/language-registry.d.ts +0 -114
  214. package/src/language-registry.d.ts.map +0 -1
  215. package/src/language-registry.js +0 -218
  216. package/src/language-registry.js.map +0 -1
  217. package/src/plugin-translatable-generic-error.d.ts.map +0 -1
  218. package/src/plugin-translatable-generic-error.js.map +0 -1
  219. package/src/plugin-translatable-handleable-generic.d.ts.map +0 -1
  220. package/src/plugin-translatable-handleable-generic.js.map +0 -1
  221. package/src/plugin-typed-handleable.d.ts +0 -15
  222. package/src/plugin-typed-handleable.d.ts.map +0 -1
  223. package/src/plugin-typed-handleable.js.map +0 -1
  224. package/src/timezone.d.ts +0 -12
  225. package/src/timezone.d.ts.map +0 -1
  226. package/src/timezone.js +0 -24
  227. package/src/timezone.js.map +0 -1
  228. package/src/translatable.d.ts +0 -6
  229. package/src/translatable.d.ts.map +0 -1
  230. package/src/translatable.js.map +0 -1
  231. package/src/typed-error.d.ts.map +0 -1
  232. package/src/typed-error.js.map +0 -1
  233. package/src/typed-handleable.d.ts +0 -15
  234. package/src/typed-handleable.d.ts.map +0 -1
  235. package/src/typed-handleable.js.map +0 -1
  236. package/src/unified-translator.d.ts +0 -31
  237. package/src/unified-translator.d.ts.map +0 -1
  238. package/src/unified-translator.js +0 -71
  239. package/src/unified-translator.js.map +0 -1
  240. /package/src/{handleable.js → errors/handleable.js} +0 -0
@@ -1,179 +0,0 @@
1
- import { EnumTranslationRegistry } from './enum-registry';
2
- import { I18nConfig } from './i18n-config';
3
- import { I18nContext } from './i18n-context';
4
- import { EnumLanguageTranslation } from './types';
5
- /**
6
- * Internationalization engine class
7
- */
8
- export declare class I18nEngine<TStringKey extends string, TLanguage extends string, TConstants extends Record<string, any> = Record<string, any>, TContext extends I18nContext<TLanguage> = I18nContext<TLanguage>> {
9
- /**
10
- * Registry for enum translations
11
- */
12
- protected _enumRegistry: EnumTranslationRegistry<TStringKey, TLanguage>;
13
- /**
14
- * Configuration for the i18n engine
15
- */
16
- readonly config: I18nConfig<TStringKey, TLanguage, TConstants>;
17
- /**
18
- * Static instances for semi-singleton pattern
19
- */
20
- private static _instances;
21
- /**
22
- * Default instance key (first created instance)
23
- */
24
- private static _defaultKey;
25
- /**
26
- * Default instance key if none is provided
27
- */
28
- protected static readonly DefaultInstanceKey = "default";
29
- /**
30
- * Global context for translations (used if no context is provided) for this instance
31
- */
32
- private _context;
33
- /**
34
- * Default template processor instance
35
- */
36
- readonly t: (str: string, language?: TLanguage, ...otherVars: Record<string, string | number>[]) => string;
37
- /**
38
- * Creates a new I18nEngine instance
39
- * @param config The i18n configuration
40
- * @param key Optional instance key for the semi-singleton pattern
41
- * @throws Error if an instance with the same key already exists
42
- */
43
- constructor(config: I18nConfig<TStringKey, TLanguage, TConstants>, key?: string, newContext?: () => TContext);
44
- /**
45
- * Gets an instance of the I18nEngine by key. If no key is provided, the default instance is returned.
46
- * @param key The key of the instance to retrieve
47
- * @returns The I18nEngine instance
48
- * @throws Error if the instance with the provided key does not exist
49
- */
50
- static getInstance<T extends I18nEngine<any, any, any, any>>(key?: string): T;
51
- /**
52
- * Gets a translation for the provided error key using the specified instance (or default instance if none is provided).
53
- * @param errorKey The error key to translate
54
- * @param vars Variables to replace in the translation string
55
- * @param instanceKey The key of the I18nEngine instance to use
56
- * @param language The language to translate to
57
- * @param fallbackLanguage The fallback language if the translation is not found
58
- * @returns The translated error message
59
- */
60
- static getErrorMessage(errorKey: string, vars?: Record<string, string | number>, instanceKey?: string, language?: string, fallbackLanguage?: string): string;
61
- /**
62
- * Throws an error with a translated message using the specified instance (or default instance if none is provided).
63
- * @param errorKey The error key to translate
64
- * @param vars Variables to replace in the translation string
65
- * @param instanceKey The key of the I18nEngine instance to use
66
- * @throws Error with translated message
67
- */
68
- static throwError(errorKey: string, vars?: Record<string, string | number>, instanceKey?: string): never;
69
- /**
70
- * Gets the global context for translations
71
- * @returns The global context object
72
- */
73
- get context(): TContext;
74
- /**
75
- * Sets the global context for translations (used if no context is provided) for this instance
76
- * @param context The context to set
77
- */
78
- set context(context: Partial<TContext>);
79
- /**
80
- * Gets the enum translation registry for this engine instance
81
- * @returns The enum translation registry
82
- */
83
- get enumRegistry(): EnumTranslationRegistry<TStringKey, TLanguage>;
84
- /**
85
- * Translates a string key into the specified language, replacing any variables as needed.
86
- * @param key The string key to translate
87
- * @param vars Variables to replace in the translation string
88
- * @param language The language to translate to
89
- * @param fallbackLanguage The fallback language if the translation is not found
90
- * @returns The translated string
91
- */
92
- translate(key: TStringKey, vars?: Record<string, string | number>, language?: TLanguage, fallbackLanguage?: TLanguage): string;
93
- /**
94
- * Translates an enumeration value into the specified language.
95
- * @param enumObj The enumeration object
96
- * @param value The enumeration value to translate
97
- * @param language The language to translate to
98
- * @returns The translated enumeration value
99
- */
100
- translateEnum<TEnum extends string | number>(enumObj: Record<string, TEnum>, value: TEnum, language: TLanguage): string;
101
- /**
102
- * Registers an enumeration and its translations with the engine.
103
- * @param enumObj The enumeration object
104
- * @param translations The translations for the enumeration
105
- * @param enumName The name of the enumeration (for error messages)
106
- */
107
- registerEnum<TEnum extends string | number>(enumObj: Record<string, TEnum> | Record<string | number, string | number>, translations: EnumLanguageTranslation<TEnum, TLanguage>, enumName: string): void;
108
- /**
109
- * Safe translation that prevents infinite recursion for error messages
110
- * @param key The string key to translate
111
- * @param vars Variables to replace in the translation string
112
- * @param language The language to translate to
113
- * @returns The translated string or the key if translation fails
114
- */
115
- safeTranslate(key: TStringKey, vars?: Record<string, string | number>, language?: TLanguage): string;
116
- /**
117
- * Retrieves the string for the given language and key, throwing an error if not found.
118
- * @param language The language to get the string for
119
- * @param key The string key to retrieve
120
- * @returns The string value
121
- * @throws Error if the language or string key is not found
122
- */
123
- private getString;
124
- /**
125
- * Gets the language code for the specified language.
126
- * @param language The language to get the code for
127
- * @returns The language code
128
- */
129
- getLanguageCode(language: TLanguage): string;
130
- /**
131
- * Gets the language for the specified language code.
132
- * @param code The language code to look up
133
- * @returns The language, or undefined if not found
134
- */
135
- getLanguageFromCode(code: string): TLanguage | undefined;
136
- /**
137
- * Gets all language codes.
138
- * @returns A record of all language codes
139
- */
140
- getAllLanguageCodes(): Record<TLanguage, string>;
141
- /**
142
- * Gets all available languages.
143
- * @returns An array of all available languages
144
- */
145
- getAvailableLanguages(): TLanguage[];
146
- /**
147
- * Checks if a language is available.
148
- * @param language The language to check
149
- * @returns True if the language is available, false otherwise
150
- */
151
- isLanguageAvailable(language: string): language is TLanguage;
152
- /**
153
- * Clears all instances (for testing purposes)
154
- * @internal
155
- */
156
- static clearInstances(): void;
157
- /**
158
- * Removes a specific instance by key
159
- * @param key The key of the instance to remove
160
- * @internal
161
- */
162
- static removeInstance(key?: string): void;
163
- /**
164
- * Static error message templates for validation
165
- */
166
- private static readonly ErrorTemplates;
167
- /**
168
- * Validates the configuration to ensure all languages have string collections
169
- * and all string keys are provided for each language
170
- * @param config The configuration to validate
171
- * @throws Error if validation fails
172
- */
173
- private validateConfig;
174
- /**
175
- * Gets validation error message, trying translation first, falling back to template
176
- */
177
- private getValidationError;
178
- }
179
- //# sourceMappingURL=i18n-engine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n-engine.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/i18n-engine.ts"],"names":[],"mappings":"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"}
@@ -1,355 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.I18nEngine = void 0;
4
- const context_1 = require("./context");
5
- const enum_registry_1 = require("./enum-registry");
6
- const template_1 = require("./template");
7
- const utils_1 = require("./utils");
8
- /**
9
- * Internationalization engine class
10
- */
11
- class I18nEngine {
12
- /**
13
- * Registry for enum translations
14
- */
15
- _enumRegistry;
16
- /**
17
- * Configuration for the i18n engine
18
- */
19
- config;
20
- /**
21
- * Static instances for semi-singleton pattern
22
- */
23
- static _instances = new Map();
24
- /**
25
- * Default instance key (first created instance)
26
- */
27
- static _defaultKey = null;
28
- /**
29
- * Default instance key if none is provided
30
- */
31
- static DefaultInstanceKey = 'default';
32
- /**
33
- * Global context for translations (used if no context is provided) for this instance
34
- */
35
- _context;
36
- /**
37
- * Default template processor instance
38
- */
39
- t;
40
- /**
41
- * Creates a new I18nEngine instance
42
- * @param config The i18n configuration
43
- * @param key Optional instance key for the semi-singleton pattern
44
- * @throws Error if an instance with the same key already exists
45
- */
46
- constructor(config, key, newContext = () => (0, context_1.createContext)(config.defaultLanguage, config.defaultTranslationContext, config.defaultCurrencyCode, config.timezone, config.adminTimezone)) {
47
- this.validateConfig(config);
48
- this.config = config;
49
- this._enumRegistry = new enum_registry_1.EnumTranslationRegistry(Object.keys(config.strings), (key, vars) => this.safeTranslate(key, vars));
50
- this._context = newContext();
51
- const instanceKey = key || I18nEngine.DefaultInstanceKey;
52
- if (I18nEngine._instances.has(instanceKey)) {
53
- const existing = I18nEngine._instances.get(instanceKey);
54
- throw new Error(existing.translate('Error_InstanceAlreadyExistsTemplate', {
55
- key: instanceKey,
56
- }));
57
- }
58
- I18nEngine._instances.set(instanceKey, this);
59
- if (!I18nEngine._defaultKey) {
60
- I18nEngine._defaultKey = instanceKey;
61
- }
62
- // Initialize the default template processor
63
- this.t = (0, template_1.createTemplateProcessor)(this.config.enumObj || {}, (key, vars, language) => this.translate(key, vars, language), this.config.enumName || 'StringKey');
64
- }
65
- /**
66
- * Gets an instance of the I18nEngine by key. If no key is provided, the default instance is returned.
67
- * @param key The key of the instance to retrieve
68
- * @returns The I18nEngine instance
69
- * @throws Error if the instance with the provided key does not exist
70
- */
71
- static getInstance(key) {
72
- const instanceKey = key || I18nEngine._defaultKey || I18nEngine.DefaultInstanceKey;
73
- if (!instanceKey || !I18nEngine._instances.has(instanceKey)) {
74
- throw new Error(I18nEngine.getErrorMessage('Error_InstanceNotFoundTemplate', {
75
- key: instanceKey,
76
- }));
77
- }
78
- return I18nEngine._instances.get(instanceKey);
79
- }
80
- /**
81
- * Gets a translation for the provided error key using the specified instance (or default instance if none is provided).
82
- * @param errorKey The error key to translate
83
- * @param vars Variables to replace in the translation string
84
- * @param instanceKey The key of the I18nEngine instance to use
85
- * @param language The language to translate to
86
- * @param fallbackLanguage The fallback language if the translation is not found
87
- * @returns The translated error message
88
- */
89
- static getErrorMessage(errorKey, vars, instanceKey, language, fallbackLanguage) {
90
- try {
91
- const instance = I18nEngine.getInstance(instanceKey);
92
- return instance.translate(errorKey, vars, language, fallbackLanguage);
93
- }
94
- catch {
95
- return `${errorKey}: ${JSON.stringify(vars || {})}`;
96
- }
97
- }
98
- /**
99
- * Throws an error with a translated message using the specified instance (or default instance if none is provided).
100
- * @param errorKey The error key to translate
101
- * @param vars Variables to replace in the translation string
102
- * @param instanceKey The key of the I18nEngine instance to use
103
- * @throws Error with translated message
104
- */
105
- static throwError(errorKey, vars, instanceKey) {
106
- throw new Error(I18nEngine.getErrorMessage(errorKey, vars, instanceKey));
107
- }
108
- /**
109
- * Gets the global context for translations
110
- * @returns The global context object
111
- */
112
- get context() {
113
- return this._context;
114
- }
115
- /**
116
- * Sets the global context for translations (used if no context is provided) for this instance
117
- * @param context The context to set
118
- */
119
- set context(context) {
120
- this._context = { ...this._context, ...context };
121
- }
122
- /**
123
- * Gets the enum translation registry for this engine instance
124
- * @returns The enum translation registry
125
- */
126
- get enumRegistry() {
127
- return this._enumRegistry;
128
- }
129
- /**
130
- * Translates a string key into the specified language, replacing any variables as needed.
131
- * @param key The string key to translate
132
- * @param vars Variables to replace in the translation string
133
- * @param language The language to translate to
134
- * @param fallbackLanguage The fallback language if the translation is not found
135
- * @returns The translated string
136
- */
137
- translate(key, vars, language, fallbackLanguage) {
138
- const lang = language ??
139
- (this._context.currentContext === 'admin'
140
- ? this._context.adminLanguage
141
- : this._context.language);
142
- const fallback = fallbackLanguage ?? this.config.defaultLanguage;
143
- try {
144
- const stringValue = this.getString(lang, key);
145
- let result = (0, utils_1.isTemplate)(key)
146
- ? (0, utils_1.replaceVariables)(stringValue, vars, this.config.constants)
147
- : stringValue;
148
- // Ensure result is always a string
149
- if (typeof result !== 'string') {
150
- result = String(result);
151
- }
152
- return result;
153
- }
154
- catch {
155
- if (lang !== fallback) {
156
- try {
157
- const stringValue = this.getString(fallback, key);
158
- let result = (0, utils_1.isTemplate)(key)
159
- ? (0, utils_1.replaceVariables)(stringValue, vars, this.config.constants)
160
- : stringValue;
161
- // Ensure result is always a string
162
- if (typeof result !== 'string') {
163
- result = String(result);
164
- }
165
- return result;
166
- }
167
- catch {
168
- return String(key);
169
- }
170
- }
171
- return String(key);
172
- }
173
- }
174
- /**
175
- * Translates an enumeration value into the specified language.
176
- * @param enumObj The enumeration object
177
- * @param value The enumeration value to translate
178
- * @param language The language to translate to
179
- * @returns The translated enumeration value
180
- */
181
- translateEnum(enumObj, value, language) {
182
- return this._enumRegistry.translate(enumObj, value, language);
183
- }
184
- /**
185
- * Registers an enumeration and its translations with the engine.
186
- * @param enumObj The enumeration object
187
- * @param translations The translations for the enumeration
188
- * @param enumName The name of the enumeration (for error messages)
189
- */
190
- registerEnum(enumObj, translations, enumName) {
191
- this._enumRegistry.register(enumObj, translations, enumName);
192
- }
193
- /**
194
- * Safe translation that prevents infinite recursion for error messages
195
- * @param key The string key to translate
196
- * @param vars Variables to replace in the translation string
197
- * @param language The language to translate to
198
- * @returns The translated string or the key if translation fails
199
- */
200
- safeTranslate(key, vars, language) {
201
- try {
202
- const lang = language ?? this.config.defaultLanguage;
203
- const strings = this.config.strings[lang];
204
- if (!strings?.[key])
205
- return String(key);
206
- const stringValue = strings[key];
207
- let result = (0, utils_1.isTemplate)(key)
208
- ? (0, utils_1.replaceVariables)(stringValue, vars, this.config.constants)
209
- : stringValue;
210
- // Ensure result is always a string
211
- if (typeof result !== 'string') {
212
- result = String(result);
213
- }
214
- return result;
215
- }
216
- catch {
217
- return String(key);
218
- }
219
- }
220
- /**
221
- * Retrieves the string for the given language and key, throwing an error if not found.
222
- * @param language The language to get the string for
223
- * @param key The string key to retrieve
224
- * @returns The string value
225
- * @throws Error if the language or string key is not found
226
- */
227
- getString(language, key) {
228
- const strings = this.config.strings[language];
229
- if (!strings) {
230
- throw new Error(this.safeTranslate('Error_LanguageNotFound', { language }) ||
231
- `Language not found: ${language}`);
232
- }
233
- const value = strings[key];
234
- if (!value) {
235
- throw new Error(this.safeTranslate('Error_StringNotFound', { key }) ||
236
- `String not found: ${key}`);
237
- }
238
- return value;
239
- }
240
- /**
241
- * Gets the language code for the specified language.
242
- * @param language The language to get the code for
243
- * @returns The language code
244
- */
245
- getLanguageCode(language) {
246
- return this.config.languageCodes[language] || language;
247
- }
248
- /**
249
- * Gets the language for the specified language code.
250
- * @param code The language code to look up
251
- * @returns The language, or undefined if not found
252
- */
253
- getLanguageFromCode(code) {
254
- for (const [lang, langCode] of Object.entries(this.config.languageCodes)) {
255
- if (langCode === code) {
256
- return lang;
257
- }
258
- }
259
- return undefined;
260
- }
261
- /**
262
- * Gets all language codes.
263
- * @returns A record of all language codes
264
- */
265
- getAllLanguageCodes() {
266
- return this.config.languageCodes;
267
- }
268
- /**
269
- * Gets all available languages.
270
- * @returns An array of all available languages
271
- */
272
- getAvailableLanguages() {
273
- return Object.keys(this.config.strings);
274
- }
275
- /**
276
- * Checks if a language is available.
277
- * @param language The language to check
278
- * @returns True if the language is available, false otherwise
279
- */
280
- isLanguageAvailable(language) {
281
- return Object.keys(this.config.strings).includes(language);
282
- }
283
- /**
284
- * Clears all instances (for testing purposes)
285
- * @internal
286
- */
287
- static clearInstances() {
288
- I18nEngine._instances.clear();
289
- I18nEngine._defaultKey = null;
290
- }
291
- /**
292
- * Removes a specific instance by key
293
- * @param key The key of the instance to remove
294
- * @internal
295
- */
296
- static removeInstance(key) {
297
- const instanceKey = key || I18nEngine.DefaultInstanceKey;
298
- I18nEngine._instances.delete(instanceKey);
299
- if (I18nEngine._defaultKey === instanceKey) {
300
- const nextKey = I18nEngine._instances.keys().next().value;
301
- I18nEngine._defaultKey =
302
- I18nEngine._instances.size > 0 && nextKey ? nextKey : null;
303
- }
304
- }
305
- /**
306
- * Static error message templates for validation
307
- */
308
- static ErrorTemplates = {
309
- MissingStringCollection: 'Missing string collection for language: {language}',
310
- MissingTranslation: "Missing translation for key '{key}' in language '{language}'",
311
- DefaultLanguageNoCollection: "Default language '{language}' has no string collection",
312
- };
313
- /**
314
- * Validates the configuration to ensure all languages have string collections
315
- * and all string keys are provided for each language
316
- * @param config The configuration to validate
317
- * @throws Error if validation fails
318
- */
319
- validateConfig(config) {
320
- // Check that default language exists
321
- if (!config.strings[config.defaultLanguage]) {
322
- throw new Error(this.getValidationError('Error_DefaultLanguageNoCollectionTemplate', { language: config.defaultLanguage }, config));
323
- }
324
- // Check that all string keys are provided for each language that has strings
325
- for (const language of Object.keys(config.strings)) {
326
- const strings = config.strings[language];
327
- for (const stringKey of config.stringNames) {
328
- if (!strings[stringKey]) {
329
- throw new Error(this.getValidationError('Error_MissingTranslationTemplate', { key: stringKey, language }, config));
330
- }
331
- }
332
- }
333
- }
334
- /**
335
- * Gets validation error message, trying translation first, falling back to template
336
- */
337
- getValidationError(key, vars, config) {
338
- try {
339
- const strings = config.strings[config.defaultLanguage];
340
- if (strings?.[key]) {
341
- return (0, utils_1.replaceVariables)(strings[key], vars, config.constants);
342
- }
343
- }
344
- catch { }
345
- // Fallback to static templates
346
- const template = key.includes('MissingStringCollection')
347
- ? I18nEngine.ErrorTemplates.MissingStringCollection
348
- : key.includes('MissingTranslation')
349
- ? I18nEngine.ErrorTemplates.MissingTranslation
350
- : I18nEngine.ErrorTemplates.DefaultLanguageNoCollection;
351
- return (0, utils_1.replaceVariables)(template, vars);
352
- }
353
- }
354
- exports.I18nEngine = I18nEngine;
355
- //# sourceMappingURL=i18n-engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n-engine.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/i18n-engine.ts"],"names":[],"mappings":"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"}
@@ -1,114 +0,0 @@
1
- /**
2
- * Language registry for managing supported languages and their properties
3
- */
4
- import { LanguageDefinition } from './language-definition';
5
- /**
6
- * Static singleton registry for managing supported languages globally
7
- */
8
- export declare class LanguageRegistry {
9
- private static languages;
10
- private static languagesByCodes;
11
- private static defaultLanguageId;
12
- private constructor();
13
- /**
14
- * Register a new language
15
- */
16
- static registerLanguage(language: LanguageDefinition): void;
17
- /**
18
- * Register multiple languages at once
19
- */
20
- static registerLanguages(languages: readonly LanguageDefinition[]): void;
21
- /**
22
- * Get a language by its ID
23
- */
24
- static getLanguage(languageId: string): LanguageDefinition | undefined;
25
- /**
26
- * Get a language by its code
27
- */
28
- static getLanguageByCode(code: string): LanguageDefinition | undefined;
29
- /**
30
- * Get all registered languages
31
- */
32
- static getAllLanguages(): ReadonlyArray<LanguageDefinition>;
33
- /**
34
- * Get all language IDs
35
- */
36
- static getLanguageIds(): readonly string[];
37
- /**
38
- * Get all language codes
39
- */
40
- static getLanguageCodes(): readonly string[];
41
- /**
42
- * Check if a language is registered
43
- */
44
- static hasLanguage(languageId: string): boolean;
45
- /**
46
- * Check if a language code is registered
47
- */
48
- static hasLanguageCode(code: string): boolean;
49
- /**
50
- * Get the default language
51
- */
52
- static getDefaultLanguage(): LanguageDefinition | null;
53
- /**
54
- * Get the default language ID
55
- */
56
- static getDefaultLanguageId(): string | null;
57
- /**
58
- * Get matching language code with fallback logic:
59
- * 1. Try requested code
60
- * 2. Fall back to user default
61
- * 3. Fall back to site default
62
- */
63
- static getMatchingLanguageCode(requestedCode?: string, userDefaultCode?: string): string;
64
- /**
65
- * Set the default language
66
- */
67
- static setDefaultLanguage(languageId: string): void;
68
- /**
69
- * Get the number of registered languages
70
- */
71
- static getLanguageCount(): number;
72
- /**
73
- * Validate that all required languages are present
74
- */
75
- static validateRequiredLanguages(requiredLanguages: readonly string[]): LanguageValidationResult;
76
- /**
77
- * Create a mapping of language IDs to their display names
78
- */
79
- static getLanguageDisplayNames(): Record<string, string>;
80
- /**
81
- * Create a mapping of language IDs to their codes
82
- */
83
- static getLanguageCodeMapping(): Record<string, string>;
84
- /**
85
- * Find languages by partial name match (case-insensitive)
86
- */
87
- static findLanguagesByName(partialName: string): readonly LanguageDefinition[];
88
- /**
89
- * Clear all registered languages (useful for testing)
90
- */
91
- static clear(): void;
92
- }
93
- /**
94
- * Validation result for language operations
95
- */
96
- export interface LanguageValidationResult {
97
- readonly isValid: boolean;
98
- readonly missingLanguages: readonly string[];
99
- readonly errors: readonly string[];
100
- }
101
- /**
102
- * Helper function to create language definitions with type safety
103
- */
104
- export declare function createLanguageDefinition(id: string, name: string, code: string, isDefault?: boolean): LanguageDefinition;
105
- /**
106
- * Helper function to create multiple language definitions
107
- */
108
- export declare function createLanguageDefinitions(languages: Array<{
109
- id: string;
110
- name: string;
111
- code: string;
112
- isDefault?: boolean;
113
- }>): LanguageDefinition[];
114
- //# sourceMappingURL=language-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"language-registry.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/language-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAyC;IACjE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA6B;IAC5D,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAuB;IAEvD,OAAO;IAIP;;OAEG;WACW,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAkClE;;OAEG;WACW,iBAAiB,CAC7B,SAAS,EAAE,SAAS,kBAAkB,EAAE,GACvC,IAAI;IAMP;;OAEG;WACW,WAAW,CACvB,UAAU,EAAE,MAAM,GACjB,kBAAkB,GAAG,SAAS;IAIjC;;OAEG;WACW,iBAAiB,CAC7B,IAAI,EAAE,MAAM,GACX,kBAAkB,GAAG,SAAS;IAKjC;;OAEG;WACW,eAAe,IAAI,aAAa,CAAC,kBAAkB,CAAC;IAIlE;;OAEG;WACW,cAAc,IAAI,SAAS,MAAM,EAAE;IAIjD;;OAEG;WACW,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAInD;;OAEG;WACW,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAItD;;OAEG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD;;OAEG;WACW,kBAAkB,IAAI,kBAAkB,GAAG,IAAI;IAO7D;;OAEG;WACW,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAInD;;;;;OAKG;WACW,uBAAuB,CACnC,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM;IAwBT;;OAEG;WACW,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAW1D;;OAEG;WACW,gBAAgB,IAAI,MAAM;IAIxC;;OAEG;WACW,yBAAyB,CACrC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,wBAAwB;IAkB3B;;OAEG;WACW,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ/D;;OAEG;WACW,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ9D;;OAEG;WACW,mBAAmB,CAC/B,WAAW,EAAE,MAAM,GAClB,SAAS,kBAAkB,EAAE;IAOhC;;OAEG;WACW,KAAK,IAAI,IAAI;CAK5B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,OAAO,GAClB,kBAAkB,CAOpB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,GACD,kBAAkB,EAAE,CAItB"}