Переключатель Transloco Language работает, но Pipe не обновляет URLJavascript

Форум по Javascript
Ответить
Anonymous
 Переключатель Transloco Language работает, но Pipe не обновляет URL

Сообщение Anonymous »

Я использую библиотеку @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 Правильно, когда язык переключается?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... in-angular
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»