very first commit
This commit is contained in:
44
src/app/services/language.service.ts
Normal file
44
src/app/services/language.service.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { Injectable, signal } from '@angular/core';
|
||||
|
||||
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() {
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
getCurrentLanguage(): Language | undefined {
|
||||
return this.languages.find(l => l.code === this.currentLanguageSignal());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user