This guide demonstrates how to implement internationalization (i18n) with a language selection dropdown in Angular. Users can switch between multiple languages, and their selection will be persisted across sessions.
Use a dropdown button to allow users to select a language. The selected language will update dynamically using Angular’s service:
<div class="dropdown"> <button title="topbar-link" domixDropdownToggle [dropdownMenu]="dropdown2" type="button" class="topbar-link"> <img [src]="languageService.selectedLanguage?.flag" class="object-cover rounded-md size-6"> </button> <div #dropdown2 class="!fixed p-2 dropdown-menu" dropdown-position="left"> <ngx-simplebar class="max-h-[calc(100vh_-_100px)]"> <a *ngFor="let lang of languageService.languages" class="dropdown-item" (click)="setLanguage(lang.lang)"> <img [src]="lang.flag" class="object-cover rounded-md size-5"> <span>{{ lang.text }}</span> </a> </ngx-simplebar> </div> </div>
The service handles the logic for managing available languages, switching between them, and storing the user’s preference.
// src/app/services/language.service.ts import { Injectable } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; export interface LanguageData { text: string; flag: string; lang: string; } @Injectable({ providedIn: 'root' }) export class LanguageService { languages: LanguageData[] = [ { text: 'English', flag: 'assets/images/flag/us.svg', lang: 'en' }, { text: 'Spanish', flag: 'assets/images/flag/es.svg', lang: 'es' }, { text: 'French', flag: 'assets/images/flag/fr.svg', lang: 'fr' }, { text: 'German', flag: 'assets/images/flag/de.svg', lang: 'de' }, // add more languages ]; selectedLanguage: LanguageData | undefined = this.languages.find(lang => lang.lang === this.getStoredSettings()) || this.languages[0]; constructor(public translate: TranslateService) { ... } setLanguage(lang: string): void { ... } private getStoredSettings(): string { ... } private saveSettingsToLocalStorage(lang: string): void { ... } }
Use the `LanguageService` in your component to switch languages dynamically.
// src/app/index.component.ts import { Component } from '@angular/core'; import { LanguageService } from './services/language.service'; @Component({ selector: 'app-index', templateUrl: './index.component.html', }) export class IndexComponent { constructor(public languageService: LanguageService) {} setLanguage(lang: string): void { this.languageService.setLanguage(lang); } }
The selected language is saved to `localStorage` to persist user preferences across sessions.
Be the first to know about new updates and exclusive discounts. No spam, just great offers!
How about
With over 7 years of experienced team, we specialize in delivering custom projects for startups, blue-chip companies, and government agencies. We have successfully completed over 250+ projects, providing tailored solutions that meet the unique needs of each client.
Hire Us© Domiex Created & Crafted by SRBThemes.