You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.3 KiB
TypeScript
87 lines
3.3 KiB
TypeScript
|
1 week ago
|
import { Injectable } from "@angular/core";
|
||
|
|
import { TranslateService } from "@ngx-translate/core";
|
||
|
|
import { BehaviorSubject, Observable } from "rxjs";
|
||
|
|
import { MESSAGEKEY } from "../utils/enums";
|
||
|
|
import { NotificationService } from "../shared/services/notification.service";
|
||
|
|
|
||
|
|
@Injectable(
|
||
|
|
{ providedIn: 'root' }
|
||
|
|
)
|
||
|
|
export class I18NService {
|
||
|
|
|
||
|
|
public translationsMerge: BehaviorSubject<boolean> = new BehaviorSubject(<boolean>false);
|
||
|
|
|
||
|
|
constructor(private translate: TranslateService, private notificationService: NotificationService) {
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
success(code: string, customMessage: any[], defaultText?: string): any {
|
||
|
|
let params = this.keyValueParamter(customMessage);
|
||
|
|
|
||
|
|
this.getMessageTranslate(MESSAGEKEY.SUCCESS, code, params).subscribe((res) => {
|
||
|
|
this.notificationService.success((res[code] == code && defaultText != undefined) ? defaultText : res[code]);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
error(code: string, customMessage: any[], defaultText?: string): any {
|
||
|
|
let params = this.keyValueParamter(customMessage);
|
||
|
|
this.getMessageTranslate(MESSAGEKEY.ERROR, code, params).subscribe((res) => {
|
||
|
|
this.notificationService.error((res[code] == code && defaultText != undefined) ? defaultText : res[code]);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
info(code: string, customMessage: any[]): any {
|
||
|
|
let params = this.keyValueParamter(customMessage);
|
||
|
|
this.getMessageTranslate(MESSAGEKEY.INFO, code, params).subscribe((res) => {
|
||
|
|
this.notificationService.info(res[code]);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
warn(code: string, customMessage: any[]): any {
|
||
|
|
let params = this.keyValueParamter(customMessage);
|
||
|
|
this.getMessageTranslate(MESSAGEKEY.WARN, code, params).subscribe((res) => {
|
||
|
|
this.notificationService.warning(res[code]);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
notification(code: string, customMessage: any[]): string {
|
||
|
|
let params = this.keyValueParamter(customMessage);
|
||
|
|
let notification: string = "";
|
||
|
|
this.getMessageTranslate(MESSAGEKEY.NOTIFICATION, code, params).subscribe((res) => {
|
||
|
|
notification = res[code] as string;
|
||
|
|
});
|
||
|
|
return notification;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
keyValueParamter(params: object[]): Object {
|
||
|
|
// Create an object to hold the key-value pairs
|
||
|
|
const keyValueObject: { [key: string]: string } = {};
|
||
|
|
|
||
|
|
// Populate the object
|
||
|
|
for (let i = 0; i < params?.length; i++) {
|
||
|
|
keyValueObject[`value${i + 1}`] = String(params[i]);
|
||
|
|
}
|
||
|
|
|
||
|
|
return keyValueObject;
|
||
|
|
}
|
||
|
|
|
||
|
|
getMessageTranslate(type: string, code: string, params: any): Observable<string | any> {
|
||
|
|
if (type == MESSAGEKEY.SUCCESS) {
|
||
|
|
return this.translate.get([code, "SUC_APP_F_SUM"], params)
|
||
|
|
} else if (type == MESSAGEKEY.ERROR) {
|
||
|
|
return this.translate.get([code, "ERR_APP_F_SUM"], params)
|
||
|
|
} else if (type == MESSAGEKEY.WARN) {
|
||
|
|
return this.translate.get([code, "WRN_APP_F_SUM"], params)
|
||
|
|
} else if (type == MESSAGEKEY.INFO) {
|
||
|
|
return this.translate.get([code, "INF_APP_F_SUM"], params)
|
||
|
|
} else if (type == MESSAGEKEY.NOTIFICATION) {
|
||
|
|
return this.translate.get([code, "NTF_APP_F_SUM"], params)
|
||
|
|
} else {
|
||
|
|
return this.translate.get([code, code], params)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|