@doku-dev/doku-fragment
Version:
A new Angular UI library that moving away from Bootstrap and built from scratch.
45 lines • 4.86 kB
JavaScript
import { Injectable, inject } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import * as i0 from "@angular/core";
export class I18nService {
constructor() {
this.route = inject(ActivatedRoute);
/**
* @default 'selected-language'
*/
this.SELECTED_LANG_KEY = 'selected-language';
}
/**
* Get active language from query params or local storage.
*
* The value is normalized to uppercase.
* Defaults to "ID" if not exists on local storage or when the language is not supported.
*/
getActiveLanguage() {
const paramLang = this.route.snapshot.queryParamMap.get('lang');
if (paramLang && ['EN', 'ID'].includes(paramLang)) {
return paramLang;
}
let value = localStorage.getItem(this.SELECTED_LANG_KEY) || 'ID';
value = value.toUpperCase();
if (['EN', 'ID'].includes(value))
return value;
return 'ID';
}
/**
* The language value will be normalized to uppercase.
*/
setActiveLanguage(language) {
const normalizedLanguage = language.toUpperCase();
localStorage.setItem(this.SELECTED_LANG_KEY, normalizedLanguage);
}
}
I18nService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
I18nService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: I18nService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: I18nService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9rdS1mcmFnbWVudC9wcm92aWRlcnMvc3JjL2kxOG4vaTE4bi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLakQsTUFBTSxPQUFPLFdBQVc7SUFIeEI7UUFJVSxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXZDOztXQUVHO1FBQ0gsc0JBQWlCLEdBQUcsbUJBQW1CLENBQUM7S0EyQnpDO0lBekJDOzs7OztPQUtHO0lBQ0gsaUJBQWlCO1FBQ2YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRSxJQUFJLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDakQsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNqRSxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsUUFBZ0I7UUFDaEMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUNuRSxDQUFDOzt3R0FoQ1UsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSTE4blNlcnZpY2Uge1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICAvKipcbiAgICogQGRlZmF1bHQgJ3NlbGVjdGVkLWxhbmd1YWdlJ1xuICAgKi9cbiAgU0VMRUNURURfTEFOR19LRVkgPSAnc2VsZWN0ZWQtbGFuZ3VhZ2UnO1xuXG4gIC8qKlxuICAgKiBHZXQgYWN0aXZlIGxhbmd1YWdlIGZyb20gcXVlcnkgcGFyYW1zIG9yIGxvY2FsIHN0b3JhZ2UuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBpcyBub3JtYWxpemVkIHRvIHVwcGVyY2FzZS5cbiAgICogRGVmYXVsdHMgdG8gXCJJRFwiIGlmIG5vdCBleGlzdHMgb24gbG9jYWwgc3RvcmFnZSBvciB3aGVuIHRoZSBsYW5ndWFnZSBpcyBub3Qgc3VwcG9ydGVkLlxuICAgKi9cbiAgZ2V0QWN0aXZlTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJhbUxhbmcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdsYW5nJyk7XG4gICAgaWYgKHBhcmFtTGFuZyAmJiBbJ0VOJywgJ0lEJ10uaW5jbHVkZXMocGFyYW1MYW5nKSkge1xuICAgICAgcmV0dXJuIHBhcmFtTGFuZztcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlNFTEVDVEVEX0xBTkdfS0VZKSB8fCAnSUQnO1xuICAgIHZhbHVlID0gdmFsdWUudG9VcHBlckNhc2UoKTtcbiAgICBpZiAoWydFTicsICdJRCddLmluY2x1ZGVzKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgIHJldHVybiAnSUQnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSB2YWx1ZSB3aWxsIGJlIG5vcm1hbGl6ZWQgdG8gdXBwZXJjYXNlLlxuICAgKi9cbiAgc2V0QWN0aXZlTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRMYW5ndWFnZSA9IGxhbmd1YWdlLnRvVXBwZXJDYXNlKCk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5TRUxFQ1RFRF9MQU5HX0tFWSwgbm9ybWFsaXplZExhbmd1YWdlKTtcbiAgfVxufVxuIl19