Skip to main content
The LanguageSwitchService is an Angular service that manages multi-language support in the application. It provides methods to initialize, get, and set the current language, with automatic persistence to localStorage.

Overview

This service is provided at the root level and integrates with @ngx-translate/core to handle language switching across the application. Source: src/app/core/language-switch/language-switch.service.ts

Static properties

availableLanguages

public static readonly availableLanguages: string[] = ['en', 'es'];
An array of language codes that are supported by the application.
availableLanguages
string[]
required
Array of available language codes. Default: ['en', 'es']

defaultLanguage

public static readonly defaultLanguage: string = LanguageSwitchService.availableLanguages[0];
The default language code used when no language is set or found in localStorage.
defaultLanguage
string
required
The default language code (first item from availableLanguages). Default: 'en'

Methods

initLanguageFromLocalStorage()

public initLanguageFromLocalStorage(): void
Initializes the application language from localStorage. Should be called during application startup. Behavior:
  • Reads the language key from localStorage
  • Validates that the stored language is in availableLanguages
  • Sets the language if valid
  • Does nothing if no valid language is found (uses default)
return
void
No return value

getCurrentLanguage()

public getCurrentLanguage(): string
Retrieves the currently active language code. Behavior:
  • Returns the current language from TranslateService if set and different from default
  • Otherwise returns the default language
return
string
The current language code (e.g., ‘en’, ‘es’)

setLanguage()

public setLanguage(languageId: string): void
Sets the application language and persists it to localStorage.
languageId
string
required
The language code to set (must be in availableLanguages)
Behavior:
  • Validates that languageId is in availableLanguages
  • Updates the TranslateService with the new language
  • Saves the language to localStorage under the language key
  • Does nothing if the language code is invalid
return
void
No return value

Usage example

import { Component, inject, OnInit } from '@angular/core';
import { LanguageSwitchService } from './core/language-switch/language-switch.service';

@Component({
  selector: 'app-root',
  template: `
    <button (click)="switchLanguage('en')">English</button>
    <button (click)="switchLanguage('es')">Español</button>
    <p>Current language: {{ currentLanguage }}</p>
  `
})
export class AppComponent implements OnInit {
  languageService = inject(LanguageSwitchService);
  currentLanguage = '';

  ngOnInit() {
    // Initialize language from localStorage on startup
    this.languageService.initLanguageFromLocalStorage();
    this.currentLanguage = this.languageService.getCurrentLanguage();
  }

  switchLanguage(lang: string) {
    this.languageService.setLanguage(lang);
    this.currentLanguage = this.languageService.getCurrentLanguage();
  }
}

Available languages

To check which languages are supported:
import { LanguageSwitchService } from './core/language-switch/language-switch.service';

const languages = LanguageSwitchService.availableLanguages;
console.log('Supported languages:', languages); // ['en', 'es']

const defaultLang = LanguageSwitchService.defaultLanguage;
console.log('Default language:', defaultLang); // 'en'

Build docs developers (and LLMs) love