All files / ngx-translate si-translate-ngxt.provider.ts

100% Statements 8/8
100% Branches 2/2
100% Functions 3/3
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52                              1x 1x                                   1x     17x     17x 16x   1x       1x        
/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
import { EnvironmentProviders, inject, Injector, Provider } from '@angular/core';
import { MissingTranslationHandler } from '@ngx-translate/core';
import { SiTranslateServiceBuilder } from '@siemens/element-translate-ng/translate';
 
import { SiMissingTranslateService } from './si-missing-translate.service';
import { SiTranslateNgxTServiceBuilder } from './si-translate-ngxt.service-builder';
 
/**
 * This provider configures Element to use ngx-translate for translating {@link TranslatableString}
 * It should only be imported once in an application's configuration (typically `app.config.ts`)
 */
export const provideNgxTranslateForElement = (): (EnvironmentProviders | Provider)[] => {
  return [{ provide: SiTranslateServiceBuilder, useClass: SiTranslateNgxTServiceBuilder }];
};
 
/**
 * This provider configures default translations for ngx-translate, applying Element's built-in translations.
 *
 * @example
 * ```ts
 *   providers: [
 *     provideTranslateService({
 *       ...,
 *       missingTranslationHandler: provideMissingTranslationHandlerForElement(),
 *     }),
 *     provideNgxTranslateForElement(),
 *     ...
 *   ]
 * ```
 */
export const provideMissingTranslationHandlerForElement = (
  missingTranslationHandlerProvider?: Provider
): Provider => {
  return {
    provide: MissingTranslationHandler,
    useFactory: () => {
      if (!missingTranslationHandlerProvider) {
        return new SiMissingTranslateService();
      }
      const injector = Injector.create({
        providers: [missingTranslationHandlerProvider],
        parent: inject(Injector)
      });
      return new SiMissingTranslateService(injector.get(MissingTranslationHandler));
    }
  };
};