@intlayer/ngx-translate 9.5.10

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 (58) hide show
  1. package/README.md +329 -0
  2. package/dist/esm/esbuild/index.mjs +43 -0
  3. package/dist/esm/esbuild/index.mjs.map +1 -0
  4. package/dist/esm/handlers.mjs +116 -0
  5. package/dist/esm/handlers.mjs.map +1 -0
  6. package/dist/esm/index.mjs +11 -0
  7. package/dist/esm/partialDeclarations.mjs +0 -0
  8. package/dist/esm/plugin/index.mjs +49 -0
  9. package/dist/esm/plugin/index.mjs.map +1 -0
  10. package/dist/esm/providers.mjs +53 -0
  11. package/dist/esm/providers.mjs.map +1 -0
  12. package/dist/esm/registryLookup.mjs +52 -0
  13. package/dist/esm/registryLookup.mjs.map +1 -0
  14. package/dist/esm/standalone.mjs +27 -0
  15. package/dist/esm/standalone.mjs.map +1 -0
  16. package/dist/esm/translateBlockDirective.mjs +47 -0
  17. package/dist/esm/translateBlockDirective.mjs.map +1 -0
  18. package/dist/esm/translateDirective.mjs +66 -0
  19. package/dist/esm/translateDirective.mjs.map +1 -0
  20. package/dist/esm/translatePipe.mjs +60 -0
  21. package/dist/esm/translatePipe.mjs.map +1 -0
  22. package/dist/esm/translateService.mjs +224 -0
  23. package/dist/esm/translateService.mjs.map +1 -0
  24. package/dist/esm/translateStore.mjs +53 -0
  25. package/dist/esm/translateStore.mjs.map +1 -0
  26. package/dist/esm/types.mjs +0 -0
  27. package/dist/esm/util.mjs +44 -0
  28. package/dist/esm/util.mjs.map +1 -0
  29. package/dist/types/esbuild/index.d.ts +23 -0
  30. package/dist/types/esbuild/index.d.ts.map +1 -0
  31. package/dist/types/handlers.d.ts +52 -0
  32. package/dist/types/handlers.d.ts.map +1 -0
  33. package/dist/types/index.d.ts +11 -0
  34. package/dist/types/partialDeclarations.d.ts +18 -0
  35. package/dist/types/partialDeclarations.d.ts.map +1 -0
  36. package/dist/types/plugin/index.d.ts +25 -0
  37. package/dist/types/plugin/index.d.ts.map +1 -0
  38. package/dist/types/providers.d.ts +22 -0
  39. package/dist/types/providers.d.ts.map +1 -0
  40. package/dist/types/registryLookup.d.ts +13 -0
  41. package/dist/types/registryLookup.d.ts.map +1 -0
  42. package/dist/types/standalone.d.ts +24 -0
  43. package/dist/types/standalone.d.ts.map +1 -0
  44. package/dist/types/translateBlockDirective.d.ts +23 -0
  45. package/dist/types/translateBlockDirective.d.ts.map +1 -0
  46. package/dist/types/translateDirective.d.ts +33 -0
  47. package/dist/types/translateDirective.d.ts.map +1 -0
  48. package/dist/types/translatePipe.d.ts +21 -0
  49. package/dist/types/translatePipe.d.ts.map +1 -0
  50. package/dist/types/translateService.d.ts +106 -0
  51. package/dist/types/translateService.d.ts.map +1 -0
  52. package/dist/types/translateStore.d.ts +21 -0
  53. package/dist/types/translateStore.d.ts.map +1 -0
  54. package/dist/types/types.d.ts +56 -0
  55. package/dist/types/types.d.ts.map +1 -0
  56. package/dist/types/util.d.ts +22 -0
  57. package/dist/types/util.d.ts.map +1 -0
  58. package/package.json +115 -0
