I have this in a service- I18nProviderService:
createTranslationProviders(response) {
  const locale = 'de';
  let translationProvider: any;
  translationProvider = [{
      provide: TRANSLATIONS,
      useValue: response
    },
    {
      provide: TRANSLATIONS_FORMAT,
      useValue: 'xlf'
    },
    {
      provide: LOCALE_ID,
      useValue: locale
    }
  ];
  return translationProvider;
}
getTranslationProvider() {
  this.getTranslationFile()
    .subscribe(
      (response: Response) => this.createTranslationProviders(response),
      (error) => console.log(error)
    );
}
and this in my app.module.ts
export function startupServiceFactory(myService: I18nProviderService): Function {
  return () => myService.getTranslationProvider();
}
@NgModule({
  declarations: [
  ],
  imports: [
    BrowserModule,
    ReactiveFormsModule,
    HttpModule,
    NguiAutoCompleteModule
  ],
  providers: [I18nProviderService,
    {
      provide: APP_INITIALIZER,
      useFactory: (myService: I18nProviderService) => () => myService.getTranslationProvider(),
      deps: [I18nProviderService],
      multi: true
    },
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}
Why is the TRANSLATIONS_FORMAT,  LOCALE_ID and TRANSLATIONS not mapped correctly. Means, if I trace the LOCALE_ID in my app.component.ts it has the default value.. not "de". I like to load my xlf translation file before app is init.