Vaya chicos, ¿cómo están? Tengo un problema al usar ngx translate en este proyecto con Angular 9, no está obteniendo las traducciones que están en los Activos. ¿Me puede ayudar con esto? Aparentemente todo está bien.
appModule export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http); } TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient] } }) Assets/i18n/ { "english": "Angular 9 Example", "portuguese": "Welcome to our app!" } Home Component / imports : [ TranslateModule ] Home Component constructor (private translate: TranslateService) { } ngonit() { translate.setDefaultLang('en'); } <h2>{{ 'english' | translate }}</h2>La path de su archivo de traducción i18n debe incluirse dentro de HttpLoaderFactory para que se cargue correctamente antes de usarlo.
export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http, 'assets/i18n/', '.json'); } Luego, el idioma seleccionado debe definirse usando translate.use('en') :
ngOnInit() { this.translate.setDefaultLang('en'); this.translate.use('en'); } En caso de que esté utilizando un interceptor (p. ej., AuthInterceptor ), debe forzarlo para que maneje las solicitudes que comiencen solo con baseUrl e ignore las locales, como las siguientes:
intercept( request: HttpRequest<unknown>, next: HttpHandler ): Observable<HttpEvent<any>> { if (request.url.startsWith(environment.baseUrl)) { // Add your logic here // eg inject the token and next.handle the request again } else { return next.handle(request); } }