@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
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ /**
3
+ * Main I18n Engine (no generics)
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.I18nEngine = void 0;
7
+ const core_i18n_1 = require("../core-i18n");
8
+ const errors_1 = require("../errors");
9
+ const component_store_1 = require("./component-store");
10
+ const context_manager_1 = require("./context-manager");
11
+ const enum_registry_1 = require("./enum-registry");
12
+ const language_registry_1 = require("./language-registry");
13
+ class I18nEngine {
14
+ static instances = new Map();
15
+ static defaultKey = null;
16
+ static DEFAULT_KEY = 'default';
17
+ static contextManager = new context_manager_1.ContextManager();
18
+ componentStore;
19
+ enumRegistry;
20
+ instanceKey;
21
+ config;
22
+ constructor(languages, config = {}, options) {
23
+ // Register languages
24
+ for (const lang of languages) {
25
+ if (!language_registry_1.LanguageRegistry.has(lang.id)) {
26
+ language_registry_1.LanguageRegistry.register(lang);
27
+ }
28
+ }
29
+ // Set defaults
30
+ const defaultLang = languages.find((l) => l.isDefault) || languages[0];
31
+ this.config = {
32
+ defaultLanguage: config.defaultLanguage || defaultLang.id,
33
+ fallbackLanguage: config.fallbackLanguage || defaultLang.id,
34
+ constants: config.constants || {},
35
+ validation: {
36
+ requireCompleteStrings: false,
37
+ allowPartialRegistration: true,
38
+ ...config.validation,
39
+ },
40
+ };
41
+ this.componentStore = new component_store_1.ComponentStore(this.config.constants);
42
+ this.enumRegistry = new enum_registry_1.EnumRegistry((key, vars) => this.safeTranslate(core_i18n_1.CoreI18nComponentId, key, vars));
43
+ this.instanceKey = options?.instanceKey || I18nEngine.DEFAULT_KEY;
44
+ // Create context
45
+ I18nEngine.contextManager.create(this.instanceKey, this.config.defaultLanguage);
46
+ // Register instance
47
+ if (options?.registerInstance !== false) {
48
+ if (I18nEngine.instances.has(this.instanceKey)) {
49
+ throw errors_1.I18nError.instanceExists(this.instanceKey);
50
+ }
51
+ I18nEngine.instances.set(this.instanceKey, this);
52
+ if (options?.setAsDefault !== false || !I18nEngine.defaultKey) {
53
+ I18nEngine.defaultKey = this.instanceKey;
54
+ }
55
+ }
56
+ }
57
+ // Component management
58
+ register(config) {
59
+ return this.componentStore.register(config);
60
+ }
61
+ updateStrings(componentId, strings) {
62
+ return this.componentStore.update(componentId, strings);
63
+ }
64
+ hasComponent(componentId) {
65
+ return this.componentStore.has(componentId);
66
+ }
67
+ getComponents() {
68
+ return this.componentStore.getAll();
69
+ }
70
+ // Translation
71
+ translate(componentId, key, variables, language) {
72
+ const lang = language || I18nEngine.contextManager.getCurrentLanguage(this.instanceKey);
73
+ return this.componentStore.translate(componentId, key, variables, lang);
74
+ }
75
+ safeTranslate(componentId, key, variables, language) {
76
+ const lang = language || I18nEngine.contextManager.getCurrentLanguage(this.instanceKey);
77
+ return this.componentStore.safeTranslate(componentId, key, variables, lang);
78
+ }
79
+ t(template, variables, language) {
80
+ const lang = language || I18nEngine.contextManager.getCurrentLanguage(this.instanceKey);
81
+ // Replace {{component.key}} patterns
82
+ let result = template.replace(/\{\{([^}]+)\}\}/g, (match, pattern) => {
83
+ const parts = pattern.split('.');
84
+ if (parts.length === 2) {
85
+ const [componentId, key] = parts.map((p) => p.trim());
86
+ return this.safeTranslate(componentId, key, variables, lang);
87
+ }
88
+ return match;
89
+ });
90
+ // Replace {variable} patterns
91
+ if (variables) {
92
+ result = result.replace(/\{(\w+)\}/g, (match, varName) => {
93
+ return variables[varName] !== undefined ? String(variables[varName]) : match;
94
+ });
95
+ }
96
+ return result;
97
+ }
98
+ // Language management
99
+ registerLanguage(language) {
100
+ language_registry_1.LanguageRegistry.register(language);
101
+ }
102
+ setLanguage(language) {
103
+ if (!language_registry_1.LanguageRegistry.has(language)) {
104
+ throw errors_1.I18nError.languageNotFound(language);
105
+ }
106
+ I18nEngine.contextManager.setLanguage(this.instanceKey, language);
107
+ }
108
+ setAdminLanguage(language) {
109
+ if (!language_registry_1.LanguageRegistry.has(language)) {
110
+ throw errors_1.I18nError.languageNotFound(language);
111
+ }
112
+ I18nEngine.contextManager.setAdminLanguage(this.instanceKey, language);
113
+ }
114
+ getLanguages() {
115
+ return language_registry_1.LanguageRegistry.getAll();
116
+ }
117
+ hasLanguage(language) {
118
+ return language_registry_1.LanguageRegistry.has(language);
119
+ }
120
+ // Context management
121
+ switchToAdmin() {
122
+ I18nEngine.contextManager.switchToAdmin(this.instanceKey);
123
+ }
124
+ switchToUser() {
125
+ I18nEngine.contextManager.switchToUser(this.instanceKey);
126
+ }
127
+ getCurrentLanguage() {
128
+ return I18nEngine.contextManager.getCurrentLanguage(this.instanceKey);
129
+ }
130
+ // Enum translation
131
+ registerEnum(enumObj, translations, enumName) {
132
+ this.enumRegistry.register(enumObj, translations, enumName);
133
+ }
134
+ translateEnum(enumObj, value, language) {
135
+ const lang = language || this.getCurrentLanguage();
136
+ return this.enumRegistry.translate(enumObj, value, lang);
137
+ }
138
+ hasEnum(enumObj) {
139
+ return this.enumRegistry.has(enumObj);
140
+ }
141
+ // Validation
142
+ validate() {
143
+ const errors = [];
144
+ const warnings = [];
145
+ for (const component of this.componentStore.getAll()) {
146
+ const result = this.componentStore.register(component);
147
+ errors.push(...result.errors);
148
+ warnings.push(...result.warnings);
149
+ }
150
+ return {
151
+ isValid: errors.length === 0,
152
+ errors,
153
+ warnings,
154
+ };
155
+ }
156
+ // Static methods
157
+ static createInstance(key, languages, config) {
158
+ return new I18nEngine(languages, config, {
159
+ instanceKey: key,
160
+ registerInstance: true,
161
+ setAsDefault: false,
162
+ });
163
+ }
164
+ static getInstance(key) {
165
+ const instanceKey = key || I18nEngine.defaultKey || I18nEngine.DEFAULT_KEY;
166
+ const instance = I18nEngine.instances.get(instanceKey);
167
+ if (!instance) {
168
+ throw errors_1.I18nError.instanceNotFound(instanceKey);
169
+ }
170
+ return instance;
171
+ }
172
+ static hasInstance(key) {
173
+ const instanceKey = key || I18nEngine.DEFAULT_KEY;
174
+ return I18nEngine.instances.has(instanceKey);
175
+ }
176
+ static removeInstance(key) {
177
+ const instanceKey = key || I18nEngine.DEFAULT_KEY;
178
+ const removed = I18nEngine.instances.delete(instanceKey);
179
+ if (removed && I18nEngine.defaultKey === instanceKey) {
180
+ I18nEngine.defaultKey = null;
181
+ }
182
+ return removed;
183
+ }
184
+ static resetAll() {
185
+ I18nEngine.instances.clear();
186
+ I18nEngine.defaultKey = null;
187
+ I18nEngine.contextManager.clear();
188
+ language_registry_1.LanguageRegistry.clear();
189
+ }
190
+ }
191
+ exports.I18nEngine = I18nEngine;
192
+ //# sourceMappingURL=i18n-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-engine.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/core/i18n-engine.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,4CAAmD;AACnD,sCAAsC;AAQtC,uDAAmD;AACnD,uDAAmD;AACnD,mDAA+C;AAC/C,2DAAuD;AAEvD,MAAa,UAAU;IACb,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IACjD,MAAM,CAAC,UAAU,GAAkB,IAAI,CAAC;IACxC,MAAM,CAAU,WAAW,GAAG,SAAS,CAAC;IACxC,MAAM,CAAU,cAAc,GAAG,IAAI,gCAAc,EAAE,CAAC;IAE7C,cAAc,CAAiB;IAC/B,YAAY,CAAe;IAC3B,WAAW,CAAS;IACpB,MAAM,CAAyB;IAEhD,YACE,SAAwC,EACxC,SAAuB,EAAE,EACzB,OAIC;QAED,qBAAqB;QACrB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,oCAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnC,oCAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,eAAe;QACf,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,GAAG;YACZ,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,WAAW,CAAC,EAAE;YACzD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,WAAW,CAAC,EAAE;YAC3D,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;YACjC,UAAU,EAAE;gBACV,sBAAsB,EAAE,KAAK;gBAC7B,wBAAwB,EAAE,IAAI;gBAC9B,GAAG,MAAM,CAAC,UAAU;aACrB;SACF,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAY,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,+BAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACxG,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC;QAElE,iBAAiB;QACjB,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAEhF,oBAAoB;QACpB,IAAI,OAAO,EAAE,gBAAgB,KAAK,KAAK,EAAE,CAAC;YACxC,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/C,MAAM,kBAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnD,CAAC;YACD,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAEjD,IAAI,OAAO,EAAE,YAAY,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC9D,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,QAAQ,CAAC,MAAuB;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,WAAmB,EAAE,OAA+C;QAChF,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY,CAAC,WAAmB;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,cAAc;IACd,SAAS,CACP,WAAmB,EACnB,GAAW,EACX,SAA+B,EAC/B,QAAiB;QAEjB,MAAM,IAAI,GAAG,QAAQ,IAAI,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,aAAa,CACX,WAAmB,EACnB,GAAW,EACX,SAA+B,EAC/B,QAAiB;QAEjB,MAAM,IAAI,GAAG,QAAQ,IAAI,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,CAAC,CAAC,QAAgB,EAAE,SAA+B,EAAE,QAAiB;QACpE,MAAM,IAAI,GAAG,QAAQ,IAAI,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAExF,qCAAqC;QACrC,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9D,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACvD,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/E,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB;IACtB,gBAAgB,CAAC,QAA4B;QAC3C,oCAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,oCAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,kBAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC/B,IAAI,CAAC,oCAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,kBAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,YAAY;QACV,OAAO,oCAAgB,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,OAAO,oCAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,qBAAqB;IACrB,aAAa;QACX,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,YAAY;QACV,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,kBAAkB;QAChB,OAAO,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;IAED,mBAAmB;IACnB,YAAY,CACV,OAA8B,EAC9B,YAAmD,EACnD,QAAgB;QAEhB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa,CACX,OAA8B,EAC9B,KAAY,EACZ,QAAiB;QAEjB,MAAM,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,OAAY;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;IACb,QAAQ;QACN,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,MAAM,CAAC,cAAc,CAAC,GAAW,EAAE,SAAwC,EAAE,MAAqB;QAChG,OAAO,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;YACvC,WAAW,EAAE,GAAG;YAChB,gBAAgB,EAAE,IAAI;YACtB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAY;QAC7B,MAAM,WAAW,GAAG,GAAG,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,CAAC;QAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,kBAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAY;QAC7B,MAAM,WAAW,GAAG,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;QAClD,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAY;QAChC,MAAM,WAAW,GAAG,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;QAClD,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,OAAO,IAAI,UAAU,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;YACrD,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QAC/B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,QAAQ;QACb,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC7B,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QAC7B,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,oCAAgB,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;;AA9OH,gCA+OC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Core exports
3
+ */
4
+ export * from './component-store';
5
+ export * from './context-manager';
6
+ export * from './enum-registry';
7
+ export * from './i18n-engine';
8
+ export * from './language-registry';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Core exports
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const tslib_1 = require("tslib");
7
+ tslib_1.__exportStar(require("./component-store"), exports);
8
+ tslib_1.__exportStar(require("./context-manager"), exports);
9
+ tslib_1.__exportStar(require("./enum-registry"), exports);
10
+ tslib_1.__exportStar(require("./i18n-engine"), exports);
11
+ tslib_1.__exportStar(require("./language-registry"), exports);
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/core/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,4DAAkC;AAClC,4DAAkC;AAClC,0DAAgC;AAChC,wDAA8B;AAC9B,8DAAoC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Static language registry (no generics)
3
+ */
4
+ import { LanguageDefinition } from '../interfaces';
5
+ export declare class LanguageRegistry {
6
+ private static languages;
7
+ private static defaultLanguageId;
8
+ static register(language: LanguageDefinition): void;
9
+ static has(languageId: string): boolean;
10
+ static get(languageId: string): LanguageDefinition;
11
+ static getAll(): readonly LanguageDefinition[];
12
+ static getIds(): readonly string[];
13
+ static getCodes(): readonly string[];
14
+ static getDefault(): LanguageDefinition | null;
15
+ static getByCode(code: string): LanguageDefinition | undefined;
16
+ static getMatchingCode(requestedCode?: string, userDefaultCode?: string): string;
17
+ static clear(): void;
18
+ static hasLanguage(languageId: string): boolean;
19
+ static registerLanguage(language: LanguageDefinition): void;
20
+ static registerLanguages(languages: readonly LanguageDefinition[]): void;
21
+ static getLanguageIds(): readonly string[];
22
+ static getAllLanguages(): readonly LanguageDefinition[];
23
+ static getLanguageByCode(code: string): LanguageDefinition | undefined;
24
+ static getLanguage(languageId: string): LanguageDefinition | undefined;
25
+ static hasLanguageCode(code: string): boolean;
26
+ static getDefaultLanguageId(): string | null;
27
+ static getLanguageCount(): number;
28
+ static getDefaultLanguage(): LanguageDefinition | null;
29
+ static setDefaultLanguage(languageId: string): void;
30
+ static validateRequiredLanguages(requiredLanguages: readonly string[]): {
31
+ isValid: boolean;
32
+ missingLanguages: readonly string[];
33
+ errors: readonly string[];
34
+ };
35
+ static getLanguageDisplayNames(): Record<string, string>;
36
+ static getLanguageCodeMapping(): Record<string, string>;
37
+ static findLanguagesByName(partialName: string): readonly LanguageDefinition[];
38
+ static getLanguageCodes(): readonly string[];
39
+ static getMatchingLanguageCode(requestedCode?: string, userDefaultCode?: string): string;
40
+ }
41
+ //# sourceMappingURL=language-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-registry.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/core/language-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAyC;IACjE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAuB;IAEvD,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAiBnD,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIvC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAQlD,MAAM,CAAC,MAAM,IAAI,SAAS,kBAAkB,EAAE;IAI9C,MAAM,CAAC,MAAM,IAAI,SAAS,MAAM,EAAE;IAIlC,MAAM,CAAC,QAAQ,IAAI,SAAS,MAAM,EAAE;IAIpC,MAAM,CAAC,UAAU,IAAI,kBAAkB,GAAG,IAAI;IAO9C,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI9D,MAAM,CAAC,eAAe,CACpB,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM;IAiBT,MAAM,CAAC,KAAK,IAAI,IAAI;IAMpB,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAI3D,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,GAAG,IAAI;IAIxE,MAAM,CAAC,cAAc,IAAI,SAAS,MAAM,EAAE;IAI1C,MAAM,CAAC,eAAe,IAAI,SAAS,kBAAkB,EAAE;IAIvD,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAItE,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAQtE,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7C,MAAM,CAAC,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAI5C,MAAM,CAAC,gBAAgB,IAAI,MAAM;IAIjC,MAAM,CAAC,kBAAkB,IAAI,kBAAkB,GAAG,IAAI;IAItD,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOnD,MAAM,CAAC,yBAAyB,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG;QACtE,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;QACpC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;KAC3B;IAkBD,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQxD,MAAM,CAAC,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQvD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,kBAAkB,EAAE;IAO9E,MAAM,CAAC,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAI5C,MAAM,CAAC,uBAAuB,CAC5B,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM;CAGV"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ /**
3
+ * Static language registry (no generics)
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LanguageRegistry = void 0;
7
+ const errors_1 = require("../errors");
8
+ class LanguageRegistry {
9
+ static languages = new Map();
10
+ static defaultLanguageId = null;
11
+ static register(language) {
12
+ if (this.languages.has(language.id)) {
13
+ throw errors_1.I18nError.duplicateLanguage(language.id);
14
+ }
15
+ const existing = this.getByCode(language.code);
16
+ if (existing) {
17
+ throw errors_1.I18nError.duplicateLanguage(language.id);
18
+ }
19
+ this.languages.set(language.id, language);
20
+ if (language.isDefault || !this.defaultLanguageId) {
21
+ this.defaultLanguageId = language.id;
22
+ }
23
+ }
24
+ static has(languageId) {
25
+ return this.languages.has(languageId);
26
+ }
27
+ static get(languageId) {
28
+ const lang = this.languages.get(languageId);
29
+ if (!lang) {
30
+ throw errors_1.I18nError.languageNotFound(languageId);
31
+ }
32
+ return lang;
33
+ }
34
+ static getAll() {
35
+ return Array.from(this.languages.values());
36
+ }
37
+ static getIds() {
38
+ return Array.from(this.languages.keys());
39
+ }
40
+ static getCodes() {
41
+ return Array.from(this.languages.values()).map((l) => l.code);
42
+ }
43
+ static getDefault() {
44
+ if (!this.defaultLanguageId) {
45
+ return null;
46
+ }
47
+ return this.get(this.defaultLanguageId);
48
+ }
49
+ static getByCode(code) {
50
+ return Array.from(this.languages.values()).find((l) => l.code === code);
51
+ }
52
+ static getMatchingCode(requestedCode, userDefaultCode) {
53
+ const trimmedRequested = requestedCode?.trim();
54
+ const trimmedUserDefault = userDefaultCode?.trim();
55
+ if (trimmedRequested && this.getByCode(trimmedRequested)) {
56
+ return trimmedRequested;
57
+ }
58
+ if (trimmedUserDefault && this.getByCode(trimmedUserDefault)) {
59
+ return trimmedUserDefault;
60
+ }
61
+ const defaultLang = this.getDefault();
62
+ if (!defaultLang) {
63
+ throw errors_1.I18nError.invalidConfig('No default language configured');
64
+ }
65
+ return defaultLang.code;
66
+ }
67
+ static clear() {
68
+ this.languages.clear();
69
+ this.defaultLanguageId = null;
70
+ }
71
+ // V1 compatibility methods
72
+ static hasLanguage(languageId) {
73
+ return this.has(languageId);
74
+ }
75
+ static registerLanguage(language) {
76
+ this.register(language);
77
+ }
78
+ static registerLanguages(languages) {
79
+ languages.forEach(lang => this.register(lang));
80
+ }
81
+ static getLanguageIds() {
82
+ return this.getIds();
83
+ }
84
+ static getAllLanguages() {
85
+ return this.getAll();
86
+ }
87
+ static getLanguageByCode(code) {
88
+ return this.getByCode(code);
89
+ }
90
+ static getLanguage(languageId) {
91
+ try {
92
+ return this.get(languageId);
93
+ }
94
+ catch {
95
+ return undefined;
96
+ }
97
+ }
98
+ static hasLanguageCode(code) {
99
+ return this.getByCode(code) !== undefined;
100
+ }
101
+ static getDefaultLanguageId() {
102
+ return this.defaultLanguageId;
103
+ }
104
+ static getLanguageCount() {
105
+ return this.languages.size;
106
+ }
107
+ static getDefaultLanguage() {
108
+ return this.getDefault();
109
+ }
110
+ static setDefaultLanguage(languageId) {
111
+ if (!this.has(languageId)) {
112
+ throw errors_1.I18nError.languageNotFound(languageId);
113
+ }
114
+ this.defaultLanguageId = languageId;
115
+ }
116
+ static validateRequiredLanguages(requiredLanguages) {
117
+ const missingLanguages = [];
118
+ const errors = [];
119
+ for (const languageId of requiredLanguages) {
120
+ if (!this.has(languageId)) {
121
+ missingLanguages.push(languageId);
122
+ errors.push(`Required language '${languageId}' is not registered`);
123
+ }
124
+ }
125
+ return {
126
+ isValid: missingLanguages.length === 0,
127
+ missingLanguages,
128
+ errors,
129
+ };
130
+ }
131
+ static getLanguageDisplayNames() {
132
+ const result = {};
133
+ for (const [languageId, language] of this.languages) {
134
+ result[languageId] = language.name;
135
+ }
136
+ return result;
137
+ }
138
+ static getLanguageCodeMapping() {
139
+ const result = {};
140
+ for (const [languageId, language] of this.languages) {
141
+ result[languageId] = language.code;
142
+ }
143
+ return result;
144
+ }
145
+ static findLanguagesByName(partialName) {
146
+ const searchTerm = partialName.toLowerCase();
147
+ return Array.from(this.languages.values()).filter((language) => language.name.toLowerCase().includes(searchTerm));
148
+ }
149
+ static getLanguageCodes() {
150
+ return this.getCodes();
151
+ }
152
+ static getMatchingLanguageCode(requestedCode, userDefaultCode) {
153
+ return this.getMatchingCode(requestedCode, userDefaultCode);
154
+ }
155
+ }
156
+ exports.LanguageRegistry = LanguageRegistry;
157
+ //# sourceMappingURL=language-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-registry.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/core/language-registry.ts"],"names":[],"mappings":"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"}
@@ -48,12 +48,16 @@ export declare function getCoreLanguageDefinitions(): LanguageDefinition[];
48
48
  * Returns engine with string type - use registry for language validation
