@digitaldefiance/i18n-lib 1.2.4 → 1.3.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.
@@ -7,7 +7,11 @@ import { CoreStringKey } from './core-string-key';
7
7
  import { LanguageCodes } from './language-codes';
8
8
  import { LanguageDefinition } from './language-definition';
9
9
  import { PluginI18nEngine } from './plugin-i18n-engine';
10
- export type CoreLanguageCode = typeof LanguageCodes.EN_US | typeof LanguageCodes.EN_GB | typeof LanguageCodes.FR | typeof LanguageCodes.ES | typeof LanguageCodes.DE | typeof LanguageCodes.ZH_CN | typeof LanguageCodes.JA | typeof LanguageCodes.UK;
10
+ /**
11
+ * Core language code type - derived from LanguageCodes for type safety
12
+ * Use this for type parameters when you want to restrict to core languages only
13
+ */
14
+ export type CoreLanguageCode = typeof LanguageCodes[keyof typeof LanguageCodes];
11
15
  /**
12
16
  * Create default language definitions
13
17
  */
@@ -25,6 +29,14 @@ export declare function createCoreComponentStrings(): import("./strict-types").C
25
29
  * Create core component registration
26
30
  */
27
31
  export declare function createCoreComponentRegistration(): ComponentRegistration<CoreStringKey, CoreLanguageCode>;
32
+ /**
33
+ * Get core language codes as array (for Mongoose enums, etc.)
34
+ */
35
+ export declare function getCoreLanguageCodes(): string[];
36
+ /**
37
+ * Get core language definitions
38
+ */
39
+ export declare function getCoreLanguageDefinitions(): LanguageDefinition[];
28
40
  /**
29
41
  * Create a pre-configured I18n engine with core components
30
42
  */
package/dist/core-i18n.js CHANGED
@@ -7,6 +7,8 @@ exports.CoreComponentDefinition = exports.CoreI18nComponentId = void 0;
7
7
  exports.createDefaultLanguages = createDefaultLanguages;
8
8
  exports.createCoreComponentStrings = createCoreComponentStrings;
9
9
  exports.createCoreComponentRegistration = createCoreComponentRegistration;
10
+ exports.getCoreLanguageCodes = getCoreLanguageCodes;
11
+ exports.getCoreLanguageDefinitions = getCoreLanguageDefinitions;
10
12
  exports.createCoreI18nEngine = createCoreI18nEngine;
11
13
  exports.getCoreTranslation = getCoreTranslation;
12
14
  exports.safeCoreTranslation = safeCoreTranslation;
@@ -433,6 +435,18 @@ function createCoreComponentRegistration() {
433
435
  strings: createCoreComponentStrings(),
434
436
  };
435
437
  }
438
+ /**
439
+ * Get core language codes as array (for Mongoose enums, etc.)
440
+ */
441
+ function getCoreLanguageCodes() {
442
+ return Object.values(language_codes_1.LanguageCodes);
443
+ }
444
+ /**
445
+ * Get core language definitions
446
+ */
447
+ function getCoreLanguageDefinitions() {
448
+ return createDefaultLanguages();
449
+ }
436
450
  /**
437
451
  * Create a pre-configured I18n engine with core components
438
452
  */
@@ -0,0 +1,20 @@
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>;
@@ -0,0 +1,36 @@
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
+ }
package/dist/index.d.ts CHANGED
@@ -35,6 +35,7 @@ export * from './registry-error-type';
35
35
  export * from './translation-engine';
36
36
  export * from './translation-request';
37
37
  export * from './translation-response';
38
+ export * from './create-translation-adapter';
38
39
  export { createCoreI18nEngine as createCoreI18n } from './core-i18n';
39
40
  export { I18nEngine as I18n } from './i18n-engine';
40
41
  export { PluginI18nEngine as PluginI18n } from './plugin-i18n-engine';
package/dist/index.js CHANGED
@@ -54,6 +54,7 @@ __exportStar(require("./registry-error-type"), exports);
54
54
  __exportStar(require("./translation-engine"), exports);
55
55
  __exportStar(require("./translation-request"), exports);
56
56
  __exportStar(require("./translation-response"), exports);
57
+ __exportStar(require("./create-translation-adapter"), exports);
57
58
  // Re-export for convenience
58
59
  var core_i18n_1 = require("./core-i18n");
59
60
  Object.defineProperty(exports, "createCoreI18n", { enumerable: true, get: function () { return core_i18n_1.createCoreI18nEngine; } });
@@ -215,7 +215,7 @@ class UserError extends PluginTypedError<typeof UserErrorType, UserErrorStringKe
215
215
  engine: PluginI18nEngine<CoreLanguageCode>,
216
216
  type: UserErrorType,
217
217
  otherVars?: Record<string, string | number>,
218
- language?: CoreLanguage
218
+ language?: CoreLanguageCode
219
219
  ) {
220
220
  super(engine, 'user-system', type, userErrorReasonMap, language, otherVars);
221
221
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitaldefiance/i18n-lib",
3
- "version": "1.2.4",
3
+ "version": "1.3.0",
4
4
  "description": "Generic i18n library with enum translation support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",