support currency symbol

This commit is contained in:
MaysWind
2020-11-22 14:31:32 +08:00
parent 9e1ec6d13c
commit 1e4fe9bd72
7 changed files with 659 additions and 164 deletions
+628 -159
View File
@@ -1,167 +1,636 @@
const parentAccountCurrencyPlacehodler = '---'; const parentAccountCurrencyPlacehodler = '---';
const defaultCurrencySymbol = '¤';
// ISO 4217 // ISO 4217
const allCurrencies = [ const allCurrencies = {
'AED', //UAE Dirham 'AED': { // UAE Dirham
'AFN', //Afghani code: 'AED',
'ALL', //Lek symbol: 'د.إ'
'AMD', //Armenian Dram },
'ANG', //Netherlands Antillean Guilder 'AFN': { // Afghani
'AOA', //Kwanza code: 'AFN',
'ARS', //Argentine Peso symbol: '؋'
'AUD', //Australian Dollar },
'AWG', //Aruban Florin 'ALL': { // Lek
'AZN', //Azerbaijan Manat code: 'ALL',
'BAM', //Convertible Mark symbol: 'L'
'BBD', //Barbados Dollar },
'BDT', //Taka 'AMD': { // Armenian Dram
'BGN', //Bulgarian Lev code: 'AMD',
'BHD', //Bahraini Dinar symbol: '֏'
'BIF', //Burundi Franc },
'BMD', //Bermudian Dollar 'ANG': { // Netherlands Antillean Guilder
'BND', //Brunei Dollar code: 'ANG',
'BOB', //Boliviano symbol: 'NAƒ'
'BRL', //Brazilian Real },
'BSD', //Bahamian Dollar 'AOA': { // Kwanza
'BTN', //Ngultrum code: 'AOA',
'BWP', //Pula symbol: 'Kz'
'BYN', //Belarusian Ruble },
'BZD', //Belize Dollar 'ARS': { // Argentine Peso
'CAD', //Canadian Dollar code: 'ARS',
'CDF', //Congolese Franc symbol: '$'
'CHF', //Swiss Franc },
'CLP', //Chilean Peso 'AUD': { // Australian Dollar
'CNY', //Yuan Renminbi code: 'AUD',
'COP', //Colombian Peso symbol: '$'
'CRC', //Costa Rican Colon },
'CUC', //Peso Convertible 'AWG': { // Aruban Florin
'CUP', //Cuban Peso code: 'AWG',
'CVE', //Cabo Verde Escudo symbol: 'Afl.'
'CZK', //Czech Koruna },
'DJF', //Djibouti Franc 'AZN': { // Azerbaijan Manat
'DKK', //Danish Krone code: 'AZN',
'DOP', //Dominican Peso symbol: '₼'
'DZD', //Algerian Dinar },
'EGP', //Egyptian Pound 'BAM': { // Convertible Mark
'ERN', //Nakfa code: 'BAM',
'ETB', //Ethiopian Birr symbol: 'KM'
'EUR', //Euro },
'FJD', //Fiji Dollar 'BBD': { // Barbados Dollar
'FKP', //Falkland Islands Pound code: 'BBD',
'GBP', //Pound Sterling symbol: '$'
'GEL', //Lari },
'GHS', //Ghana Cedi 'BDT': { // Taka
'GIP', //Gibraltar Pound code: 'BDT',
'GMD', //Dalasi symbol: '৳'
'GNF', //Guinean Franc },
'GTQ', //Quetzal 'BGN': { // Bulgarian Lev
'GYD', //Guyana Dollar code: 'BGN',
'HKD', //Hong Kong Dollar symbol: 'лв.'
'HNL', //Lempira },
'HRK', //Kuna 'BHD': { // Bahraini Dinar
'HTG', //Gourde code: 'BHD',
'HUF', //Forint symbol: '.د.ب'
'IDR', //Rupiah },
'ILS', //New Israeli Sheqel 'BIF': { // Burundi Franc
'INR', //Indian Rupee code: 'BIF',
'IQD', //Iraqi Dinar symbol: 'FBu'
'IRR', //Iranian Rial },
'ISK', //Iceland Krona 'BMD': { // Bermudian Dollar
'JMD', //Jamaican Dollar code: 'BMD',
'JOD', //Jordanian Dinar symbol: '$'
'JPY', //Yen },
'KES', //Kenyan Shilling 'BND': { // Brunei Dollar
'KGS', //Som code: 'BND',
'KHR', //Riel symbol: '$'
'KMF', //Comorian Franc },
'KPW', //North Korean Won 'BOB': { // Boliviano
'KRW', //Won code: 'BOB',
'KWD', //Kuwaiti Dinar symbol: 'Bs'
'KYD', //Cayman Islands Dollar },
'KZT', //Tenge 'BRL': { // Brazilian Real
'LAK', //Lao Kip code: 'BRL',
'LBP', //Lebanese Pound symbol: 'R$'
'LKR', //Sri Lanka Rupee },
'LRD', //Liberian Dollar 'BSD': { // Bahamian Dollar
'LSL', //Loti code: 'BSD',
'LYD', //Libyan Dinar symbol: '$'
'MAD', //Moroccan Dirham },
'MDL', //Moldovan Leu 'BTN': { // Ngultrum
'MGA', //Malagasy Ariary code: 'BTN',
'MKD', //Denar symbol: 'Nu.'
'MMK', //Kyat },
'MNT', //Tugrik 'BWP': { // Pula
'MOP', //Pataca code: 'BWP',
'MRU', //Ouguiya symbol: 'P'
'MUR', //Mauritius Rupee },
'MVR', //Rufiyaa 'BYN': { // Belarusian Ruble
'MWK', //Malawi Kwacha code: 'BYN',
'MXN', //Mexican Peso symbol: 'Br'
'MYR', //Malaysian Ringgit },
'MZN', //Mozambique Metical 'BZD': { // Belize Dollar
'NAD', //Namibia Dollar code: 'BZD',
'NGN', //Naira symbol: '$'
'NIO', //Cordoba Oro },
'NOK', //Norwegian Krone 'CAD': { // Canadian Dollar
'NPR', //Nepalese Rupee code: 'CAD',
'NZD', //New Zealand Dollar symbol: '$'
'OMR', //Rial Omani },
'PAB', //Balboa 'CDF': { // Congolese Franc
'PEN', //Sol code: 'CDF',
'PGK', //Kina symbol: 'FC'
'PHP', //Philippine Peso },
'PKR', //Pakistan Rupee 'CHF': { // Swiss Franc
'PLN', //Zloty code: 'CHF',
'PYG', //Guarani symbol: 'Fr.'
'QAR', //Qatari Rial },
'RON', //Romanian Leu 'CLP': { // Chilean Peso
'RSD', //Serbian Dinar code: 'CLP',
'RUB', //Russian Ruble symbol: '$'
'RWF', //Rwanda Franc },
'SAR', //Saudi Riyal 'CNY': { // Yuan Renminbi
'SBD', //Solomon Islands Dollar code: 'CNY',
'SCR', //Seychelles Rupee symbol: '¥'
'SDG', //Sudanese Pound },
'SEK', //Swedish Krona 'COP': { // Colombian Peso
'SGD', //Singapore Dollar code: 'COP',
'SHP', //Saint Helena Pound symbol: '$'
'SLL', //Leone },
'SOS', //Somali Shilling 'CRC': { // Costa Rican Colon
'SRD', //Surinam Dollar code: 'CRC',
'SSP', //South Sudanese Pound symbol: '₡'
'STN', //Dobra },
'SVC', //El Salvador Colon 'CUC': { // Peso Convertible
'SYP', //Syrian Pound code: 'CUC',
'SZL', //Lilangeni symbol: '$'
'THB', //Baht },
'TJS', //Somoni 'CUP': { // Cuban Peso
'TMT', //Turkmenistan New Manat code: 'CUP',
'TND', //Tunisian Dinar symbol: '$'
'TOP', //Paanga },
'TRY', //Turkish Lira 'CVE': { // Cabo Verde Escudo
'TTD', //Trinidad and Tobago Dollar code: 'CVE',
'TWD', //New Taiwan Dollar symbol: '$'
'TZS', //Tanzanian Shilling },
'UAH', //Hryvnia 'CZK': { // Czech Koruna
'UGX', //Uganda Shilling code: 'CZK',
'USD', //US Dollar symbol: 'Kč'
'UYU', //Peso Uruguayo },
'UZS', //Uzbekistan Sum 'DJF': { // Djibouti Franc
'VES', //Bolívar Soberano code: 'DJF',
'VND', //Dong symbol: 'Fdj'
'VUV', //Vatu },
'WST', //Tala 'DKK': { // Danish Krone
'XAF', //CFA Franc BEAC code: 'DKK',
'XCD', //East Caribbean Dollar symbol: 'kr.'
'XOF', //CFA Franc BCEAO },
'XPF', //CFP Franc 'DOP': { // Dominican Peso
'YER', //Yemeni Rial code: 'DOP',
'ZAR', //Rand symbol: '$'
'ZMW', //Zambian Kwacha },
'ZWL', //Zimbabwe Dollar 'DZD': { // Algerian Dinar
]; code: 'DZD',
symbol: 'دج'
},
'EGP': { // Egyptian Pound
code: 'EGP',
symbol: 'E£'
},
'ERN': { // Nakfa
code: 'ERN',
symbol: 'Nkf'
},
'ETB': { // Ethiopian Birr
code: 'ETB',
symbol: 'Br'
},
'EUR': { // Euro
code: 'EUR',
symbol: '€'
},
'FJD': { // Fiji Dollar
code: 'FJD',
symbol: '$'
},
'FKP': { // Falkland Islands Pound
code: 'FKP',
symbol: '£'
},
'GBP': { // Pound Sterling
code: 'GBP',
symbol: '£'
},
'GEL': { // Lari
code: 'GEL',
symbol: 'ლ'
},
'GHS': { // Ghana Cedi
code: 'GHS',
symbol: 'GH₵'
},
'GIP': { // Gibraltar Pound
code: 'GIP',
symbol: '£'
},
'GMD': { // Dalasi
code: 'GMD',
symbol: 'D'
},
'GNF': { // Guinean Franc
code: 'GNF',
symbol: 'FG'
},
'GTQ': { // Quetzal
code: 'GTQ',
symbol: 'Q'
},
'GYD': { // Guyana Dollar
code: 'GYD',
symbol: '$'
},
'HKD': { // Hong Kong Dollar
code: 'HKD',
symbol: 'HK$'
},
'HNL': { // Lempira
code: 'HNL',
symbol: 'L'
},
'HRK': { // Kuna
code: 'HRK',
symbol: 'kn'
},
'HTG': { // Gourde
code: 'HTG',
symbol: 'G'
},
'HUF': { // Forint
code: 'HUF',
symbol: 'Ft'
},
'IDR': { // Rupiah
code: 'IDR',
symbol: 'Rp'
},
'ILS': { // New Israeli Sheqel
code: 'ILS',
symbol: '₪'
},
'INR': { // Indian Rupee
code: 'INR',
symbol: '₹'
},
'IQD': { // Iraqi Dinar
code: 'IQD',
symbol: 'د.ع'
},
'IRR': { // Iranian Rial
code: 'IRR',
symbol: '﷼'
},
'ISK': { // Iceland Krona
code: 'ISK',
symbol: 'kr'
},
'JMD': { // Jamaican Dollar
code: 'JMD',
symbol: '$'
},
'JOD': { // Jordanian Dinar
code: 'JOD',
symbol: 'د.أ'
},
'JPY': { // Yen
code: 'JPY',
symbol: '¥'
},
'KES': { // Kenyan Shilling
code: 'KES',
symbol: 'Ksh'
},
'KGS': { // Som
code: 'KGS',
symbol: 'С̲'
},
'KHR': { // Riel
code: 'KHR',
symbol: '៛'
},
'KMF': { // Comorian Franc
code: 'KMF',
symbol: 'CF'
},
'KPW': { // North Korean Won
code: 'KPW',
symbol: '₩'
},
'KRW': { // Won
code: 'KRW',
symbol: '₩'
},
'KWD': { // Kuwaiti Dinar
code: 'KWD',
symbol: 'د.ك'
},
'KYD': { // Cayman Islands Dollar
code: 'KYD',
symbol: '$'
},
'KZT': { // Tenge
code: 'KZT',
symbol: '₸'
},
'LAK': { // Lao Kip
code: 'LAK',
symbol: '₭'
},
'LBP': { // Lebanese Pound
code: 'LBP',
symbol: 'ل.ل.'
},
'LKR': { // Sri Lanka Rupee
code: 'LKR',
symbol: '₨'
},
'LRD': { // Liberian Dollar
code: 'LRD',
symbol: '$'
},
'LSL': { // Loti
code: 'LSL',
symbol: 'M'
},
'LYD': { // Libyan Dinar
code: 'LYD',
symbol: 'ل.د'
},
'MAD': { // Moroccan Dirham
code: 'MAD',
symbol: 'DH'
},
'MDL': { // Moldovan Leu
code: 'MDL',
symbol: 'L'
},
'MGA': { // Malagasy Ariary
code: 'MGA',
symbol: 'Ar'
},
'MKD': { // Denar
code: 'MKD',
symbol: 'ден'
},
'MMK': { // Kyat
code: 'MMK',
symbol: 'K'
},
'MNT': { // Tugrik
code: 'MNT',
symbol: '₮'
},
'MOP': { // Pataca
code: 'MOP',
symbol: 'MOP$'
},
'MRU': { // Ouguiya
code: 'MRU',
symbol: 'UM'
},
'MUR': { // Mauritius Rupee
code: 'MUR',
symbol: '₨'
},
'MVR': { // Rufiyaa
code: 'MVR',
symbol: 'Rf.'
},
'MWK': { // Malawi Kwacha
code: 'MWK',
symbol: 'K'
},
'MXN': { // Mexican Peso
code: 'MXN',
symbol: '$'
},
'MYR': { // Malaysian Ringgit
code: 'MYR',
symbol: 'RM'
},
'MZN': { // Mozambique Metical
code: 'MZN',
symbol: 'MT'
},
'NAD': { // Namibia Dollar
code: 'NAD',
symbol: '$'
},
'NGN': { // Naira
code: 'NGN',
symbol: '₦'
},
'NIO': { // Cordoba Oro
code: 'NIO',
symbol: 'C$'
},
'NOK': { // Norwegian Krone
code: 'NOK',
symbol: 'kr'
},
'NPR': { // Nepalese Rupee
code: 'NPR',
symbol: 'रु'
},
'NZD': { // New Zealand Dollar
code: 'NZD',
symbol: '$'
},
'OMR': { // Rial Omani
code: 'OMR',
symbol: 'ر.ع.'
},
'PAB': { // Balboa
code: 'PAB',
symbol: 'B/.'
},
'PEN': { // Sol
code: 'PEN',
symbol: 'S/'
},
'PGK': { // Kina
code: 'PGK',
symbol: 'K'
},
'PHP': { // Philippine Peso
code: 'PHP',
symbol: '₱'
},
'PKR': { // Pakistan Rupee
code: 'PKR',
symbol: '₨'
},
'PLN': { // Zloty
code: 'PLN',
symbol: 'zł'
},
'PYG': { // Guarani
code: 'PYG',
symbol: '₲'
},
'QAR': { // Qatari Rial
code: 'QAR',
symbol: 'ر.ق'
},
'RON': { // Romanian Leu
code: 'RON',
symbol: 'L'
},
'RSD': { // Serbian Dinar
code: 'RSD',
symbol: 'дин'
},
'RUB': { // Russian Ruble
code: 'RUB',
symbol: '₽'
},
'RWF': { // Rwanda Franc
code: 'RWF',
symbol: 'FRw'
},
'SAR': { // Saudi Riyal
code: 'SAR',
symbol: 'ر.س'
},
'SBD': { // Solomon Islands Dollar
code: 'SBD',
symbol: '$'
},
'SCR': { // Seychelles Rupee
code: 'SCR',
symbol: 'SR'
},
'SDG': { // Sudanese Pound
code: 'SDG',
symbol: 'ج.س'
},
'SEK': { // Swedish Krona
code: 'SEK',
symbol: 'kr'
},
'SGD': { // Singapore Dollar
code: 'SGD',
symbol: '$'
},
'SHP': { // Saint Helena Pound
code: 'SHP',
symbol: '£'
},
'SLL': { // Leone
code: 'SLL',
symbol: 'Le'
},
'SOS': { // Somali Shilling
code: 'SOS',
symbol: 'Sh.So.'
},
'SRD': { // Surinam Dollar
code: 'SRD',
symbol: '$'
},
'SSP': { // South Sudanese Pound
code: 'SSP',
symbol: 'SS£'
},
'STN': { // Dobra
code: 'STN',
symbol: 'Db'
},
'SVC': { // El Salvador Colon
code: 'SVC',
symbol: '₡'
},
'SYP': { // Syrian Pound
code: 'SYP',
symbol: 'LS'
},
'SZL': { // Lilangeni
code: 'SZL',
symbol: 'E'
},
'THB': { // Baht
code: 'THB',
symbol: '฿'
},
'TJS': { // Somoni
code: 'TJS',
symbol: 'SM'
},
'TMT': { // Turkmenistan New Manat
code: 'TMT',
symbol: 'T'
},
'TND': { // Tunisian Dinar
code: 'TND',
symbol: 'د.ت'
},
'TOP': { // Paanga
code: 'TOP',
symbol: 'T$'
},
'TRY': { // Turkish Lira
code: 'TRY',
symbol: '₺'
},
'TTD': { // Trinidad and Tobago Dollar
code: 'TTD',
symbol: '$'
},
'TWD': { // New Taiwan Dollar
code: 'TWD',
symbol: 'NT$'
},
'TZS': { // Tanzanian Shilling
code: 'TZS',
symbol: 'TSh'
},
'UAH': { // Hryvnia
code: 'UAH',
symbol: '₴'
},
'UGX': { // Uganda Shilling
code: 'UGX',
symbol: 'USh'
},
'USD': { // US Dollar
code: 'USD',
symbol: '$'
},
'UYU': { // Peso Uruguayo
code: 'UYU',
symbol: '$'
},
'UZS': { // Uzbekistan Sum
code: 'UZS'
},
'VES': { // Bolívar Soberano
code: 'VES',
symbol: 'Bs.S.'
},
'VND': { // Dong
code: 'VND',
symbol: '₫'
},
'VUV': { // Vatu
code: 'VUV',
symbol: 'VT'
},
'WST': { // Tala
code: 'WST',
symbol: 'WS$'
},
'XAF': { // CFA Franc BEAC
code: 'XAF'
},
'XCD': { // East Caribbean Dollar
code: 'XCD',
symbol: '$'
},
'XOF': { // CFA Franc BCEAO
code: 'XOF'
},
'XPF': { // CFP Franc
code: 'XPF'
},
'YER': { // Yemeni Rial
code: 'YER',
symbol: 'ر.ي'
},
'ZAR': { // Rand
code: 'ZAR',
symbol: 'R'
},
'ZMW': { // Zambian Kwacha
code: 'ZMW',
symbol: 'K'
},
'ZWL': { // Zimbabwe Dollar
code: 'ZWL',
symbol: '$'
}
};
export default { export default {
parentAccountCurrencyPlacehodler: parentAccountCurrencyPlacehodler, parentAccountCurrencyPlacehodler: parentAccountCurrencyPlacehodler,
defaultCurrencySymbol: defaultCurrencySymbol,
all: allCurrencies all: allCurrencies
}; };
+15
View File
@@ -1,3 +1,4 @@
import currency from "../consts/currency.js";
import settings from "../lib/settings.js"; import settings from "../lib/settings.js";
import utils from "../lib/utils.js"; import utils from "../lib/utils.js";
@@ -49,6 +50,20 @@ export default function ({i18n}, value, currencyCode) {
} else if (currencyDisplayMode === 'name') { } else if (currencyDisplayMode === 'name') {
const currencyName = i18n.t(`currency.${currencyCode}`); const currencyName = i18n.t(`currency.${currencyCode}`);
return `${value} ${currencyName}`; return `${value} ${currencyName}`;
} else if (currencyDisplayMode === 'symbol') {
const currencyInfo = currency.all[currencyCode];
let currencySymbol = currency.defaultCurrencySymbol;
if (currencyInfo && currencyInfo.symbol) {
currencySymbol = currencyInfo.symbol;
} else if (currencyInfo && currencyInfo.code) {
currencySymbol = currencyInfo.code;
}
return i18n.t('format.currency.symbol', {
amount: value,
symbol: currencySymbol
});
} else { } else {
return value; return value;
} }
+1 -1
View File
@@ -10,7 +10,7 @@ const defaultSettings = {
applicationLockWebAuthn: false, applicationLockWebAuthn: false,
autoUpdateExchangeRatesData: true, autoUpdateExchangeRatesData: true,
thousandsSeparator: true, thousandsSeparator: true,
currencyDisplayMode: 'code', // or 'none' or 'name' currencyDisplayMode: 'code', // or 'none' or 'name' or 'symbol'
showAccountBalance: true, showAccountBalance: true,
animate: false, animate: false,
autoDarkMode: true autoDarkMode: true
+4
View File
@@ -13,6 +13,9 @@ export default {
}, },
'datetime': { 'datetime': {
'long': 'MM/DD/YYYY HH:mm:ss', 'long': 'MM/DD/YYYY HH:mm:ss',
},
'currency': {
'symbol': '{amount} {symbol}'
} }
}, },
'currency': { 'currency': {
@@ -373,6 +376,7 @@ export default {
'Currency Display Mode': 'Currency Display Mode', 'Currency Display Mode': 'Currency Display Mode',
'Currency Code': 'Currency Code', 'Currency Code': 'Currency Code',
'Currency Name': 'Currency Name', 'Currency Name': 'Currency Name',
'Currency Symbol': 'Currency Symbol',
'Show Account Balance': 'Show Account Balance', 'Show Account Balance': 'Show Account Balance',
'Enable Animate': 'Enable Animate', 'Enable Animate': 'Enable Animate',
'Enable Auto Dark Mode': 'Enable Auto Dark Mode', 'Enable Auto Dark Mode': 'Enable Auto Dark Mode',
+4
View File
@@ -13,6 +13,9 @@ export default {
}, },
'datetime': { 'datetime': {
'long': 'YYYY年MM月DD日 HH:mm:ss', 'long': 'YYYY年MM月DD日 HH:mm:ss',
},
'currency': {
'symbol': '{symbol} {amount}'
} }
}, },
'currency': { 'currency': {
@@ -373,6 +376,7 @@ export default {
'Currency Display Mode': '货币显示模式', 'Currency Display Mode': '货币显示模式',
'Currency Code': '货币代码', 'Currency Code': '货币代码',
'Currency Name': '货币名称', 'Currency Name': '货币名称',
'Currency Symbol': '货币符号',
'Show Account Balance': '显示账户余额', 'Show Account Balance': '显示账户余额',
'Enable Animate': '启用动画', 'Enable Animate': '启用动画',
'Enable Auto Dark Mode': '启用自动深色模式', 'Enable Auto Dark Mode': '启用自动深色模式',
+6 -4
View File
@@ -76,12 +76,14 @@ Vue.prototype.$locale = {
const allCurrencyCodes = currency.all; const allCurrencyCodes = currency.all;
const allCurrencies = []; const allCurrencies = [];
for (let i = 0; i < allCurrencyCodes.length; i++) { for (let currencyCode in allCurrencyCodes) {
const code = allCurrencyCodes[i]; if (!Object.prototype.hasOwnProperty.call(allCurrencyCodes, currencyCode)) {
return;
}
allCurrencies.push({ allCurrencies.push({
code: code, code: currencyCode,
displayName: i18n.t(`currency.${code}`) displayName: i18n.t(`currency.${currencyCode}`)
}); });
} }
+1
View File
@@ -51,6 +51,7 @@
<option value="none">{{ $t('None') }}</option> <option value="none">{{ $t('None') }}</option>
<option value="code">{{ $t('Currency Code') }}</option> <option value="code">{{ $t('Currency Code') }}</option>
<option value="name">{{ $t('Currency Name') }}</option> <option value="name">{{ $t('Currency Name') }}</option>
<option value="symbol">{{ $t('Currency Symbol') }}</option>
</select> </select>
</f7-list-item> </f7-list-item>