Files
marketplaces/src/app/services/language.service.ts
2026-03-04 16:45:01 +04:00

59 lines
1.8 KiB
TypeScript

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<string>('ru');
languages: Language[] = [
{ code: 'ru', name: 'Русский', flag: '🇷🇺', flagSvg: '/flags/ru.svg', enabled: true },
{ code: 'en', name: 'English', flag: '🇬🇧', flagSvg: '/flags/en.svg', enabled: false },
{ code: 'hy', name: 'Հայերեն', flag: '🇦🇲', flagSvg: '/flags/arm.svg', enabled: false }
];
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());
}
}