From 677a595e355c3816c31c519d03c8cdbc8964ae12 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Thu, 12 Nov 2020 23:41:41 +0800 Subject: [PATCH] fix error message wrong in toast --- src/lib/i18n.js | 18 ++++++++++++++++++ src/mobile-main.js | 25 +++++++++++-------------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/lib/i18n.js b/src/lib/i18n.js index 0de8fad8..b57b15fa 100644 --- a/src/lib/i18n.js +++ b/src/lib/i18n.js @@ -183,6 +183,24 @@ export function getLocalizedError(error) { }; } +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; +} + function getLocaleFromLanguageAlias(alias) { for (let locale in allLanguages) { if (!Object.prototype.hasOwnProperty.call(allLanguages, locale)) { diff --git a/src/mobile-main.js b/src/mobile-main.js index c89efe1a..c6f7d052 100644 --- a/src/mobile-main.js +++ b/src/mobile-main.js @@ -12,7 +12,7 @@ import 'moment/min/locales'; import 'framework7/css/framework7.bundle.css'; import 'framework7-icons'; -import { getAllLanguages, getLanguage, getDefaultLanguage, getI18nOptions, getLocalizedError } from './lib/i18n.js'; +import { getAllLanguages, getLanguage, getDefaultLanguage, getI18nOptions, getLocalizedError, getLocalizedErrorParameters } from './lib/i18n.js'; import currency from './consts/currency.js'; import account from './consts/account.js'; import version from './lib/version.js'; @@ -78,18 +78,7 @@ Vue.prototype.$alert = function (message, confirmCallback) { if (message && message.error) { const localizedError = getLocalizedError(message.error); message = localizedError.message; - - if (localizedError.parameters) { - for (let i = 0; i < localizedError.parameters.length; i++) { - const parameter = localizedError.parameters[i]; - - if (parameter.localized) { - parameters[parameter.key] = i18n.t(`parameter.${parameter.value}`); - } else { - parameters[parameter.key] = parameter.value; - } - } - } + parameters = getLocalizedErrorParameters(localizedError.parameters, i18n.t); } this.$f7.dialog.create({ @@ -120,8 +109,16 @@ Vue.prototype.$confirm = function (message, confirmCallback, cancelCallback) { }).open(); }; Vue.prototype.$toast = function (message, timeout) { + let parameters = {}; + + if (message && message.error) { + const localizedError = getLocalizedError(message.error); + message = localizedError.message; + parameters = getLocalizedErrorParameters(localizedError.parameters, i18n.t); + } + this.$f7.toast.create({ - text: i18n.t(message), + text: i18n.t(message, parameters), position: 'center', closeTimeout: timeout || 1500 }).open();