@@ -0,0 +1,53 @@
1
+ import { getValue, mergeDeep } from "./util.mjs";
2
+ import * as i0 from "@angular/core";
3
+ import { signal } from "@angular/core";
4
+ import { Subject } from "rxjs";
5
+
6
+ //#region src/translateStore.ts
7
+ /**
8
+ * Runtime translations registered through `setTranslation()` / a loader.
9
+ * Intlayer dictionaries are resolved separately and never copied here.
10
+ */
11
+ var TranslateStore = class TranslateStore {
12
+ translationsSignal = signal({});
13
+ translations = this.translationsSignal.asReadonly();
14
+ translationChangeSubject = new Subject();
15
+ translationChange$ = this.translationChangeSubject.asObservable();
16
+ getTranslations(language) {
17
+ return this.translations()[language] ?? {};
18
+ }
19
+ setTranslations(language, translations, shouldMerge) {
20
+ this.translationsSignal.update((current) => ({
21
+ ...current,
22
+ [language]: shouldMerge && current[language] ? mergeDeep(current[language], translations) : translations
23
+ }));
24
+ this.translationChangeSubject.next({
25
+ lang: language,
26
+ translations: this.getTranslations(language)
27
+ });
28
+ }
29
+ deleteTranslations(language) {
30
+ this.translationsSignal.update(({ [language]: _removed, ...rest }) => rest);
31
+ }
32
+ getTranslationValue(language, key) {
33
+ return getValue(this.translations()[language], key);
34
+ }
35
+ static ɵfac = i0.ɵɵngDeclareFactory({
36
+ minVersion: "12.0.0",
37
+ version: "17.0.0",
38
+ ngImport: i0,
39
+ type: TranslateStore,
40
+ deps: [],
41
+ target: i0.ɵɵFactoryTarget.Injectable
42
+ });
43
+ static ɵprov = i0.ɵɵngDeclareInjectable({
44
+ minVersion: "12.0.0",
45
+ version: "17.0.0",
46
+ ngImport: i0,
47
+ type: TranslateStore
48
+ });
49
+ };
50
+
51
+ //#endregion
52
+ export { TranslateStore };
53
+ //# sourceMappingURL=translateStore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translateStore.mjs","names":[],"sources":["../../src/translateStore.ts"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { signal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport type {\n FactoryDeclaration,\n InjectableDeclaration,\n} from './partialDeclarations';\nimport type {\n InterpolatableTranslationObject,\n Language,\n TranslationChangeEvent,\n} from './types';\nimport { getValue, mergeDeep } from './util';\n\n/**\n * Runtime translations registered through `setTranslation()` / a loader.\n * Intlayer dictionaries are resolved separately and never copied here.\n */\nexport class TranslateStore {\n private readonly translationsSignal = signal<\n Record<Language, InterpolatableTranslationObject>\n >({});\n readonly translations = this.translationsSignal.asReadonly();\n\n private readonly translationChangeSubject =\n new Subject<TranslationChangeEvent>();\n readonly translationChange$ = this.translationChangeSubject.asObservable();\n\n getTranslations(language: Language): InterpolatableTranslationObject {\n return this.translations()[language] ?? {};\n }\n\n setTranslations(\n language: Language,\n translations: InterpolatableTranslationObject,\n shouldMerge: boolean\n ): void {\n this.translationsSignal.update((current) => ({\n ...current,\n [language]:\n shouldMerge && current[language]\n ? mergeDeep(current[language], translations)\n : translations,\n }));\n this.translationChangeSubject.next({\n lang: language,\n translations: this.getTranslations(language),\n });\n }\n\n deleteTranslations(language: Language): void {\n this.translationsSignal.update(({ [language]: _removed, ...rest }) => rest);\n }\n\n getTranslationValue(language: Language, key: string): unknown {\n return getValue(this.translations()[language], key);\n }\n\n static ɵfac: i0.ɵɵFactoryDeclaration<TranslateStore, never> =\n i0.ɵɵngDeclareFactory({\n minVersion: '12.0.0',\n version: '17.0.0',\n ngImport: i0,\n type: TranslateStore,\n deps: [],\n target: i0.ɵɵFactoryTarget.Injectable,\n } as FactoryDeclaration) as never;\n static ɵprov: i0.ɵɵInjectableDeclaration<TranslateStore> =\n i0.ɵɵngDeclareInjectable({\n minVersion: '12.0.0',\n version: '17.0.0',\n ngImport: i0,\n type: TranslateStore,\n } as InjectableDeclaration) as never;\n}\n"],"mappings":";;;;;;;;;;AAkBA,IAAa,iBAAb,MAAa,eAAe;CAC1B,AAAiB,qBAAqB,OAEpC,CAAC,CAAC;CACJ,AAAS,eAAe,KAAK,mBAAmB,WAAW;CAE3D,AAAiB,2BACf,IAAI,QAAgC;CACtC,AAAS,qBAAqB,KAAK,yBAAyB,aAAa;CAEzE,gBAAgB,UAAqD;EACnE,OAAO,KAAK,aAAa,CAAC,CAAC,aAAa,CAAC;CAC3C;CAEA,gBACE,UACA,cACA,aACM;EACN,KAAK,mBAAmB,QAAQ,aAAa;GAC3C,GAAG;IACF,WACC,eAAe,QAAQ,YACnB,UAAU,QAAQ,WAAW,YAAY,IACzC;EACR,EAAE;EACF,KAAK,yBAAyB,KAAK;GACjC,MAAM;GACN,cAAc,KAAK,gBAAgB,QAAQ;EAC7C,CAAC;CACH;CAEA,mBAAmB,UAA0B;EAC3C,KAAK,mBAAmB,QAAQ,GAAG,WAAW,UAAU,GAAG,WAAW,IAAI;CAC5E;CAEA,oBAAoB,UAAoB,KAAsB;EAC5D,OAAO,SAAS,KAAK,aAAa,CAAC,CAAC,WAAW,GAAG;CACpD;CAEA,OAAO,OACL,GAAG,mBAAmB;EACpB,YAAY;EACZ,SAAS;EACT,UAAU;EACV,MAAM;EACN,MAAM,CAAC;EACP,QAAQ,GAAG,gBAAgB;CAC7B,CAAuB;CACzB,OAAO,QACL,GAAG,sBAAsB;EACvB,YAAY;EACZ,SAAS;EACT,UAAU;EACV,MAAM;CACR,CAA0B;AAC9B"}
File without changes
@@ -0,0 +1,44 @@
1
+ import { navigatePath } from "@intlayer/core/messageFormat";
2
+
3
+ //#region src/util.ts
4
+ const isDefined = (value) => typeof value !== "undefined";
5
+ const isDefinedAndNotNull = (value) => typeof value !== "undefined" && value !== null;
6
+ const isObject = (value) => typeof value === "object" && value !== null;
7
+ const isDict = (value) => isObject(value) && !Array.isArray(value);
8
+ const isArray = (value) => Array.isArray(value);
9
+ const isString = (value) => typeof value === "string";
10
+ const isFunction = (value) => typeof value === "function";
11
+ /** Deep structural equality over plain objects and arrays. */
12
+ const equals = (first, second) => {
13
+ if (first === second) return true;
14
+ if (!isObject(first) || !isObject(second)) return false;
15
+ if (Array.isArray(first) !== Array.isArray(second)) return false;
16
+ const firstKeys = Object.keys(first);
17
+ if (firstKeys.length !== Object.keys(second).length) return false;
18
+ return firstKeys.every((key) => Object.hasOwn(second, key) && equals(first[key], second[key]));
19
+ };
20
+ /** Merges `source` into `target` recursively, returning a new object. */
21
+ const mergeDeep = (target, source) => {
22
+ if (!isDict(target) || !isDict(source)) return source;
23
+ const output = { ...target };
24
+ for (const [key, value] of Object.entries(source)) output[key] = isDict(value) && isDict(output[key]) ? mergeDeep(output[key], value) : value;
25
+ return output;
26
+ };
27
+ /**
28
+ * Reads a dotted key, trying the flat key first (`{ 'a.b': … }`) like
29
+ * ngx-translate.
30
+ */
31
+ const getValue = (target, key) => key ? navigatePath(target, key) : void 0;
32
+ /** Returns a copy of `target` with `value` written at the dotted `key`. */
33
+ const insertValue = (target, key, value) => {
34
+ const [head, ...rest] = key.split(".");
35
+ const source = isDict(target) ? target : {};
36
+ return {
37
+ ...source,
38
+ [head]: rest.length ? insertValue(source[head] ?? {}, rest.join("."), value) : value
39
+ };
40
+ };
41
+
42
+ //#endregion
43
+ export { equals, getValue, insertValue, isArray, isDefined, isDefinedAndNotNull, isDict, isFunction, isObject, isString, mergeDeep };
44
+ //# sourceMappingURL=util.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.mjs","names":[],"sources":["../../src/util.ts"],"sourcesContent":["import { navigatePath } from '@intlayer/core/messageFormat';\n\ntype PlainObject = Record<string, unknown>;\n\nexport const isDefined = <T>(value: T | null | undefined): value is T | null =>\n typeof value !== 'undefined';\n\nexport const isDefinedAndNotNull = <T>(\n value: T | null | undefined\n): value is T => typeof value !== 'undefined' && value !== null;\n\nexport const isObject = (value: unknown): value is PlainObject =>\n typeof value === 'object' && value !== null;\n\nexport const isDict = (value: unknown): value is PlainObject =>\n isObject(value) && !Array.isArray(value);\n\nexport const isArray = (value: unknown): value is unknown[] =>\n Array.isArray(value);\n\nexport const isString = (value: unknown): value is string =>\n typeof value === 'string';\n\nexport const isFunction = (\n value: unknown\n): value is (...args: unknown[]) => unknown => typeof value === 'function';\n\n/** Deep structural equality over plain objects and arrays. */\nexport const equals = (first: unknown, second: unknown): boolean => {\n if (first === second) return true;\n if (!isObject(first) || !isObject(second)) return false;\n if (Array.isArray(first) !== Array.isArray(second)) return false;\n\n const firstKeys = Object.keys(first);\n if (firstKeys.length !== Object.keys(second).length) return false;\n\n return firstKeys.every(\n (key) => Object.hasOwn(second, key) && equals(first[key], second[key])\n );\n};\n\n/** Merges `source` into `target` recursively, returning a new object. */\nexport const mergeDeep = <T>(target: T, source: unknown): T => {\n if (!isDict(target) || !isDict(source)) return source as T;\n\n const output: PlainObject = { ...target };\n\n for (const [key, value] of Object.entries(source)) {\n output[key] =\n isDict(value) && isDict(output[key])\n ? mergeDeep(output[key], value)\n : value;\n }\n\n return output as T;\n};\n\n/**\n * Reads a dotted key, trying the flat key first (`{ 'a.b': … }`) like\n * ngx-translate.\n */\nexport const getValue = (target: unknown, key: string): unknown =>\n key ? navigatePath(target, key) : undefined;\n\n/** Returns a copy of `target` with `value` written at the dotted `key`. */\nexport const insertValue = <T>(\n target: Readonly<T>,\n key: string,\n value: unknown\n): T => {\n const [head, ...rest] = key.split('.');\n const source: PlainObject = isDict(target) ? target : {};\n\n return {\n ...source,\n [head as string]: rest.length\n ? insertValue(source[head as string] ?? {}, rest.join('.'), value)\n : value,\n } as T;\n};\n"],"mappings":";;;AAIA,MAAa,aAAgB,UAC3B,OAAO,UAAU;AAEnB,MAAa,uBACX,UACe,OAAO,UAAU,eAAe,UAAU;AAE3D,MAAa,YAAY,UACvB,OAAO,UAAU,YAAY,UAAU;AAEzC,MAAa,UAAU,UACrB,SAAS,KAAK,KAAK,CAAC,MAAM,QAAQ,KAAK;AAEzC,MAAa,WAAW,UACtB,MAAM,QAAQ,KAAK;AAErB,MAAa,YAAY,UACvB,OAAO,UAAU;AAEnB,MAAa,cACX,UAC6C,OAAO,UAAU;;AAGhE,MAAa,UAAU,OAAgB,WAA6B;CAClE,IAAI,UAAU,QAAQ,OAAO;CAC7B,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,MAAM,GAAG,OAAO;CAClD,IAAI,MAAM,QAAQ,KAAK,MAAM,MAAM,QAAQ,MAAM,GAAG,OAAO;CAE3D,MAAM,YAAY,OAAO,KAAK,KAAK;CACnC,IAAI,UAAU,WAAW,OAAO,KAAK,MAAM,CAAC,CAAC,QAAQ,OAAO;CAE5D,OAAO,UAAU,OACd,QAAQ,OAAO,OAAO,QAAQ,GAAG,KAAK,OAAO,MAAM,MAAM,OAAO,IAAI,CACvE;AACF;;AAGA,MAAa,aAAgB,QAAW,WAAuB;CAC7D,IAAI,CAAC,OAAO,MAAM,KAAK,CAAC,OAAO,MAAM,GAAG,OAAO;CAE/C,MAAM,SAAsB,EAAE,GAAG,OAAO;CAExC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAC9C,OAAO,OACL,OAAO,KAAK,KAAK,OAAO,OAAO,IAAI,IAC/B,UAAU,OAAO,MAAM,KAAK,IAC5B;CAGR,OAAO;AACT;;;;;AAMA,MAAa,YAAY,QAAiB,QACxC,MAAM,aAAa,QAAQ,GAAG,IAAI;;AAGpC,MAAa,eACX,QACA,KACA,UACM;CACN,MAAM,CAAC,MAAM,GAAG,QAAQ,IAAI,MAAM,GAAG;CACrC,MAAM,SAAsB,OAAO,MAAM,IAAI,SAAS,CAAC;CAEvD,OAAO;EACL,GAAG;GACF,OAAiB,KAAK,SACnB,YAAY,OAAO,SAAmB,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,IAC/D;CACN;AACF"}
@@ -0,0 +1,23 @@
1
+ import { EsbuildPlugin, IntlayerEsbuildPluginOptions } from "angular-intlayer/esbuild";
2
+ //#region src/esbuild/index.d.ts
3
+ /**
4
+ * esbuild plugin for the Angular CLI (`@angular-builders/custom-esbuild`):
5
+ * sets up angular-intlayer's build integration and resolves
6
+ * `@ngx-translate/core` to `@intlayer/ngx-translate`.
7
+ *
8
+ * The redirect goes through `build.resolve`, so the adapter takes the same
9
+ * path as any intlayer package — including angular-intlayer's handling of
10
+ * the dev server, which would otherwise externalize it to Vite's
11
+ * pre-bundler.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // esbuild/plugins.ts (referenced from angular.json "plugins")
16
+ * import { ngxTranslateEsbuildPlugin } from '@intlayer/ngx-translate/esbuild';
17
+ * export default [ngxTranslateEsbuildPlugin()];
18
+ * ```
19
+ */
20
+ export declare const ngxTranslateEsbuildPlugin: (options?: IntlayerEsbuildPluginOptions) => EsbuildPlugin;
21
+ //#endregion
22
+ export { ngxTranslateEsbuildPlugin as default };
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/esbuild/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;qBA6Ba,4BAAyB,UAC1B,iCACT"}
@@ -0,0 +1,52 @@
1
+ import { InterpolatableTranslation, InterpolatableTranslationObject, InterpolationParameters, MissingTranslationHandlerParams, StrictTranslation, TranslationObject } from "./types.js";
2
+ import * as i0 from "@angular/core";
3
+ import { Observable } from "rxjs";
4
+ //#region src/handlers.d.ts
5
+ /** Handles a key missing from every translation source. */
6
+ export declare abstract class MissingTranslationHandler {
7
+ abstract handle(params: MissingTranslationHandlerParams): StrictTranslation | Observable<StrictTranslation> | undefined;
8
+ }
9
+ /** Returns the key itself, ngx-translate's default. */
10
+ export declare class DefaultMissingTranslationHandler implements MissingTranslationHandler {
11
+ handle(params: MissingTranslationHandlerParams): string;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<DefaultMissingTranslationHandler, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<DefaultMissingTranslationHandler>;
14
+ }
15
+ /** Compiles runtime translations registered through `setTranslation()`. */
16
+ export declare abstract class TranslateCompiler {
17
+ abstract compile(value: string, lang: string): InterpolatableTranslation;
18
+ abstract compileTranslations(translations: TranslationObject, lang: string): InterpolatableTranslationObject;
19
+ }
20
+ export declare class TranslateNoOpCompiler extends TranslateCompiler {
21
+ compile(value: string, _lang: string): string;
22
+ compileTranslations(translations: TranslationObject, _lang: string): InterpolatableTranslationObject;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslateNoOpCompiler, never>;
24
+ static ɵprov: i0.ɵɵInjectableDeclaration<TranslateNoOpCompiler>;
25
+ }
26
+ /**
27
+ * Loads runtime translations for a language. Intlayer dictionaries need no
28
+ * loader; one is only called for catalogs kept outside intlayer.
29
+ */
30
+ export declare abstract class TranslateLoader {
31
+ abstract getTranslation(lang: string): Observable<TranslationObject>;
32
+ }
33
+ export declare class TranslateNoOpLoader extends TranslateLoader {
34
+ getTranslation(_lang: string): Observable<TranslationObject>;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslateNoOpLoader, never>;
36
+ static ɵprov: i0.ɵɵInjectableDeclaration<TranslateNoOpLoader>;
37
+ }
38
+ /** Interpolates parameters into a translation. */
39
+ export declare abstract class TranslateParser {
40
+ abstract interpolate(expression: InterpolatableTranslation, params?: InterpolationParameters): string | undefined;
41
+ }
42
+ /** `{{ name }}` / `{{ user.name }}` interpolation, like ngx-translate. */
43
+ export declare class TranslateDefaultParser extends TranslateParser {
44
+ templateMatcher: RegExp;
45
+ interpolate(expression: InterpolatableTranslation, params?: InterpolationParameters): string | undefined;
46
+ protected interpolateString(expression: string, params?: InterpolationParameters): string;
47
+ protected formatValue(value: unknown): string | undefined;
48
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslateDefaultParser, never>;
49
+ static ɵprov: i0.ɵɵInjectableDeclaration<TranslateDefaultParser>;
50
+ }
51
+ //#endregion
52
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","names":[],"sources":["../../src/handlers.ts"],"mappings":";;;;;8BAwBsB;WACX,OACP,QAAQ,kCACP,oBAAoB,WAAW;;;qBAIvB,4CACA;EAEX,OAAO,QAAQ;SAIR,MAAM,GAAG,qBACd;SAUK,OAAO,GAAG,wBAAwB;;;8BAUrB;WACX,QAAQ,eAAe,eAAe;WACtC,oBACP,cAAc,mBACd,eACC;;qBAGQ,8BAA8B;EACzC,QAAQ,eAAe;EAIvB,oBACE,cAAc,mBACd,gBACC;SAII,MAAM,GAAG,qBAAqB;SAS9B,OAAO,GAAG,wBAAwB;;;;;;8BAarB;WACX,eAAe,eAAe,WAAW;;qBAGvC,4BAA4B;EACvC,eAAe,gBAAgB,WAAW;SAInC,MAAM,GAAG,qBAAqB;SAS9B,OAAO,GAAG,wBAAwB;;;8BAUrB;WACX,YACP,YAAY,2BACZ,SAAS;;;qBAKA,+BAA+B;EAC1C,iBAAe;EAEf,YACE,YAAY,2BACZ,SAAS;YAWD,kBACR,oBACA,SAAS;YAaD,YAAY;SAWf,MAAM,GAAG,qBAAqB;SAS9B,OAAO,GAAG,wBAAwB"}
@@ -0,0 +1,11 @@
1
+ import { ChildTranslateServiceConfig, DeepReadonly, DefaultLangChangeEvent, FallbackLangChangeEvent, InterpolatableTranslation, InterpolatableTranslationObject, InterpolateFunction, InterpolationParameters, LangChangeEvent, Language, MissingTranslationHandlerParams, RootTranslateServiceConfig, StrictTranslation, TranslateProvider, TranslateProviders, TranslateServiceConfig, Translation, TranslationChangeEvent, TranslationObject } from "./types.js";
2
+ import { DefaultMissingTranslationHandler, MissingTranslationHandler, TranslateCompiler, TranslateDefaultParser, TranslateLoader, TranslateNoOpCompiler, TranslateNoOpLoader, TranslateParser } from "./handlers.js";
3
+ import { provideChildTranslateService, provideMissingTranslationHandler, provideTranslateCompiler, provideTranslateLoader, provideTranslateParser, provideTranslateService } from "./providers.js";
4
+ import { _, translate } from "./standalone.js";
5
+ import { TranslateBlockContext, TranslateBlockDirective } from "./translateBlockDirective.js";
6
+ import { TranslateDirective } from "./translateDirective.js";
7
+ import { TranslatePipe } from "./translatePipe.js";
8
+ import { TranslateStore } from "./translateStore.js";
9
+ import { ITranslateService, TRANSLATE_SERVICE_CONFIG, TranslateService } from "./translateService.js";
10
+ import { equals, getValue, insertValue, isArray, isDefined, isDefinedAndNotNull, isDict, isFunction, isObject, isString, mergeDeep } from "./util.js";
11
+ export { type ChildTranslateServiceConfig, type DeepReadonly, type DefaultLangChangeEvent, DefaultMissingTranslationHandler, type FallbackLangChangeEvent, ITranslateService, type InterpolatableTranslation, type InterpolatableTranslationObject, type InterpolateFunction, type InterpolationParameters, type LangChangeEvent, type Language, MissingTranslationHandler, type MissingTranslationHandlerParams, type RootTranslateServiceConfig, type StrictTranslation, TRANSLATE_SERVICE_CONFIG, TranslateBlockContext, TranslateBlockDirective, TranslateCompiler, TranslateDefaultParser, TranslateDirective, TranslateLoader, TranslateNoOpCompiler, TranslateNoOpLoader, TranslateParser, TranslatePipe, type TranslateProvider, type TranslateProviders, TranslateService, type TranslateServiceConfig, TranslateStore, type Translation, type TranslationChangeEvent, type TranslationObject, _, equals, getValue, insertValue, isArray, isDefined, isDefinedAndNotNull, isDict, isFunction, isObject, isString, mergeDeep, provideChildTranslateService, provideMissingTranslationHandler, provideTranslateCompiler, provideTranslateLoader, provideTranslateParser, provideTranslateService, translate };
@@ -0,0 +1,18 @@
1
+ import * as i0 from "@angular/core";
2
+ //#region src/partialDeclarations.d.ts
3
+ /**
4
+ * Argument types of Angular's partial-declaration functions.
5
+ *
6
+ * The public facade types omit `minVersion`, a field only the linker reads,
7
+ * so each declaration literal is cast to its facade widened with it. The cast
8
+ * vanishes at compile time: the linker still sees a plain object literal.
9
+ */
10
+ type WithMinVersion<T> = T & {
11
+ minVersion: string;
12
+ };
13
+ export type FactoryDeclaration = WithMinVersion<Parameters<typeof i0.ɵɵngDeclareFactory>[0]>;
14
+ export type InjectableDeclaration = WithMinVersion<Parameters<typeof i0.ɵɵngDeclareInjectable>[0]>;
15
+ export type PipeDeclaration = WithMinVersion<Parameters<typeof i0.ɵɵngDeclarePipe>[0]>;
16
+ export type DirectiveDeclaration = WithMinVersion<Parameters<typeof i0.ɵɵngDeclareDirective>[0]>;
17
+ //#endregion
18
+ //# sourceMappingURL=partialDeclarations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partialDeclarations.d.ts","names":[],"sources":["../../src/partialDeclarations.ts"],"mappings":";;;;;;;;;KASK,eAAe,KAAK;EAAM;;YAEnB,qBAAqB,eAC/B,kBAAkB,GAAG;YAEX,wBAAwB,eAClC,kBAAkB,GAAG;YAEX,kBAAkB,eAC5B,kBAAkB,GAAG;YAEX,uBAAuB,eACjC,kBAAkB,GAAG"}
@@ -0,0 +1,25 @@
1
+ import { CallerDescriptor } from "@intlayer/config/callers";
2
+ import { PluginOption } from "vite";
3
+ import { intlayer } from "vite-intlayer";
4
+ //#region src/plugin/index.d.ts
5
+ /**
6
+ * ngx-translate callers as the field-usage analysis must see them.
7
+ *
8
+ * The `| translate` pipe and `[translate]` directive read keys from Angular
9
+ * templates that no JS analyser parses, so a `translate('home.title')` call
10
+ * in a component class cannot prove which other fields of `home` its
11
+ * template needs. Every dictionary reached from ngx-translate is therefore
12
+ * kept whole (`'all'`); dictionaries only read through `useIntlayer` still
13
+ * get pruned.
14
+ */
15
+ export declare const NGX_TRANSLATE_BUILD_CALLERS: CallerDescriptor[];
16
+ /**
17
+ * Vite plugin for Angular apps built with Vite (Analog): wraps vite-intlayer
18
+ * and aliases `@ngx-translate/core` to `@intlayer/ngx-translate`.
19
+ *
20
+ * Angular CLI apps use `@intlayer/ngx-translate/esbuild` instead.
21
+ */
22
+ export declare const ngxTranslateVitePlugin: (options?: Parameters<typeof intlayer>[0]) => PluginOption[];
23
+ //#endregion
24
+ export { ngxTranslateVitePlugin as default };
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/plugin/index.ts"],"mappings":";;;;;;;;;;;;;;qBAsBa,6BAA6B;;;;;;;qBAY7B,yBAAsB,UACvB,kBAAkB,iBAC3B"}
@@ -0,0 +1,22 @@
1
+ import { ChildTranslateServiceConfig, RootTranslateServiceConfig } from "./types.js";
2
+ import { MissingTranslationHandler, TranslateCompiler, TranslateLoader, TranslateParser } from "./handlers.js";
3
+ import { Provider, Type } from "@angular/core";
4
+ //#region src/providers.d.ts
5
+ /** A class to instantiate, or a factory returning the instance. */
6
+ type ClassOrFactory<T> = Type<T> | (() => T);
7
+ export declare const provideTranslateLoader: (loader: ClassOrFactory<TranslateLoader>) => Provider;
8
+ export declare const provideTranslateCompiler: (compiler: ClassOrFactory<TranslateCompiler>) => Provider;
9
+ export declare const provideTranslateParser: (parser: ClassOrFactory<TranslateParser>) => Provider;
10
+ export declare const provideMissingTranslationHandler: (handler: ClassOrFactory<MissingTranslationHandler>) => Provider;
11
+ /**
12
+ * Root providers: `bootstrapApplication(App, { providers: [
13
+ * provideIntlayer(), provideTranslateService({ fallbackLang: 'en' })] })`.
14
+ */
15
+ export declare const provideTranslateService: (config?: RootTranslateServiceConfig) => Provider[];
16
+ /**
17
+ * Providers for a lazy route or component subtree. Every service shares
18
+ * intlayer's locale, so a child service only scopes runtime translations.
19
+ */
20
+ export declare const provideChildTranslateService: (config?: ChildTranslateServiceConfig) => Provider[];
21
+ //#endregion
22
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","names":[],"sources":["../../src/providers.ts"],"mappings":";;;;;KAoBK,eAAe,KAAK,KAAK,YAAY;qBAe7B,yBAAsB,QACzB,eAAe,qBACtB;qBAEU,2BAAwB,UACzB,eAAe,uBACxB;qBAEU,yBAAsB,QACzB,eAAe,qBACtB;qBAEU,mCAAgC,SAClC,eAAe,+BACvB;;;;;qBA0CU,0BAAuB,SAC1B,+BACP;;;;;qBAMU,+BAA4B,SAC/B,gCACP"}
@@ -0,0 +1,13 @@
1
+ //#region src/registryLookup.d.ts
2
+ /**
3
+ * Looks up an ngx-translate key across the intlayer dictionaries:
4
+ *
5
+ * 1. `'home.title'` → dictionary `home`, field `title`;
6
+ * 2. `'home'` → the whole `home` dictionary;
7
+ * 3. the full key in every dictionary — a single migrated `en.json`.
8
+ *
9
+ * @returns The interpreted node (string, object or callable), or `undefined`.
10
+ */
11
+ export declare const lookupRegistryTranslation: (key: string, locale: string) => unknown;
12
+ //#endregion
13
+ //# sourceMappingURL=registryLookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registryLookup.d.ts","names":[],"sources":["../../src/registryLookup.ts"],"mappings":";;;;;;;;;;qBAuCa,4BAAyB,aACzB"}
@@ -0,0 +1,24 @@
1
+ import { InterpolationParameters, Language, Translation } from "./types.js";
2
+ import { Signal } from "@angular/core";
3
+ //#region src/standalone.d.ts
4
+ /**
5
+ * Signal of a translation, updated on language change. Must run in an
6
+ * injection context.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * readonly title = translate('home.title');
11
+ * ```
12
+ */
13
+ export declare const translate: (key: string | string[] | (() => string | string[]), params?: InterpolationParameters | (() => InterpolationParameters | undefined), lang?: Language | (() => Language | undefined)) => Signal<Translation>;
14
+ /**
15
+ * Marks a key for extraction tools; returns it unchanged.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * const titleKey = _('home.title');
20
+ * ```
21
+ */
22
+ export declare const _: <T extends string | string[]>(key: T) => T;
23
+ //#endregion
24
+ //# sourceMappingURL=standalone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone.d.ts","names":[],"sources":["../../src/standalone.ts"],"mappings":";;;;;;;;;;;;qBAaa,YAAS,oDAC8B,SAE9C,iCACO,sCAAoC,OACxC,kBAAkB,0BACxB,OAAO;;;;;;;;;qBAUG,IAAK,6BAA2B,KAAO,MAAI"}
@@ -0,0 +1,23 @@
1
+ import { InterpolationParameters, Translation } from "./types.js";
2
+ import * as i0 from "@angular/core";
3
+ //#region src/translateBlockDirective.d.ts
4
+ /** Template context of `*translateBlock="let t"`. */
5
+ export declare class TranslateBlockContext {
6
+ $implicit: (key: string, params?: InterpolationParameters) => Translation;
7
+ constructor($implicit: (key: string, params?: InterpolationParameters) => Translation);
8
+ }
9
+ /**
10
+ * `<div *translateBlock="let t">{{ t('home.title') }}</div>` — exposes
11
+ * `instant` to a template block.
12
+ */
13
+ export declare class TranslateBlockDirective {
14
+ private readonly templateRef;
15
+ private readonly viewContainer;
16
+ private readonly translateService;
17
+ ngOnInit(): void;
18
+ static ngTemplateContextGuard(_directive: TranslateBlockDirective, _context: unknown): _context is TranslateBlockContext;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslateBlockDirective, never>;
20
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TranslateBlockDirective, '[translateBlock]', never, {}, {}, never, never, true, never>;
21
+ }
22
+ //#endregion
23
+ //# sourceMappingURL=translateBlockDirective.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translateBlockDirective.d.ts","names":[],"sources":["../../src/translateBlockDirective.ts"],"mappings":";;;;qBAUa;EAEF,YACL,aACA,SAAS,4BACN;EAJP,YACS,YACL,aACA,SAAS,4BACN;;;;;;qBAQI;mBACM;mBAEA;mBACA;EAEjB;SASO,uBACL,YAAY,yBACZ,oBACC,YAAY;SAIR,MAAM,GAAG,qBAAqB;SAS9B,MAAM,GAAG,uBACd"}
@@ -0,0 +1,33 @@
1
+ import { InterpolationParameters } from "./types.js";
2
+ import * as i0 from "@angular/core";
3
+ //#region src/translateDirective.d.ts
4
+ /**
5
+ * `<p [translate]="'home.title'" [translateParams]="{ name }"></p>` or
6
+ * `<p translate>home.title</p>` — writes the translation as text content.
7
+ */
8
+ export declare class TranslateDirective {
9
+ private readonly translateService;
10
+ private readonly element;
11
+ private readonly injector;
12
+ private readonly keySignal;
13
+ private readonly paramsSignal;
14
+ private translation;
15
+ set translate(key: string);
16
+ set translateParams(params: InterpolationParameters);
17
+ /** Content-key form: the element's own text is the key. */
18
+ ngAfterViewInit(): void;
19
+ private ensureRendering;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslateDirective, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TranslateDirective, '[translate],[ngx-translate]', never, {
22
+ translate: {
23
+ alias: 'translate';
24
+ required: false;
25
+ };
26
+ translateParams: {
27
+ alias: 'translateParams';
28
+ required: false;
29
+ };
30
+ }, {}, never, never, true, never>;
31
+ }
32
+ //#endregion
33
+ //# sourceMappingURL=translateDirective.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translateDirective.d.ts","names":[],"sources":["../../src/translateDirective.ts"],"mappings":";;;;;;;qBAsBa;mBACM;mBACA;mBACA;mBAEA;mBAEA;UAGT;MAEJ,UAAU;MAMV,gBAAgB,QAAQ;;EAK5B;UAUQ;SAqBD,MAAM,GAAG,qBAAqB;SAS9B,MAAM,GAAG,uBACd;IAIE;MAAa;MAAoB;;IACjC;MAAmB;MAA0B"}
@@ -0,0 +1,21 @@
1
+ import { Translation } from "./types.js";
2
+ import * as i0 from "@angular/core";
3
+ import { PipeTransform } from "@angular/core";
4
+ //#region src/translatePipe.d.ts
5
+ /**
6
+ * `{{ 'home.title' | translate: { name } }}` — impure pipe reading a
7
+ * translation signal, so the view refreshes on language change.
8
+ */
9
+ export declare class TranslatePipe implements PipeTransform {
10
+ private readonly translateService;
11
+ private cachedTranslation;
12
+ private lastKey;
13
+ private lastParams;
14
+ transform(query: string | undefined | null, ...args: unknown[]): Translation | undefined | null;
15
+ /** Accepts an object, or an object literal written as a template string. */
16
+ private parseArgs;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslatePipe, never>;
18
+ static ɵpipe: i0.ɵɵPipeDeclaration<TranslatePipe, 'translate', true>;
19
+ }
20
+ //#endregion
21
+ //# sourceMappingURL=translatePipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translatePipe.d.ts","names":[],"sources":["../../src/translatePipe.ts"],"mappings":";;;;;;;;qBAca,yBAAyB;mBACnB;UACT;UACA;UACA;EAER,UACE,qCACG,kBACF;;UAkBK;SAmBD,MAAM,GAAG,qBAAqB;SAS9B,OAAO,GAAG,kBAAkB"}
@@ -0,0 +1,106 @@
1
+ import { FallbackLangChangeEvent, InterpolatableTranslationObject, InterpolationParameters, LangChangeEvent, Language, RootTranslateServiceConfig, StrictTranslation, Translation, TranslationChangeEvent, TranslationObject } from "./types.js";
2
+ import { MissingTranslationHandler, TranslateCompiler, TranslateLoader, TranslateParser } from "./handlers.js";
3
+ import { TranslateStore } from "./translateStore.js";
4
+ import * as i0 from "@angular/core";
5
+ import { InjectionToken, Signal } from "@angular/core";
6
+ import { Observable } from "rxjs";
7
+ //#region src/translateService.d.ts
8
+ /** Resolved `provideTranslateService()` options. */
9
+ export declare const TRANSLATE_SERVICE_CONFIG: InjectionToken<RootTranslateServiceConfig>;
10
+ /** A key, a key list, or a reactive source of either. */
11
+ type KeyInput = string | string[] | (() => string | string[]);
12
+ /** Abstract API of {@link TranslateService}, kept for type compatibility. */
13
+ export declare abstract class ITranslateService {}
14
+ /**
15
+ * ngx-translate's `TranslateService` over intlayer.
16
+ *
17
+ * - The active language is angular-intlayer's locale signal, so `use()`,
18
+ * `useLocale().setLocale()` and `useIntlayer()` share one locale.
19
+ * - Keys resolve against runtime translations (`setTranslation()`, a
20
+ * configured loader) first, then the intlayer dictionaries — the first key
21
+ * segment names the dictionary (`'home.title'` → `home`).
22
+ * - Everything is synchronous: dictionaries are bundled, so `get()` and
23
+ * `use()` emit immediately.
24
+ */
25
+ export declare class TranslateService extends ITranslateService {
26
+ private readonly intlayerClient;
27
+ private readonly config;
28
+ readonly store: TranslateStore;
29
+ readonly currentLoader: TranslateLoader;
30
+ readonly compiler: TranslateCompiler;
31
+ readonly parser: TranslateParser;
32
+ readonly missingTranslationHandler: MissingTranslationHandler;
33
+ private readonly fallbackLangSignal;
34
+ private readonly isLoadingSignal;
35
+ private readonly langChangeSubject;
36
+ private readonly fallbackLangChangeSubject;
37
+ /** The active language, shared with angular-intlayer. */
38
+ readonly currentLang: Signal<Language>;
39
+ readonly fallbackLang: Signal<Language | null>;
40
+ readonly isLoading: Signal<boolean>;
41
+ readonly onLangChange: Observable<LangChangeEvent>;
42
+ readonly onFallbackLangChange: Observable<FallbackLangChangeEvent>;
43
+ /** @deprecated Use `onFallbackLangChange`. */
44
+ readonly onDefaultLangChange: Observable<FallbackLangChangeEvent>;
45
+ readonly onTranslationChange: Observable<TranslationChangeEvent>;
46
+ /** Emits whenever displayed translations may have changed. */
47
+ readonly onTranslationRefresh: Observable<unknown>;
48
+ constructor();
49
+ getCurrentLang(): Language;
50
+ getFallbackLang(): Language | null;
51
+ /** Sets the language whose translations fill the gaps of the active one. */
52
+ setFallbackLang(lang: Language): Observable<InterpolatableTranslationObject>;
53
+ /** @deprecated Use `setFallbackLang`. */
54
+ setDefaultLang(lang: Language): Observable<InterpolatableTranslationObject>;
55
+ /** @deprecated Use `getFallbackLang`. */
56
+ getDefaultLang(): Language | null;
57
+ /** Activates a language, through angular-intlayer's locale. */
58
+ use(lang: Language): Observable<InterpolatableTranslationObject>;
59
+ /**
60
+ * Runs a configured loader once per language. Intlayer dictionaries need
61
+ * none, so the default no-op loader short-circuits.
62
+ */
63
+ private loadTranslations;
64
+ reloadLang(lang: Language): Observable<InterpolatableTranslationObject>;
65
+ resetLang(lang: Language): void;
66
+ /** Languages declared in intlayer plus any registered at runtime. */
67
+ getLangs(): readonly Language[];
68
+ /** Kept for API parity: the intlayer configuration owns the locale list. */
69
+ addLangs(_languages: Language[]): void;
70
+ getTranslations(lang: Language): InterpolatableTranslationObject;
71
+ getTranslation(lang: Language): Observable<InterpolatableTranslationObject>;
72
+ /** Registers runtime translations, compiled by the configured compiler. */
73
+ setTranslation(lang: Language, translations: TranslationObject, shouldMerge?: boolean): void;
74
+ /** Registers translations that are already compiled. */
75
+ setCompiledTranslation(lang: Language, translations: InterpolatableTranslationObject, shouldMerge?: boolean): void;
76
+ /** Sets one runtime translation. */
77
+ set(key: string, translation: string | TranslationObject, lang?: Language): void;
78
+ /**
79
+ * Interpolates a raw translation, recursing into subtrees. Strings go
80
+ * through the configured parser (`{{ name }}`); functions are either
81
+ * compiled runtime translations (parser) or intlayer nodes (resolver).
82
+ */
83
+ private interpolate;
84
+ /** Interpolated translation of `key` in `lang`, or `undefined`. */
85
+ private resolveKey;
86
+ /** Translation of a key, or of each key of a list. */
87
+ getParsedResult(key: string | string[], interpolateParams?: InterpolationParameters, lang?: Language): StrictTranslation | Observable<StrictTranslation>;
88
+ /** Synchronous translation. Reads signals, so it is reactive in templates. */
89
+ instant(key: string | string[], interpolateParams?: InterpolationParameters, lang?: Language): Translation;
90
+ /** Emits the translation once. */
91
+ get(key: string | string[], interpolateParams?: InterpolationParameters, lang?: Language): Observable<Translation>;
92
+ /** Emits the translation now and after every language change. */
93
+ stream(key: string | string[], interpolateParams?: InterpolationParameters, lang?: Language): Observable<Translation>;
94
+ /** Signal of the translation, updated on language or translation change. */
95
+ translate(key: KeyInput, params?: InterpolationParameters | (() => InterpolationParameters | undefined), lang?: Language | (() => Language | undefined)): Signal<Translation>;
96
+ getBrowserLang(): Language | undefined;
97
+ getBrowserCultureLang(): Language | undefined;
98
+ /** The browser's language without region, e.g. `"de"`. */
99
+ static getBrowserLang(): Language | undefined;
100
+ /** The browser's language with region, e.g. `"de-DE"`. */
101
+ static getBrowserCultureLang(): Language | undefined;
102
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslateService, never>;
103
+ static ɵprov: i0.ɵɵInjectableDeclaration<TranslateService>;
104
+ }
105
+ //#endregion
106
+ //# sourceMappingURL=translateService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translateService.d.ts","names":[],"sources":["../../src/translateService.ts"],"mappings":";;;;;;;;qBAmDa,0BAAwB,eAAA;;KAIhC;;8BAOiB;;;;;;;;;;;;qBAaT,yBAAyB;mBACnB;mBACA;WAIR,OAAK;WACL,eAAa;WACb,UAAQ;WACR,QAAM;WACN,2BAAyB;mBAEjB;mBACA;mBACA;mBACA;;WAIR,aAAa,OAAO;WAGpB,cAAc,OAAO;WAErB,WAAW;WAEX,cAAc,WAAW;WAEzB,sBAAsB,WAAW;;WAGjC,qBAAmB,WAAA;WACnB,qBAAqB,WAAW;;WAGhC,sBAAsB;EAM/B;EASA,kBAAkB;EAIlB,mBAAmB;;EAKnB,gBAAgB,MAAM,WAAW,WAAW;;EAU5C,eAAe,MAAM,WAAW,WAAW;;EAK3C,kBAAkB;;EAKlB,IAAI,MAAM,WAAW,WAAW;;;;;UAkBxB;EAqBR,WAAW,MAAM,WAAW,WAAW;EAKvC,UAAU,MAAM;;EAKhB,qBAAqB;;EAUrB,SAAS,YAAY;EAErB,gBAAgB,MAAM,WAAW;EAIjC,eAAe,MAAM,WAAW,WAAW;;EAK3C,eACE,MAAM,UACN,cAAc,mBACd;;EAUF,uBACE,MAAM,UACN,cAAc,iCACd;;EAMF,IACE,aACA,sBAAsB,mBACtB,OAAM;;;;;;UAoBA;;UA8BA;;EA6BR,gBACE,wBACA,oBAAoB,yBACpB,OAAO,WACN,oBAAoB,WAAW;;EAkClC,QACE,wBACA,oBAAoB,yBACpB,OAAO,WACN;;EAWH,IACE,wBACA,oBAAoB,yBACpB,OAAO,WACN,WAAW;;EAKd,OACE,wBACA,oBAAoB,yBACpB,OAAO,WACN,WAAW;;EAQd,UACE,KAAK,UACL,SACI,iCACO,sCACX,OAAO,kBAAkB,wBACxB,OAAO;EAMV,kBAAkB;EAIlB,yBAAyB;;SAKlB,kBAAkB;;SAKlB,yBAAyB;SAKzB,MAAM,GAAG,qBAAqB;SAS9B,OAAO,GAAG,wBAAwB"}
@@ -0,0 +1,21 @@
1
+ import { InterpolatableTranslationObject, LangChangeEvent, Language } from "./types.js";
2
+ import * as i0 from "@angular/core";
3
+ //#region src/translateStore.d.ts
4
+ /**
5
+ * Runtime translations registered through `setTranslation()` / a loader.
6
+ * Intlayer dictionaries are resolved separately and never copied here.
7
+ */
8
+ export declare class TranslateStore {
9
+ private readonly translationsSignal;
10
+ readonly translations: i0.Signal<Record<string, InterpolatableTranslationObject>>;
11
+ private readonly translationChangeSubject;
12
+ readonly translationChange$: import("rxjs").Observable<LangChangeEvent>;
13
+ getTranslations(language: Language): InterpolatableTranslationObject;
14
+ setTranslations(language: Language, translations: InterpolatableTranslationObject, shouldMerge: boolean): void;
15
+ deleteTranslations(language: Language): void;
16
+ getTranslationValue(language: Language, key: string): unknown;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslateStore, never>;
18
+ static ɵprov: i0.ɵɵInjectableDeclaration<TranslateStore>;
19
+ }
20
+ //#endregion
21
+ //# sourceMappingURL=translateStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translateStore.d.ts","names":[],"sources":["../../src/translateStore.ts"],"mappings":";;;;;;;qBAkBa;mBACM;WAGR,cAAY,GAAA,OAAA,eAAA;mBAEJ;WAER,mCAAkB,WAJN;EAMrB,gBAAgB,UAAU,WAAW;EAIrC,gBACE,UAAU,UACV,cAAc,iCACd;EAeF,mBAAmB,UAAU;EAI7B,oBAAoB,UAAU,UAAU;SAIjC,MAAM,GAAG,qBAAqB;SAS9B,OAAO,GAAG,wBAAwB"}
@@ -0,0 +1,56 @@
1
+ import { Provider } from "@angular/core";
2
+ //#region src/types.d.ts
3
+ export type Language = string;
4
+ /** A compiled translation: a string, or a function of the parameters. */
5
+ export type InterpolateFunction = (params?: InterpolationParameters) => string;
6
+ export type InterpolationParameters = Record<string, unknown>;
7
+ export type TranslationObject = {
8
+ [key: string]: Translation;
9
+ };
10
+ export type Translation = string | number | boolean | null | TranslationObject | Translation[];
11
+ export type StrictTranslation = Exclude<Translation, null>;
12
+ export type InterpolatableTranslation = string | InterpolateFunction | InterpolatableTranslationObject | InterpolatableTranslation[];
13
+ export type InterpolatableTranslationObject = {
14
+ [key: string]: InterpolatableTranslation;
15
+ };
16
+ export type DeepReadonly<T> = T extends (infer R)[] ? ReadonlyArray<DeepReadonly<R>> : T extends ((...args: never[]) => unknown) ? T : T extends object ? { readonly [P in keyof T]: DeepReadonly<T[P]>; } : T;
17
+ export type LangChangeEvent = {
18
+ lang: Language;
19
+ translations: InterpolatableTranslationObject;
20
+ };
21
+ export type TranslationChangeEvent = LangChangeEvent;
22
+ export type FallbackLangChangeEvent = {
23
+ lang: Language;
24
+ translations: InterpolatableTranslationObject;
25
+ };
26
+ /** @deprecated Use {@link FallbackLangChangeEvent}. */
27
+ export type DefaultLangChangeEvent = FallbackLangChangeEvent;
28
+ export type MissingTranslationHandlerParams = {
29
+ key: string;
30
+ translateService: unknown;
31
+ interpolateParams?: InterpolationParameters;
32
+ };
33
+ export type TranslateProvider = Provider;
34
+ export type TranslateProviders = {
35
+ loader?: TranslateProvider;
36
+ compiler?: TranslateProvider;
37
+ parser?: TranslateProvider;
38
+ missingTranslationHandler?: TranslateProvider;
39
+ };
40
+ export type ChildTranslateServiceConfig = TranslateProviders & {
41
+ /** Kept for API parity: every service shares intlayer's locale. */
42
+ extend?: boolean;
43
+ };
44
+ export type RootTranslateServiceConfig = TranslateProviders & {
45
+ /** Language activated when the service is created. */
46
+ lang?: Language;
47
+ /** Language whose translations fill the gaps of the active one. */
48
+ fallbackLang?: Language;
49
+ /** @deprecated Use `fallbackLang`. */
50
+ defaultLanguage?: Language;
51
+ /** @deprecated Use `lang`. */
52
+ useDefaultLang?: boolean;
53
+ };
54
+ export type TranslateServiceConfig = RootTranslateServiceConfig;
55
+ //#endregion
56
+ //# sourceMappingURL=types.d.ts.map