I am using ngx-translate to translate my components. I am able to change website language if the user clicks on language link inside the same component.
In angular routing module
const routes: Routes = [
{path: '', redirectTo: "fr/home", pathMatch: "full"},
{path: ':languageCode/home', component: HomeComponent},
{path: ':languageCode/employees', component: EmployeesComponent},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
Inside each component i have a link to change to other language for the same component.
for example this is my home component template html
<h1>{{'home page' | translate}}</h1>
<p *ngIf="lang === 'fr'">
<button class="custom-button" (click)="navigate('en')">English</button>
</p>
<p *ngIf="lang === 'en'">
<button class="custom-button" (click)="navigate('fr')">French</button>
</p>
home component ts
export class HomeComponent implements OnInit {
lang;
constructor(private translateService: TranslateService, private router: Router, private route: ActivatedRoute) {
this.lang = this.route.snapshot.paramMap.get('languageCode');
console.log(this.lang);
this.translateService.setDefaultLang('fr');
this.translateService.use(this.lang);
}
ngOnInit(): void {
this.route.params.subscribe(params => {
this.lang = params['languageCode'];
console.log(this.lang)
this.translateService.use(this.lang);
});
}
navigate(languageCode: string) {
this.router.navigate([languageCode, "home"]);
}
}
I have to make this for each component (which is not good), So i want to put these language link in navbar component
<p *ngIf="lang === 'fr'">
<button class="custom-button" (click)="navigate('en')">English</button>
</p>
<p *ngIf="lang === 'en'">
<button class="custom-button" (click)="navigate('fr')">French</button>
</p>
but the problems are:
1- i can't get the activated route to get the languageCode inside navbar component.
2- how can i know the component name which i should navigate the user to.
app.component.html
<app-navbar></app-navbar>
<router-outlet></router-outlet>