app.module.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { APP_BASE_HREF, PlatformLocation } from '@angular/common';
  2. import { HttpClient } from '@angular/common/http';
  3. import { Inject, Injectable, NgModule } from '@angular/core';
  4. import { BrowserModule } from '@angular/platform-browser';
  5. import { RouterModule } from '@angular/router';
  6. import { TranslateCompiler, TranslateLoader, TranslateModule } from '@ngx-translate/core';
  7. import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
  8. import { AppComponent } from './app.component';
  9. import { routes } from './app.routes';
  10. import { getDefaultLanguage } from './common/utilities/get-default-language';
  11. import { CoreModule } from './core/core.module';
  12. import { CustomHttpTranslationLoader } from './core/providers/i18n/custom-http-loader';
  13. import { I18nService } from './core/providers/i18n/i18n.service';
  14. import { DataService } from './data/providers/data.service';
  15. @Injectable()
  16. export class BaseHrefHolder {
  17. constructor(@Inject(APP_BASE_HREF) public addBaseHref: string) {}
  18. }
  19. export function HttpLoaderFactory(http: HttpClient, location: PlatformLocation) {
  20. // Dynamically get the baseHref, which is configured in the angular.json file
  21. const baseHref = location.getBaseHrefFromDOM();
  22. return new CustomHttpTranslationLoader(http, baseHref + '/i18n-messages/');
  23. }
  24. @NgModule({
  25. declarations: [AppComponent],
  26. imports: [
  27. BrowserModule,
  28. RouterModule.forRoot(routes, { useHash: false }),
  29. TranslateModule.forRoot({
  30. loader: {
  31. provide: TranslateLoader,
  32. useFactory: HttpLoaderFactory,
  33. deps: [HttpClient, PlatformLocation],
  34. },
  35. compiler: { provide: TranslateCompiler, useClass: TranslateMessageFormatCompiler },
  36. }),
  37. CoreModule,
  38. ],
  39. providers: [BaseHrefHolder],
  40. bootstrap: [AppComponent],
  41. })
  42. export class AppModule {
  43. constructor(private dataService: DataService, private i18nService: I18nService) {
  44. this.dataService.client.setUiLanguage(getDefaultLanguage());
  45. this.i18nService.setDefaultLanguage(getDefaultLanguage());
  46. }
  47. }