https://www.npmjs.com/package/@ngx-translate/core https://www.npmjs.com/package/@ngx-translate/http-loader I installed translate package from here and added ngx-translate module with its forRoot , translate service inside component ts (app & header) but it isn’t working also
Header component
JavaScript
x
50
50
1
<header>
2
<nav class="navbar navbar-expand-lg navbar-light" id="header">
3
<div class="container">
4
5
<a class="navbar-brand" href="#">
6
<img src=".." alt="logo">
7
</a>
8
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
9
<span class="navbar-toggler-icon"></span>
10
</button>
11
<div class="collapse navbar-collapse" id="navbarSupportedContent">
12
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
13
<li class="nav-item" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{ exact: true }">
14
15
<a [routerLink]="['home']" class="nav-link">Home</a>
16
17
</li>
18
19
<li class="nav-item dropdown" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{ exact: true }">
20
<a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
21
page 2
22
</a>
23
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
24
<li><a class="dropdown-item" [routerLink]="['page']">page</a></li>
25
</ul>
26
</li>
27
28
<li class="nav-item" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{ exact: true }">
29
<a class="nav-link" [routerLink]="['features']">Features</a>
30
</li>
31
32
<li class="nav-item" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{ exact: true }">
33
<a class="nav-link reserve-btn" [routerLink]="['reserve']">Reserve</a>
34
</li>
35
36
</ul>
37
38
</div>
39
<button (click)="translate.use('en')">
40
En
41
</button>
42
43
<button (click)="translate.use('ar')">
44
Ar
45
</button>
46
47
</div>
48
</nav>
49
</header>
50
Header.component.ts
JavaScript
1
24
24
1
import { DOCUMENT } from '@angular/common';
2
import { Component, HostListener, Inject, OnInit } from '@angular/core';
3
import { TranslateService } from '@ngx-translate/core';
4
5
@Component({
6
selector: 'app-header',
7
templateUrl: './header.component.html',
8
styleUrls: ['./header.component.scss'],
9
})
10
11
export class HeaderComponent implements OnInit {
12
// lang: string;
13
14
constructor(@Inject(DOCUMENT) private document: Document,public translate:TranslateService) {}
15
16
17
ngOnInit(): void {
18
19
// this.lang = localStorage.getItem('lang') || 'en';
20
}
21
22
23
}
24
app.module.ts
JavaScript
1
52
52
1
import { NgModule } from '@angular/core';
2
import { BrowserModule } from '@angular/platform-browser';
3
4
import { AppRoutingModule } from './app-routing.module';
5
import { AppComponent } from './app.component';
6
import { GeneralPagesModule } from './general-pages/general-pages.module';
7
import { RentalPageModule } from './rental-page/rental-page.module';
8
import { SharedModule } from './shared/shared.module';
9
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
10
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
11
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
12
13
import { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http';
14
15
export function HttpLoaderFactory(httpClient: HttpClient) {
16
return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json');
17
}
18
19
@NgModule({
20
declarations: [
21
AppComponent
22
],
23
imports: [
24
BrowserModule,
25
AppRoutingModule,
26
SharedModule,
27
GeneralPagesModule,
28
RentalPageModule,
29
BrowserAnimationsModule,
30
// TranslateModule,
31
HttpClientModule,
32
TranslateModule.forRoot({
33
defaultLanguage:'en',
34
loader: {
35
provide: TranslateLoader,
36
useFactory: createTranslateLoader,
37
deps: [HttpClient]
38
}
39
}),
40
],
41
providers: [
42
// { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },
43
44
],
45
bootstrap: [AppComponent]
46
})
47
export class AppModule { }
48
49
export function createTranslateLoader(http:HttpClient){
50
return new TranslateHttpLoader(http,'./assets/i18n/','.json')
51
}
52
I also tried same steps in app.component.ts
JavaScript
1
55
55
1
import { Component, Inject } from '@angular/core';
2
import * as AOS from 'aos';
3
import { DOCUMENT } from '@angular/common';
4
import { TranslateService } from '@ngx-translate/core';
5
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
6
import { filter} from 'rxjs/operators';
7
8
9
10
@Component({
11
selector: 'app-root',
12
templateUrl: './app.component.html',
13
styleUrls: ['./app.component.scss']
14
})
15
export class AppComponent {
16
ngOnInit(){
17
AOS.init({
18
duration: 1200,
19
});
20
}
21
22
23
// Inject document which is safe when used with server-side rendering
24
constructor(@Inject(DOCUMENT) private document: Document,public translate:TranslateService,
25
private router: Router, private route: ActivatedRoute) {
26
27
28
}
29
30
31
}
32
33
in home.compoent.html
34
35
{{"HOME" || translate}}
36
37
home.compoent.ts
38
39
import { Component, OnInit } from '@angular/core';
40
import { TranslateService } from '@ngx-translate/core';
41
42
@Component({
43
selector: 'app-home',
44
templateUrl: './home.component.html',
45
styleUrls: ['./home.component.scss']
46
})
47
export class HomeComponent implements OnInit {
48
49
constructor(public translate:TranslateService) { }
50
51
ngOnInit(): void {
52
}
53
54
}
55
Advertisement
Answer
The pipe syntax is {{ 'my-translation-key' | translate }}
– you have double || in your template, please change and try again.
Alternatively you can inject the translate service and use myTanslation = this.translateService.instant('my-translation-key')
if you need to set a variable in your controller.