Introduction
In this article, we are going to see how to translate by applying different languages in our application using npm package called ngx-tanslate. Ngx Translate provides a feature to translate from one langulage to another.
What is ngx-translate ?
NGX-Translate is an internationalization library for Angular. It lets you translate for your content in different languages and switch between them easily.
Prerequisites
- Basic knowledge of Angular
- Visual Studio Code must be installed
- Angular CLI must be installed
- Node JS must be installed
Step 1
Create a new Angular project using the following NPM command:
- ng new ngx-translate
Step 2
Now let's add the ngx-translate NPM packages. run the following command
- npm install @ngx-translate/core --save
- npm i ngx-translate-multi-http-loader
Step 3
Create a new Home Component using the following NPM command,
- ng g c home
Step 4
Give Home component selector in app.component.html
- <app-home></app-home>
Step 5
After then let's inmport our installed ngx-translate inside app.module.ts file
- import { BrowserModule } from '@angular/platform-browser';
- import { NgModule } from '@angular/core';
- import { FormsModule } from '@angular/forms';
- import { AppComponent } from './app.component';
- import { HttpClientModule, HttpClient } from '@angular/common/http';
- import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
- import { MultiTranslateHttpLoader } from "ngx-translate-multi-http-loader";
- import { HomeComponent } from './home/home.component';
- // AoT requires an exported function for factories
- export function HttpLoaderFactory(http: HttpClient) {
- return new MultiTranslateHttpLoader(http, [
- { prefix: "./assets/translate/menu/", suffix: ".json" },
- ]);
- }
- @NgModule({
- declarations: [
- AppComponent,
- HomeComponent
- ],
- imports: [
- BrowserModule,
- FormsModule,
- HttpClientModule,
- TranslateModule.forRoot({
- loader: {
- provide: TranslateLoader,
- useFactory: HttpLoaderFactory,
- deps: [HttpClient]
- }
- })
- ],
- providers: [],
- bootstrap: [AppComponent]
- })
- export class AppModule { }

Step 6
In this step I am creating a navbar and a selection box where some languages are there.
Open home component.html file and paste inside the below code.
home.component.html
- <nav class="navbar navbar-expand-lg navbar-light bg-light">
- <a class="navbar-brand" href="#">Ngx-Translate Example</a>
- <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
- aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
- <div class="collapse navbar-collapse" id="navbarSupportedContent">
- <ul class="navbar-nav mr-auto">
- <li class="nav-item active">
- <a class="nav-link">{{'Home' | translate}}</a>
- </li>
- <li class="nav-item">
- <a class="nav-link">{{'About Us' | translate}}</a>
- </li>
- <li class="nav-item">
- <a class="nav-link">{{'Contact Us' | translate}}</a>
- </li>
- </ul>
- <form class="form-inline my-2 my-lg-0">
- <select class="language-select" name="langChange" (ngModelChange)="languageChange($event)"
- [(ngModel)]="languageCode">
- <option class="language-select" *ngFor='let item of languages' [ngValue]='item.languageCode'>
- {{item.languageName}}</option>
- </select>
- </form>
- </div>
- </nav>
- <div style="text-align: center;">
- <p>
- {{'How to translate your application' | translate}}
- {{'The JSON translation file' | translate}}
- {{'Each language is stored in a separate .json file. Lets create the JSON file for the English translation:assets/i18n/en.json' | translate}}
- </p>
- <p>
- {{'Switching languages at runtime' | translate}}
- {{'To switch language you will first have to add a new JSON file for that language. Lets create a German translation for the demo: assets/i18n/de.json' | translate}}
- </p>
- </div>






Join the conversation! Your thoughts help the community grow.