2026-02-26 22:23:08 +04:00
|
|
|
import { Pipe, PipeTransform, inject } from '@angular/core';
|
|
|
|
|
import { LanguageService } from '../services/language.service';
|
|
|
|
|
|
|
|
|
|
@Pipe({
|
|
|
|
|
name: 'langRoute',
|
|
|
|
|
pure: false
|
|
|
|
|
})
|
|
|
|
|
export class LangRoutePipe implements PipeTransform {
|
|
|
|
|
private langService = inject(LanguageService);
|
2026-03-06 17:45:34 +04:00
|
|
|
private lastLang = '';
|
|
|
|
|
private lastInput: unknown = null;
|
|
|
|
|
private lastResult: string | (string | number)[] = '';
|
2026-02-26 22:23:08 +04:00
|
|
|
|
|
|
|
|
transform(value: string | (string | number)[]): string | (string | number)[] {
|
|
|
|
|
const lang = this.langService.currentLanguage();
|
|
|
|
|
|
2026-03-06 17:45:34 +04:00
|
|
|
// Short-circuit if nothing changed
|
|
|
|
|
if (lang === this.lastLang && value === this.lastInput) {
|
|
|
|
|
return this.lastResult;
|
2026-02-26 22:23:08 +04:00
|
|
|
}
|
|
|
|
|
|
2026-03-06 17:45:34 +04:00
|
|
|
this.lastLang = lang;
|
|
|
|
|
this.lastInput = value;
|
|
|
|
|
|
|
|
|
|
if (typeof value === 'string') {
|
|
|
|
|
this.lastResult = value === '/' ? `/${lang}` : `/${lang}${value}`;
|
|
|
|
|
} else if (Array.isArray(value) && value.length > 0) {
|
2026-02-26 22:23:08 +04:00
|
|
|
const [first, ...rest] = value;
|
2026-03-06 17:45:34 +04:00
|
|
|
this.lastResult = [`/${lang}${first}`, ...rest];
|
|
|
|
|
} else {
|
|
|
|
|
this.lastResult = value;
|
2026-02-26 22:23:08 +04:00
|
|
|
}
|
|
|
|
|
|
2026-03-06 17:45:34 +04:00
|
|
|
return this.lastResult;
|
2026-02-26 22:23:08 +04:00
|
|
|
}
|
|
|
|
|
}
|