code refactor

This commit is contained in:
MaysWind
2023-06-22 16:35:52 +08:00
parent f39e20d7a7
commit 80429bbfb8
3 changed files with 68 additions and 75 deletions
+63 -51
View File
@@ -533,6 +533,60 @@ function getDisplayCurrency(value, currencyCode, notConvertValue, translateFn) {
} }
} }
function getLocalizedError(error) {
if (error.errorCode === apiNotFoundErrorCode && specifiedApiNotFoundErrors[error.path]) {
return {
message: `${specifiedApiNotFoundErrors[error.path].message}`
};
}
if (error.errorCode !== validatorErrorCode) {
return {
message: `error.${error.errorMessage}`
};
}
for (let i = 0; i < parameterizedErrors.length; i++) {
const errorInfo = parameterizedErrors[i];
const matches = error.errorMessage.match(errorInfo.regex);
if (matches && matches.length === errorInfo.parameters.length + 1) {
return {
message: `parameterizedError.${errorInfo.localeKey}`,
parameters: errorInfo.parameters.map((param, index) => {
return {
key: param.field,
localized: param.localized,
value: matches[index + 1]
}
})
};
}
}
return {
message: `error.${error.errorMessage}`
};
}
function getLocalizedErrorParameters(parameters, i18nFunc) {
let localizedParameters = {};
if (parameters) {
for (let i = 0; i < parameters.length; i++) {
const parameter = parameters[i];
if (parameter.localized) {
localizedParameters[parameter.key] = i18nFunc(`parameter.${parameter.value}`);
} else {
localizedParameters[parameter.key] = parameter.value;
}
}
}
return localizedParameters;
}
function setLanguage(i18nGlobal, locale, force) { function setLanguage(i18nGlobal, locale, force) {
if (!locale) { if (!locale) {
locale = getDefaultLanguage(); locale = getDefaultLanguage();
@@ -636,7 +690,7 @@ export function getI18nOptions() {
}; };
} }
export function transateIf(text, isTranslate, translateFn) { export function translateIf(text, isTranslate, translateFn) {
if (isTranslate) { if (isTranslate) {
return translateFn(text); return translateFn(text);
} }
@@ -644,58 +698,16 @@ export function transateIf(text, isTranslate, translateFn) {
return text; return text;
} }
export function getLocalizedError(error) { export function translateError(message, translateFn) {
if (error.errorCode === apiNotFoundErrorCode && specifiedApiNotFoundErrors[error.path]) { let parameters = {};
return {
message: `${specifiedApiNotFoundErrors[error.path].message}` if (message && message.error) {
}; const localizedError = getLocalizedError(message.error);
message = localizedError.message;
parameters = getLocalizedErrorParameters(localizedError.parameters, translateFn);
} }
if (error.errorCode !== validatorErrorCode) { return translateFn(message, parameters);
return {
message: `error.${error.errorMessage}`
};
}
for (let i = 0; i < parameterizedErrors.length; i++) {
const errorInfo = parameterizedErrors[i];
const matches = error.errorMessage.match(errorInfo.regex);
if (matches && matches.length === errorInfo.parameters.length + 1) {
return {
message: `parameterizedError.${errorInfo.localeKey}`,
parameters: errorInfo.parameters.map((param, index) => {
return {
key: param.field,
localized: param.localized,
value: matches[index + 1]
}
})
};
}
}
return {
message: `error.${error.errorMessage}`
};
}
export function getLocalizedErrorParameters(parameters, i18nFunc) {
let localizedParameters = {};
if (parameters) {
for (let i = 0; i < parameters.length; i++) {
const parameter = parameters[i];
if (parameter.localized) {
localizedParameters[parameter.key] = i18nFunc(`parameter.${parameter.value}`);
} else {
localizedParameters[parameter.key] = parameter.value;
}
}
}
return localizedParameters;
} }
export function i18nFunctions(i18nGlobal) { export function i18nFunctions(i18nGlobal) {
+3 -22
View File
@@ -2,24 +2,13 @@ import { f7, f7ready } from 'framework7-vue';
import fontConstants from '@/consts/font.js'; import fontConstants from '@/consts/font.js';
import settings from './settings.js'; import settings from './settings.js';
import { import { translateError } from './i18n.js';
getLocalizedError,
getLocalizedErrorParameters
} from './i18n.js';
export function showAlert(message, confirmCallback, translateFn) { export function showAlert(message, confirmCallback, translateFn) {
let parameters = {};
if (message && message.error) {
const localizedError = getLocalizedError(message.error);
message = localizedError.message;
parameters = getLocalizedErrorParameters(localizedError.parameters, s => translateFn(s));
}
f7ready((f7) => { f7ready((f7) => {
f7.dialog.create({ f7.dialog.create({
title: translateFn('global.app.title'), title: translateFn('global.app.title'),
text: translateFn(message, parameters), text: translateError(message, translateFn),
animate: settings.isEnableAnimate(), animate: settings.isEnableAnimate(),
buttons: [ buttons: [
{ {
@@ -52,17 +41,9 @@ export function showConfirm(message, confirmCallback, cancelCallback, translateF
} }
export function showToast(message, timeout, translateFn) { export function showToast(message, timeout, translateFn) {
let parameters = {};
if (message && message.error) {
const localizedError = getLocalizedError(message.error);
message = localizedError.message;
parameters = getLocalizedErrorParameters(localizedError.parameters, s => translateFn(s));
}
f7ready((f7) => { f7ready((f7) => {
f7.toast.create({ f7.toast.create({
text: translateFn(message, parameters), text: translateError(message, translateFn),
position: 'center', position: 'center',
closeTimeout: timeout || 1500 closeTimeout: timeout || 1500
}).open(); }).open();
+2 -2
View File
@@ -78,7 +78,7 @@ import settings from '@/lib/settings.js';
import userstate from '@/lib/userstate.js'; import userstate from '@/lib/userstate.js';
import { import {
getI18nOptions, getI18nOptions,
transateIf, translateIf,
i18nFunctions i18nFunctions
} from '@/lib/i18n.js'; } from '@/lib/i18n.js';
import { import {
@@ -188,7 +188,7 @@ app.config.globalProperties.$buildTime = version.getBuildTime();
app.config.globalProperties.$settings = settings; app.config.globalProperties.$settings = settings;
app.config.globalProperties.$locale = i18nFunctions(i18n.global); app.config.globalProperties.$locale = i18nFunctions(i18n.global);
app.config.globalProperties.$tIf = (text, isTranslate) => transateIf(text, isTranslate, i18n.global.t); app.config.globalProperties.$tIf = (text, isTranslate) => translateIf(text, isTranslate, i18n.global.t);
app.config.globalProperties.$alert = (message, confirmCallback) => showAlert(message, confirmCallback, i18n.global.t); app.config.globalProperties.$alert = (message, confirmCallback) => showAlert(message, confirmCallback, i18n.global.t);
app.config.globalProperties.$confirm = (message, confirmCallback, cancelCallback) => showConfirm(message, confirmCallback, cancelCallback, i18n.global.t); app.config.globalProperties.$confirm = (message, confirmCallback, cancelCallback) => showConfirm(message, confirmCallback, cancelCallback, i18n.global.t);