Angular не предоставляет никакого механизма для генерации динамических c переводов, поскольку они генерируются во время компиляции.
В итоге я создал каналы и вызывал их каждый раз, когда мне нужен перевод. Вместо использования 1 уникальной инструкции для перевода строки, я использую несколько вызовов $localize
внутри коммутатора для возврата правильного перевода по идентификатору.
Это пример перевода статуса заказа, который можно вызвать во время выполнения:
import { Pipe, PipeTransform } from '@angular/core';
import { OrderStatusEnum } from 'installation-status.enum';
@Pipe({
name: 'orderStatusRenderer'
})
export class OrderStatusRendererPipe implements PipeTransform {
constructor() {}
transform(value: number, ...args: any[]): any {
switch (value) {
case OrderStatusEnum.PREPARING:
return $localize`:@@order.status.preparing:`;
case OrderStatusEnum.SHIPPED:
return $localize`:@@order.status.shipped:`;
case OrderStatusEnum.COMPLETED:
return $localize`:@@order.status.completed:`;
}
}
}