Я использую библиотеку @jsverse/transloco в моем угловом приложении для управления языковым переводом. Когда я переключаю языки, используя кнопку, переводы правильно обновляются в шаблоне (например, «EN заголовок» становится «название ES»). Тем не менее, ссылка в моем шаблоне не изменяется соответственно. Ниже приведен код для моего Langpipe и метода SwitchLang :
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]
[*] Язык успешно переключается в шаблоне (en
становится ES ), но URL (сгенерированный Lang Pipe) не обновляется с новым языком.
[*] Труба преобразует URL Как и ожидалось, но, похоже, это не реагирует на изменение языка, когда он запускается методом SwitchLang .
[/list]
Что я Пробовал:
Я подтвердил, что язык правильно изменяется с помощью метода Transloco.getActivelang () < /code>. < /li>
Я также проверил труба lang и правильно преобразует ссылку на основе активного языка, но она не обновляется динамически при переключении языка.
Если у Transveloco лучше Встроенный способ обработки этого сценария и правильного обновления URL-адреса на основе активного языка, я бы с радостью использовал этот подход вместо пользовательской трубы. < /p>
Как я могу убедиться, что URL Правильно, когда язык переключается?>
Я использую библиотеку @jsverse/transloco в моем угловом приложении для управления языковым переводом. Когда я переключаю языки, используя кнопку, переводы правильно обновляются в шаблоне (например, «EN заголовок» становится «название ES»). Тем не менее, ссылка в моем шаблоне не изменяется соответственно. Ниже приведен код для моего Langpipe и метода SwitchLang : [code]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';
bootstrapApplication(App, { providers: [ provideHttpClient(), provideTransloco({ config: { availableLangs: ['en', 'es'], defaultLang: 'en', reRenderOnLangChange: true, prodMode: !isDevMode(), }, loader: TranslocoHttpLoader, }), ], }); < /code> [list] [*] Язык успешно переключается в шаблоне (en[/code] становится ES ), но URL (сгенерированный Lang Pipe) не обновляется с новым языком. [*] Труба преобразует URL Как и ожидалось, но, похоже, это не реагирует на изменение языка, когда он запускается методом SwitchLang . [/list] Что я Пробовал: [list] [*] Я подтвердил, что язык правильно изменяется с помощью метода Transloco.getActivelang () < /code>. < /li> Я также проверил труба lang и правильно преобразует ссылку на основе активного языка, но она не обновляется динамически при переключении языка. [/list] Если у Transveloco лучше Встроенный способ обработки этого сценария и правильного обновления URL-адреса на основе активного языка, я бы с радостью использовал этот подход вместо пользовательской трубы. < /p> Как я могу убедиться, что URL Правильно, когда язык переключается?>