This commit is contained in:
2025-12-10 13:46:12 +07:00
commit eb34980465
36 changed files with 2780 additions and 0 deletions

45
src/langs/json/en.json Normal file
View File

@ -0,0 +1,45 @@
{
"success_insert": "Data has been successfully inserted",
"success_update": "Data has been successfully updated",
"success_delete": "Data has been successfully deleted",
"success_restore": "Data has been successfully restored",
"success_view": "Data has been successfully fetched",
"success": "Operation has been success",
"success_userexists": "User Exists",
"otp_success_login": "OTP Has been Verified, Login Successfully",
"pin_success_login": "PIN Has been Verified, Login Successfully",
"success_valid_otp": "Operation has been success, valid for 1 minutes",
"success_logout": "Logout has been success",
"failed": "Operation has been failed",
"failed_access": "You're not allowed to access",
"failed_access_otp": "Please provide valid OTP code",
"failed_expired_otp": "Your OTP has been expired, Please provide valid OTP code",
"failed_access_pin": "Please provide valid PIN code",
"failed_try_pin": "Maximum try has been reached, please re-login MyTelkomcel",
"failed_insert": "Data has been NOT successfully inserted",
"failed_update": "Data has been NOT successfully updated",
"failed_delete": "Data has been NOT successfully deleted",
"failed_restore": "Data has been NOT successfully restored",
"failed_save": "Data has been NOT successfully saved",
"failed_view": "Data has been NOT successfully fetched",
"failed_empty": "Data empty",
"failed_data": "Please provide valid data",
"failed_duplicate": "Duplicate data, please provide valid data",
"failed_not_found": "Data not found, please provide valid data",
"failed_usernot_found": "Username not found, please provide valid username",
"failed_usernotorotp_found": "Username not found or wrong OTP, please provide valid username",
"failed_otpfailedattempt_found": "OTP 3 Failed attempt, please try again",
"failed_userorpin_notfound": "Username not found or wrong PIN, please provide valid username",
"failed_forgotpin_notfound": "Username, Mother Full name, birth of date do not match",
"failed_pinfailedattempt_found": "Pin 3 Failed attempts, Your account will be suspend",
"failed_userorpasswordnot_found": "Username not found or wrong password, please provide valid username",
"success_login": "Login Successfully",
"failed_password": "Please provide valid password",
"failed_limit_otp": "Please send OTP 1 minutes later",
"failed_limit_link_code": "Please send verification link 1 minutes later",
"failed_expired_token": "Token has been expired",
"failed_token": "Your session has been expired, please re-login",
"failed_add_point": "Add point failed, please try again later",
"failed_logout": "Logout has been failed, please try again later",
"failed_related": "Data has been NOT successfully saved, please check related data"
}

79
src/langs/lang.ts Normal file
View File

@ -0,0 +1,79 @@
import path from 'path';
import fs from 'fs';
import { NextFunction, Request, Response } from 'express';
interface LanguageValue {
success_insert?: string;
success_update?: string;
success_delete?: string;
success_restore?: string;
success_view?: string;
success?: string;
success_valid_otp?: string;
success_logout?: string;
pin_success_login?: string;
failed?: string;
failed_access?: string;
failed_access_otp?: string;
failed_expired_otp?: string;
failed_access_pin?: string;
failed_try_pin?: string;
failed_insert?: string;
failed_update?: string;
failed_delete?: string;
failed_restore?: string;
failed_save?: string;
failed_view?: string;
failed_empty?: string;
failed_data?: string;
failed_duplicate?: string;
failed_not_found?: string;
failed_usernot_found?: string;
failed_forgotpin_notfound?: string;
failed_pinfailedattempt_found?: string;
failed_usernotorotp_found?: string;
failed_otpfailedattempt_found?: string;
failed_userorpin_notfound?: string;
failed_userorpasswordnot_found?: string;
failed_limit_otp?: string;
failed_limit_link_code?: string;
failed_expired_token?: string;
failed_token?: string;
failed_add_point?: string;
failed_logout?: string;
failed_related?: string;
//login
otp_success_login?: string;
success_login?: string;
success_userexists?: string;
failed_password?: string;
}
export class Language {
static lang_init: LanguageValue = {};
static lang: LanguageValue = {};
static setup() {
const fileLang: any = fs.readFileSync(
path.join(__dirname, '../langs/json/en.json')
);
Language.lang_init['en'] = JSON.parse(fileLang.toString('utf8'));
}
static apply = (req: Request, res: Response, next: NextFunction) => {
const acceptLanguageHeader = req.get('Accept-Language') as string | null;
if (!acceptLanguageHeader) {
//default
req.params.language = 'en';
} else {
req.params.language = 'en';
// req.params.language = acceptLanguageHeader.substring(0, 2).toLowerCase();
}
Language.lang = Language.lang_init[req.params.language];
return next();
}
}