Допущения:
- Только 2 возможных варианта языка:
["en","fr"]
- Файлы переводов не извлекаются из локализованных API.Вместо этого они находятся в папке assets вашего проекта.
- При изменении языка с помощью ngx-translate нет необходимости повторно извлекать data
Вы можете создать службу, которая создает правильную конечную точку API, следующим образом:
@Injectable()
export class EnpointLocalizer {
private readonly tokenMap = {'en': '/', '/fr/'}
constructor(private readonly translate: TranslateService){}
localizeJoin(sections: string[]){
const {currentLang} = this.translate;
return sections.join(this.tokenMap[currentLang] || '/');
}
}
Затем вы можете внедрить ее в случае необходимости и использовать ее следующим образом:
@Injectable()
export class FooService {
private endpoint = ["http://example.com","api"];
constructor(private http: HttpClient, private localizer: EnpointLocalizer){}
fetch(){
return this.http.get(this.localizer.localizeJoin(this.endpoint),...);
}
}
Конечно, существуют разные способы реализации логики «локализации» (например, regex patter + replace).Но для вашего случая использования я думаю, что это простое и понятное начало.