import { Injectable, signal } from '@angular/core'; import { Router } from '@angular/router'; export interface Language { code: string; name: string; flag: string; flagSvg: string; enabled: boolean; } @Injectable({ providedIn: 'root' }) export class LanguageService { private currentLanguageSignal = signal('ru'); languages: Language[] = [ { code: 'ru', name: 'Русский', flag: '🇷🇺', flagSvg: '/flags/ru.svg', enabled: true }, { code: 'en', name: 'English', flag: '🇬🇧', flagSvg: '/flags/en.svg', enabled: true }, { code: 'hy', name: 'Հայերեն', flag: '🇦🇲', flagSvg: '/flags/arm.svg', enabled: true } ]; currentLanguage = this.currentLanguageSignal.asReadonly(); constructor(private router: Router) { // Load saved language from localStorage const savedLang = localStorage.getItem('selectedLanguage'); if (savedLang && this.languages.find(l => l.code === savedLang && l.enabled)) { this.currentLanguageSignal.set(savedLang); } } setLanguage(langCode: string): void { const lang = this.languages.find(l => l.code === langCode); if (lang && lang.enabled) { this.currentLanguageSignal.set(langCode); localStorage.setItem('selectedLanguage', langCode); } } /** Change language and navigate to the same page with the new prefix */ switchLanguage(langCode: string): void { const lang = this.languages.find(l => l.code === langCode); if (!lang?.enabled) return; const currentUrl = this.router.url; const currentLang = this.currentLanguageSignal(); const newUrl = currentUrl.replace(new RegExp(`^/${currentLang}`), `/${langCode}`); this.setLanguage(langCode); this.router.navigateByUrl(newUrl); } getCurrentLanguage(): Language | undefined { return this.languages.find(l => l.code === this.currentLanguageSignal()); } }