Code: Select all
import { Component, inject, Injectable, isDevMode, Pipe } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';
import {
provideTransloco,
Translation,
TranslocoLoader,
TranslocoModule,
TranslocoService,
} from '@jsverse/transloco';
import { HttpClient, provideHttpClient } from '@angular/common/http';
import { CommonModule } from '@angular/common';
import { provideRouter, RouterModule } from '@angular/router';
console.clear();
@Injectable({ providedIn: 'root' })
export class TranslocoHttpLoader implements TranslocoLoader {
private http = inject(HttpClient);
getTranslation(lang: string) {
return this.http.get(`/assets/i18n/${lang}.json`);
}
}
@Pipe({
name: 'lang',
})
export class LangPipe {
transloco = inject(TranslocoService);
transform(value: string) {
console.log({ value });
return `${this.transloco.getActiveLang()}/${value}`.replace(/\/\//g, '/');
}
}
@Component({
selector: 'app-root',
imports: [TranslocoModule, CommonModule, LangPipe],
template: `
in app!
{{ t('title') }}
switch lang
goto to some link
`,
})
export class App {
name = 'Angular';
transloco = inject(TranslocoService);
switchLang() {
if (this.transloco.getActiveLang() === 'en') {
this.transloco.setActiveLang('es');
} else {
this.transloco.setActiveLang('en');
}
}
}
bootstrapApplication(App, {
providers: [
provideHttpClient(),
provideTransloco({
config: {
availableLangs: ['en', 'es'],
defaultLang: 'en',
reRenderOnLangChange: true,
prodMode: !isDevMode(),
},
loader: TranslocoHttpLoader,
}),
],
});
< /code>
[list]
[*] Die Sprache wechselt erfolgreich in der Vorlage (en
[*] Die Pipe verwandelt die URL Wie erwartet, aber es scheint nicht auf die Sprachänderung zu reagieren, wenn sie durch die STITYHLANG -Methode ausgelöst wird. Versucht:
Ich habe überprüft Das Lang -Pipe und es transformiert den Link basierend auf der aktiven Sprache, aber es wird nicht dynamisch aktualisiert, wenn die Sprache geschaltet ist.
[/list]
Wenn Transloco ein besseres hat Integrierte Möglichkeit, dieses Szenario zu bewältigen und die URL basierend auf der aktiven Sprache richtig zu aktualisieren. Ich würde diesen Ansatz anstelle der benutzerdefinierten Rohr gerne verwenden. Richtig, wenn die Sprache geschaltet ist?>