diff --git a/src/consts/currency.js b/src/consts/currency.js index 0c2ff94a..f70a92e2 100644 --- a/src/consts/currency.js +++ b/src/consts/currency.js @@ -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', //Pa’anga - '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': { // Pa’anga + 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 }; diff --git a/src/filters/currency.js b/src/filters/currency.js index 9b7517f1..7772e4cf 100644 --- a/src/filters/currency.js +++ b/src/filters/currency.js @@ -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; } diff --git a/src/lib/settings.js b/src/lib/settings.js index 7060c59e..5de39c1d 100644 --- a/src/lib/settings.js +++ b/src/lib/settings.js @@ -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 diff --git a/src/locales/en.js b/src/locales/en.js index 9830fc89..00874f22 100644 --- a/src/locales/en.js +++ b/src/locales/en.js @@ -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', diff --git a/src/locales/zh_Hans.js b/src/locales/zh_Hans.js index 8f52aee6..87728b1e 100644 --- a/src/locales/zh_Hans.js +++ b/src/locales/zh_Hans.js @@ -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': '启用自动深色模式', diff --git a/src/mobile-main.js b/src/mobile-main.js index fd4748b0..35f8ff45 100644 --- a/src/mobile-main.js +++ b/src/mobile-main.js @@ -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}`) }); } diff --git a/src/views/mobile/Settings.vue b/src/views/mobile/Settings.vue index 8d9ffb03..e6b53879 100644 --- a/src/views/mobile/Settings.vue +++ b/src/views/mobile/Settings.vue @@ -51,6 +51,7 @@ +