@ogs-gmbh/ngx-translate
Version:
A lightweight, REST-based Angular i18n library designed for seamless internationalization with minimal setup. It supports dynamic language switching & flexible translation management via RESTful APIs.
47 lines • 7.86 kB
JavaScript
import { mergeHttpHeaders } from "@ogs-gmbh/ngx-http";
import { HttpHeaders } from "@angular/common/http";
import { Injectable, inject } from "@angular/core";
import { retry, timeout } from "rxjs";
import { TRANSLATION_CONFIG_TOKEN } from "../tokens/config.token";
import { TRANSLATION_HTTP_CONFIG, TRANSLATION_HTTP_OPTIONS } from "../tokens/http.token";
import * as i0 from "@angular/core";
export class TranslationHttpSerivce {
_translationHttpConfig = inject(TRANSLATION_HTTP_CONFIG);
_translationConfig = inject(TRANSLATION_CONFIG_TOKEN, { optional: true });
_translationHttpOptions = inject(TRANSLATION_HTTP_OPTIONS, { optional: true });
getWithRef$(httpClientRef, scopeName, httpOptions) {
let path = this._translationHttpConfig;
if (typeof scopeName === "string" || scopeName === null) {
if (scopeName !== null)
path += `?scope=${encodeURIComponent(scopeName)}`;
}
else {
const urlSearchParams = new URLSearchParams();
scopeName.forEach((scopeNameItem) => {
if (scopeNameItem === null)
return;
urlSearchParams.append("scope", encodeURIComponent(scopeNameItem));
});
path += `?${urlSearchParams.toString()}`;
}
let headers = new HttpHeaders();
if (this._translationHttpOptions?.headers !== undefined)
headers = mergeHttpHeaders(headers, this._translationHttpOptions.headers);
if (httpOptions?.headers !== undefined)
headers = mergeHttpHeaders(headers, httpOptions.headers);
return httpClientRef.get(path, {
responseType: "json",
observe: "body",
headers
}).pipe(timeout(this._translationConfig?.timeout ?? 3000), retry(0));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationHttpSerivce, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationHttpSerivce, providedIn: "root" });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationHttpSerivce, decorators: [{
type: Injectable,
args: [{
providedIn: "root"
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24taHR0cC5zZXJpdmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3RyYW5zbGF0aW9uLWh0dHAuc2VyaXZjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEYsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUt6RixNQUFNLE9BQU8sc0JBQXNCO0lBQ2hCLHNCQUFzQixHQUFXLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBRWpFLGtCQUFrQixHQUFtQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxRyx1QkFBdUIsR0FBd0QsTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFOUksV0FBVyxDQUFJLGFBQW1DLEVBQUUsU0FBdUQsRUFBRSxXQUEwRDtRQUM1SyxJQUFJLElBQUksR0FBVyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFFL0MsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hELElBQUksU0FBUyxLQUFLLElBQUk7Z0JBQ3BCLElBQUksSUFBSSxVQUFXLGtCQUFrQixDQUFDLFNBQVMsQ0FBRSxFQUFFLENBQUM7UUFDeEQsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLGVBQWUsR0FBb0IsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUUvRCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBNEIsRUFBUSxFQUFFO2dCQUN2RCxJQUFJLGFBQWEsS0FBSyxJQUFJO29CQUFFLE9BQU87Z0JBRW5DLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLElBQUksSUFBSyxlQUFlLENBQUMsUUFBUSxFQUFHLEVBQUUsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxPQUFPLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFFN0MsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxLQUFLLFNBQVM7WUFDckQsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUUsSUFBSSxXQUFXLEVBQUUsT0FBTyxLQUFLLFNBQVM7WUFDcEMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0QsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFJLElBQUksRUFBRTtZQUNoQyxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsTUFBTTtZQUNmLE9BQU87U0FDUixDQUFDLENBQUMsSUFBSSxDQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUNqRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ1QsQ0FBQztJQUNKLENBQUM7d0dBeENVLHNCQUFzQjs0R0FBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVyc09wdGlvbiwgSHR0cE9wdGlvbnMsIG1lcmdlSHR0cEhlYWRlcnMgfSBmcm9tIFwiQG9ncy1nbWJoL25neC1odHRwXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIHJldHJ5LCB0aW1lb3V0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFNwZWNpZmljVHJhbnNsYXRlQ29uZmlnIH0gZnJvbSBcIi4uL3R5cGVzL2NvbmZpZy50eXBlXCI7XG5pbXBvcnQgeyBUUkFOU0xBVElPTl9DT05GSUdfVE9LRU4gfSBmcm9tIFwiLi4vdG9rZW5zL2NvbmZpZy50b2tlblwiO1xuaW1wb3J0IHsgVFJBTlNMQVRJT05fSFRUUF9DT05GSUcsIFRSQU5TTEFUSU9OX0hUVFBfT1BUSU9OUyB9IGZyb20gXCIuLi90b2tlbnMvaHR0cC50b2tlblwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uSHR0cFNlcml2Y2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGlvbkh0dHBDb25maWc6IHN0cmluZyA9IGluamVjdChUUkFOU0xBVElPTl9IVFRQX0NPTkZJRyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNsYXRpb25Db25maWc6IFNwZWNpZmljVHJhbnNsYXRlQ29uZmlnIHwgbnVsbCA9IGluamVjdChUUkFOU0xBVElPTl9DT05GSUdfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNsYXRpb25IdHRwT3B0aW9uczogSHR0cE9wdGlvbnM8bmV2ZXIsIEh0dHBIZWFkZXJzT3B0aW9uLCBuZXZlcj4gfCBudWxsID0gaW5qZWN0KFRSQU5TTEFUSU9OX0hUVFBfT1BUSU9OUywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwdWJsaWMgZ2V0V2l0aFJlZiQ8VD4oaHR0cENsaWVudFJlZjogUmVhZG9ubHk8SHR0cENsaWVudD4sIHNjb3BlTmFtZTogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudWxsPiB8IHN0cmluZyB8IG51bGwsIGh0dHBPcHRpb25zPzogSHR0cE9wdGlvbnM8bmV2ZXIsIEh0dHBIZWFkZXJzT3B0aW9uLCBuZXZlcj4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBsZXQgcGF0aDogc3RyaW5nID0gdGhpcy5fdHJhbnNsYXRpb25IdHRwQ29uZmlnO1xuXG4gICAgaWYgKHR5cGVvZiBzY29wZU5hbWUgPT09IFwic3RyaW5nXCIgfHwgc2NvcGVOYW1lID09PSBudWxsKSB7XG4gICAgICBpZiAoc2NvcGVOYW1lICE9PSBudWxsKVxuICAgICAgICBwYXRoICs9IGA/c2NvcGU9JHsgZW5jb2RlVVJJQ29tcG9uZW50KHNjb3BlTmFtZSkgfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVybFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXG4gICAgICBzY29wZU5hbWUuZm9yRWFjaCgoc2NvcGVOYW1lSXRlbTogc3RyaW5nIHwgbnVsbCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoc2NvcGVOYW1lSXRlbSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgIHVybFNlYXJjaFBhcmFtcy5hcHBlbmQoXCJzY29wZVwiLCBlbmNvZGVVUklDb21wb25lbnQoc2NvcGVOYW1lSXRlbSkpO1xuICAgICAgfSk7XG4gICAgICBwYXRoICs9IGA/JHsgdXJsU2VhcmNoUGFyYW1zLnRvU3RyaW5nKCkgfWA7XG4gICAgfVxuXG4gICAgbGV0IGhlYWRlcnM6IEh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG5cbiAgICBpZiAodGhpcy5fdHJhbnNsYXRpb25IdHRwT3B0aW9ucz8uaGVhZGVycyAhPT0gdW5kZWZpbmVkKVxuICAgICAgaGVhZGVycyA9IG1lcmdlSHR0cEhlYWRlcnMoaGVhZGVycywgdGhpcy5fdHJhbnNsYXRpb25IdHRwT3B0aW9ucy5oZWFkZXJzKTtcblxuICAgIGlmIChodHRwT3B0aW9ucz8uaGVhZGVycyAhPT0gdW5kZWZpbmVkKVxuICAgICAgaGVhZGVycyA9IG1lcmdlSHR0cEhlYWRlcnMoaGVhZGVycywgaHR0cE9wdGlvbnMuaGVhZGVycyk7XG5cbiAgICByZXR1cm4gaHR0cENsaWVudFJlZi5nZXQ8VD4ocGF0aCwge1xuICAgICAgcmVzcG9uc2VUeXBlOiBcImpzb25cIixcbiAgICAgIG9ic2VydmU6IFwiYm9keVwiLFxuICAgICAgaGVhZGVyc1xuICAgIH0pLnBpcGUoXG4gICAgICB0aW1lb3V0KHRoaXMuX3RyYW5zbGF0aW9uQ29uZmlnPy50aW1lb3V0ID8/IDMwMDApLFxuICAgICAgcmV0cnkoMClcbiAgICApO1xuICB9XG59XG4iXX0=