1.Saving language

2.Optimalizations with chatgpt
This commit is contained in:
Artur 2024-11-19 18:21:50 +01:00
parent d7cd62183d
commit 34a9849414
1 changed files with 35 additions and 34 deletions

View File

@ -1,61 +1,62 @@
import { Component, OnDestroy } from '@angular/core'; import { Component, HostListener, OnDestroy } from '@angular/core';
import { RouterOutlet } from '@angular/router'; import { RouterOutlet } from '@angular/router';
import { TranslateService, TranslateModule} from "@ngx-translate/core"; import { TranslateService, TranslateModule } from '@ngx-translate/core';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
standalone: true, standalone: true,
imports: [ RouterOutlet, TranslateModule, ], imports: [RouterOutlet, TranslateModule],
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrl: './app.component.css' styleUrls: ['./app.component.css'], // Fixed typo
}) })
export class AppComponent implements OnDestroy { export class AppComponent implements OnDestroy {
private langChangeSub!: Subscription;
title = 'Strona';
private langChangeSub: Subscription; constructor(public translate: TranslateService) {
this.initializeLanguage();
constructor( public translate: TranslateService ){ }
this.translate.addLangs(['pl', 'en']); private initializeLanguage(): void {
const savedLang = localStorage.getItem('lang');
// Pobierz język przeglądarki i obetnij kod regionu // np. 'en' z 'en-US' const supportedLangs = ['pl', 'en'];
const browserLang = navigator.language .slice(0, 2);
// Wyświetl w konsoli dla weryfikacji this.translate.addLangs(supportedLangs);
console.log('Język przeglądarki krótki:', browserLang);
if (savedLang && supportedLangs.includes(savedLang)) {
if( browserLang == 'en' || browserLang =='pl' ){ this.translate.use(savedLang);
this.translate.setDefaultLang( browserLang ); } else {
}else{ const browserLang = navigator.language.slice(0, 2);
this.translate.setDefaultLang('pl'); const defaultLang = supportedLangs.includes(browserLang) ? browserLang : 'pl';
this.translate.setDefaultLang(defaultLang);
} }
// Ustaw język pobrany z przeglądarki, jeśli jest obsługiwany
// this.translate.use(browserLang.match(/en|pl/) ? browserLang : 'pl');
this.langChangeSub = this.translate.onLangChange.subscribe((event) => { this.langChangeSub = this.translate.onLangChange.subscribe((event) => {
console.log('Język ustawiany:', event.lang); console.log('Language set to:', event.lang);
// localStorage.setItem('lang', selectedLang); localStorage.setItem('lang', event.lang);
//this.loadAboutDescription();
}); });
} }
ngOnDestroy() {
// Unsubscribing from the event when the component is destroyed to avoid memory leaks ngOnDestroy(): void {
if( this.langChangeSub ) { if (this.langChangeSub) {
console.log('unsubscribe'); console.log('Unsubscribing from language change events');
this.langChangeSub.unsubscribe(); this.langChangeSub.unsubscribe();
} }
} }
// app.component.ts
switchLanguage(language: string) { switchLanguage(language: string): void {
if (language !== this.translate.currentLang) {
this.translate.use(language); this.translate.use(language);
} }
}
@HostListener('keydown', ['$event'])
handleKeyDown(event: KeyboardEvent): void { handleKeyDown(event: KeyboardEvent): void {
if (event.key === 'Enter' || event.key === ' ') { if (event.key === 'Enter' || event.key === ' ') {
this.switchLanguage( this.translate.currentLang === 'pl' ? 'en' : 'pl'); const newLang = this.translate.currentLang === 'pl' ? 'en' : 'pl';
this.switchLanguage(newLang);
event.preventDefault(); event.preventDefault();
} }
} }
title = 'Strona';
} }