J'ai téléchargé le paquet ngx-translate/core et j'ai suivi les instructions de documentation.
Je n'arrive pas à faire fonctionner la traduction. Les étapes que j'ai faites:
1] tout définir dans l'AppModule
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { TranslateModule } from '@ngx-translate/core';
import { HttpClientModule, HttpClient } from '@angular/common/http';
import { TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { routing } from './app.routes';
import { AppComponent } from './app.component';
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http);
}
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
routing,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
2] tout définir dans AppComponent
import { Component } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: []
})
export class AppComponent {
param = { value: 'world' };
constructor(private router: Router, translate: TranslateService) {
// this language will be used as a fallback when a translation isn't found in the current language
translate.setDefaultLang('en');
// the lang to use, if the lang isn't available, it will use the current loader to get them
translate.use('en');
}
}
3] le html
<div>{{ 'HELLO' | translate:param }}</div>
4] Et enfin créé dans les actifs/i18n/en.json
{
"HELLO": "Hi There"
}
Je continue de recevoir ces erreurs dans la capture d'écran ci-dessous
Qu'est-ce que je fais mal ?
Ce ngx-translate/core
utilise la dernière HttpClientModule
au lieu de l'ancienne HttpModule
modifiez ce qui suit dans le tableau des importations dans NgModule
import { HttpClientModule } from "@angular/common/http";
imports: [
BrowserModule,
FormsModule,
HttpClientModule, // the change from http module
routing,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
]
Voir Différence entre HTTP et HTTPClient dans angular 4? pour plus de détails.