49
49
  */
50
50
  export declare function createCoreI18nEngine(instanceKey?: string): PluginI18nEngine<string>;
51
+ export declare function getCoreI18nEngine(): PluginI18nEngine<string>;
52
+ export declare const coreI18nEngine: PluginI18nEngine<string>;
53
+ export declare function resetCoreI18nEngine(): void;
51
54
  /**
52
55
  * Type alias for easier usage
53
56
  */
54
57
  export type CoreI18nEngine = PluginI18nEngine<string>;
55
58
  /**
56
59
  * Helper function to get core translation
60
+ * Uses the core engine instance to ensure core strings are available
57
61
  */
58
62
  export declare function getCoreTranslation(stringKey: CoreStringKey, variables?: Record<string, string | number>, language?: string, instanceKey?: string): string;
59
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"core-i18n.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/core-i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAI1C;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,EAAE,CA4C7D;AAED,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,CAAC,aAAa,CAItE,CAAC;AAEF;;GAEG;AACH,wBAAgB,0BAA0B,qFAwczC;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CACtE,aAAa,EACb,MAAM,CACP,CAKA;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,kBAAkB,EAAE,CAEjE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,GAAE,MAA2B,GACvC,gBAAgB,CAAC,MAAM,CAAC,CAQ1B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEtD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,aAAa,EACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,aAAa,EACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAMR"}
1
+ {"version":3,"file":"core-i18n.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-i18n-lib/src/core-i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAsBxD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAI1C;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,EAAE,CA4C7D;AAED,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,CAAC,aAAa,CAItE,CAAC;AAEF;;GAEG;AACH,wBAAgB,0BAA0B,qFAwkBzC;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CACtE,aAAa,EACb,MAAM,CACP,CAKA;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,kBAAkB,EAAE,CAEjE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,GAAE,MAA2B,GACvC,gBAAgB,CAAC,MAAM,CAAC,CAQ1B;AAMD,wBAAgB,iBAAiB,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAK5D;AAGD,eAAO,MAAM,cAAc,0BAIzB,CAAC;AAGH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,aAAa,EACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,aAAa,EACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAMR"}