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