import { ApplicationConfig, provideBrowserGlobalErrorListeners, importProvidersFrom, APP_INITIALIZER } from '@angular/core'; import { provideRouter } from '@angular/router'; import { provideHttpClient, withInterceptors } from '@angular/common/http'; import { TranslateModule, TranslateLoader, TranslateService } from '@ngx-translate/core'; import { TranslateHttpLoader, TRANSLATE_HTTP_LOADER_CONFIG } from '@ngx-translate/http-loader'; import { routes } from './app.routes'; import { authInterceptor } from './interceptors/auth.interceptor'; const SUPPORTED_LANGS = ['de', 'fr', 'it', 'en']; function preloadTranslations(translate: TranslateService): () => Promise { return () => { const stored = localStorage.getItem('app_language'); const browser = navigator.language?.split('-')[0].toLowerCase(); const lang = SUPPORTED_LANGS.includes(stored ?? '') ? stored! : SUPPORTED_LANGS.includes(browser) ? browser : 'de'; translate.setDefaultLang('de'); return translate.use(lang).toPromise(); }; } export const appConfig: ApplicationConfig = { providers: [ provideBrowserGlobalErrorListeners(), provideRouter(routes), provideHttpClient(withInterceptors([authInterceptor])), importProvidersFrom( TranslateModule.forRoot({ loader: { provide: TranslateLoader, useClass: TranslateHttpLoader, }, }) ), { provide: TRANSLATE_HTTP_LOADER_CONFIG, useValue: { prefix: '/assets/i18n/', suffix: '.json' } }, { provide: APP_INITIALIZER, useFactory: preloadTranslations, deps: [TranslateService], multi: true, }, ] };