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