59 lines
1.9 KiB
TypeScript
59 lines
1.9 KiB
TypeScript
import {ApplicationConfig, inject, provideAppInitializer, provideBrowserGlobalErrorListeners, provideZonelessChangeDetection} from '@angular/core';
|
|
import { provideRouter, withInMemoryScrolling } from '@angular/router';
|
|
|
|
import { routes } from './app.routes';
|
|
import {provideAnimations} from '@angular/platform-browser/animations';
|
|
import {provideHttpClient} from '@angular/common/http';
|
|
import {provideTranslateService} from '@ngx-translate/core';
|
|
import {provideTranslateHttpLoader} from '@ngx-translate/http-loader';
|
|
import {LocalStoreConstants} from './constants/LocalStoreConstants';
|
|
import {MatIconRegistry} from '@angular/material/icon';
|
|
import {DomSanitizer} from '@angular/platform-browser';
|
|
|
|
|
|
const INITIAL_LANG = getInitialLang();
|
|
|
|
export const appConfig: ApplicationConfig = {
|
|
providers: [
|
|
provideBrowserGlobalErrorListeners(),
|
|
provideZonelessChangeDetection(),
|
|
provideRouter(
|
|
routes,
|
|
withInMemoryScrolling({
|
|
scrollPositionRestoration: 'top',
|
|
anchorScrolling: 'enabled'
|
|
})),
|
|
provideAnimations(),
|
|
provideHttpClient(),
|
|
provideTranslateService({
|
|
lang: INITIAL_LANG,
|
|
fallbackLang: 'en',
|
|
loader: provideTranslateHttpLoader({
|
|
prefix: 'assets/i18n/',
|
|
suffix: '.json'
|
|
})
|
|
}),
|
|
provideAppInitializer(() => {
|
|
const iconRegistry = inject(MatIconRegistry);
|
|
const sanitizer = inject(DomSanitizer);
|
|
|
|
iconRegistry.addSvgIcon(
|
|
'github',
|
|
sanitizer.bypassSecurityTrustResourceUrl('assets/logos/github.svg')
|
|
);
|
|
|
|
iconRegistry.addSvgIcon(
|
|
'linkedin',
|
|
sanitizer.bypassSecurityTrustResourceUrl('assets/logos/linkedIn.svg')
|
|
);
|
|
}),
|
|
]
|
|
};
|
|
|
|
function getInitialLang(): string {
|
|
const saved = localStorage.getItem(LocalStoreConstants.LANGUAGE_KEY);
|
|
if (saved) return saved;
|
|
const nav = typeof navigator !== 'undefined' ? navigator.language?.toLowerCase() : 'en';
|
|
return nav?.startsWith('de') ? 'de' : 'en';
|
|
}
|