diff -rupN currency_api/currency_api.module currency_api/currency_api.module
--- currency_api/currency_api.module	2008-10-20 17:31:43.000000000 +0200
+++ currency_api/currency_api.module	2009-01-20 22:08:40.000000000 +0100
@@ -233,355 +233,212 @@ function currency_api_get_desc($currency
   $list = currency_api_get_list();
   if (isset($list[$currency])) {
     return $list[$currency];
-    }
+  }
   return FALSE;
 }
 
-function currency_api_get_list() {
-  $currency = array(
-    'AFA' => t('Afghanistani Afghani (AFA)'),
-    'ALL' => t('Albanian Lek (ALL)'),
-    'DZD' => t('Algerian Dinar (DZD)'),
-    'ARS' => t('Argentine Peso (ARS)'),
-    'AWG' => t('Aruba Florin (AWG)'),
-    'AUD' => t('Australian Dollar (AUD)'),
-    'AZN' => t('Azerbaijan New Maneat (AZN)'),
-    'BSD' => t('Bahamian Dollar (BSD)'),
-    'BHD' => t('Bahraini Dinar (BHD)'),
-    'BDT' => t('Bangladeshi Taka (BDT)'),
-    'BBD' => t('Barbadian Dollar (BBD)'),
-    'BYR' => t('Belarus Ruble (BYR)'),
-    'BZD' => t('Belize Dollar (BZD)'),
-    'BMD' => t('Bermuda Dollar (BMD)'),
-    'BTN' => t('Bhutanese Ngultrum (BTN)'),
-    'BOB' => t('Bolivian Boliviano (BOB)'),
-    'BAM' => t('Bosnia and Herzegovina Convertible Marka (BAM)'),
-    'BWP' => t('Botswana Pula (BWP)'),
-    'BRL' => t('Brazilian Real (BRL)'),
-    'GBP' => t('British Pound (GBP)'),
-    'BND' => t('Brunei Dollar (BND)'),
-    'BGN' => t('Bulgarian Lev (BGN)'),
-    'BIF' => t('Burundi Franc (BIF)'),
-    'KHR' => t('Cambodia Riel (KHR)'),
-    'CAD' => t('Canadian Dollar (CAD)'),
-    'CVE' => t('Cape Verdean Escudo (CVE)'),
-    'KYD' => t('Cayman Islands Dollar (KYD)'),
-    'XOF' => t('CFA Franc (BCEAO) (XOF)'),
-    'XAF' => t('CFA Franc (BEAC) (XAF)'),
-    'CLP' => t('Chilean Peso (CLP)'),
-    'CNY' => t('Chinese Yuan (CNY)'),
-    'COP' => t('Colombian Peso (COP)'),
-    'KMF' => t('Comoros Franc (KMF)'),
-    'CRC' => t('Costa Rica Colon (CRC)'),
-    'HRK' => t('Croatian Kuna (HRK)'),
-    'CUP' => t('Cuban Peso (CUP)'),
-    'CYP' => t('Cyprus Pound (CYP)'),
-    'CZK' => t('Czech Koruna (CZK)'),
-    'DKK' => t('Danish Krone (DKK)'),
-    'DJF' => t('Dijiboutian Franc (DJF)'),
-    'DOP' => t('Dominican Peso (DOP)'),
-    'XCD' => t('East Caribbean Dollar (XCD)'),
-    'EGP' => t('Egyptian Pound (EGP)'),
-    'SVC' => t('El Salvador Colon (SVC)'),
-    'ERN' => t('Eritrean Nakfa (ERN)'),
-    'EEK' => t('Estonian Kroon (EEK)'),
-    'ETB' => t('Ethiopian Birr (ETB)'),
-    'EUR' => t('Euro (EUR)'),
-    'FKP' => t('Falkland Islands Pound (FKP)'),
-    'FJD' => t('Fiji Dollar (FJD)'),
-    'GMD' => t('Gambian Dalasi (GMD)'),
-    'GHC' => t('Ghanian Cedi (GHC)'),
-    'GIP' => t('Gibraltar Pound (GIP)'),
-    'XAU' => t('Gold Ounces (XAU)'),
-    'GTQ' => t('Guatemala Quetzal (GTQ)'),
-    'GGP' => t('Guernsey Pound (GGP)'),
-    'GNF' => t('Guinea Franc (GNF)'),
-    'GYD' => t('Guyana Dollar (GYD)'),
-    'HTG' => t('Haiti Gourde (HTG)'),
-    'HNL' => t('Honduras Lempira (HNL)'),
-    'HKD' => t('Hong Kong Dollar (HKD)'),
-    'HUF' => t('Hungarian Forint (HUF)'),
-    'ISK' => t('Iceland Krona (ISK)'),
-    'INR' => t('Indian Rupee (INR)'),
-    'IDR' => t('Indonesian Rupiah (IDR)'),
-    'IRR' => t('Iran Rial (IRR)'),
-    'IQD' => t('Iraqi Dinar (IQD)'),
-    'ILS' => t('Israeli Shekel (ILS)'),
-    'JMD' => t('Jamaican Dollar (JMD)'),
-    'JPY' => t('Japanese Yen (JPY)'),
-    'JOD' => t('Jordanian Dinar (JOD)'),
-    'KZT' => t('Kazakhstan Tenge (KZT)'),
-    'KES' => t('Kenyan Shilling (KES)'),
-    'KRW' => t('Korean Won (KRW)'),
-    'KWD' => t('Kuwaiti Dinar (KWD)'),
-    'KGS' => t('Kyrgyzstan Som (KGS)'),
-    'LAK' => t('Lao Kip (LAK)'),
-    'LVL' => t('Latvian Lat (LVL)'),
-    'LBP' => t('Lebanese Pound (LBP)'),
-    'LSL' => t('Lesotho Loti (LSL)'),
-    'LRD' => t('Liberian Dollar (LRD)'),
-    'LYD' => t('Libyan Dinar (LYD)'),
-    'LTL' => t('Lithuanian Lita (LTL)'),
-    'MOP' => t('Macau Pataca (MOP)'),
-    'MKD' => t('Macedonian Denar (MKD)'),
-    'MGA' => t('iraimbilanja'),
-    'MWK' => t('Malawian Kwacha (MWK)'),
-    'MYR' => t('Malaysian Ringgit (MYR)'),
-    'MVR' => t('Maldives Rufiyaa (MVR)'),
-    'MTL' => t('Maltese Lira (MTL)'),
-    'MRO' => t('Mauritania Ougulya (MRO)'),
-    'MUR' => t('Mauritius Rupee (MUR)'),
-    'MXN' => t('Mexican Peso (MXN)'),
-    'MDL' => t('Moldovan Leu (MDL)'),
-    'MNT' => t('Mongolian Tugrik (MNT)'),
-    'MAD' => t('Moroccan Dirham (MAD)'),
-    'MZM' => t('Mozambique Metical (MZM)'),
-    'MMK' => t('Myanmar Kyat (MMK)'),
-    'NAD' => t('Namibian Dollar (NAD)'),
-    'NPR' => t('Nepalese Rupee (NPR)'),
-    'ANG' => t('Neth Antilles Guilder (ANG)'),
-    'NZD' => t('New Zealand Dollar (NZD)'),
-    'NIO' => t('Nicaragua Cordoba (NIO)'),
-    'NGN' => t('Nigerian Naira (NGN)'),
-    'KPW' => t('North Korean Won (KPW)'),
-    'NOK' => t('Norwegian Krone (NOK)'),
-    'OMR' => t('Omani Rial (OMR)'),
-    'XPF' => t('Pacific Franc (XPF)'),
-    'PKR' => t('Pakistani Rupee (PKR)'),
-    'XPD' => t('Palladium Ounces (XPD)'),
-    'PAB' => t('Panama Balboa (PAB)'),
-    'PGK' => t('Papua New Guinea Kina (PGK)'),
-    'PYG' => t('Paraguayan Guarani (PYG)'),
-    'PEN' => t('Peruvian Nuevo Sol (PEN)'),
-    'PHP' => t('Philippine Peso (PHP)'),
-    'XPT' => t('Platinum Ounces (XPT)'),
-    'PLN' => t('Polish Zloty (PLN)'),
-    'QAR' => t('Qatar Rial (QAR)'),
-    'ROL' => t('Romanian Leu (ROL)'),
-    'RUB' => t('Russian Rouble (RUB)'),
-    'RWF' => t('Rwandese Franc (RWF)'),
-    'WST' => t('Samoan Tala (WST)'),
-    'STD' => t('Sao Tome Dobra (STD)'),
-    'SAR' => t('Saudi Arabian Riyal (SAR)'),
-    'SCR' => t('Seychelles Rupee (SCR)'),
-    'RSD' => t('Serbian Dinar (RSD)'),
-    'SLL' => t('Sierra Leone Leone (SLL)'),
-    'XAG' => t('Silver Ounces (XAG)'),
-    'SGD' => t('Singapore Dollar (SGD)'),
-    'SKK' => t('Slovak Koruna (SKK)'),
-    'SBD' => t('Solomon Islands Dollar (SBD)'),
-    'SOS' => t('Somali Shilling (SOS)'),
-    'ZAR' => t('South African Rand (ZAR)'),
-    'LKR' => t('Sri Lanka Rupee (LKR)'),
-    'SHP' => t('St Helena Pound (SHP)'),
-    'SDD' => t('Sudanese Dinar (SDD)'),
-    'SRD' => t('Surinam Dollar (SRD)'),
-    'SZL' => t('Swaziland Lilageni (SZL)'),
-    'SEK' => t('Swedish Krona (SEK)'),
-    'CHF' => t('Swiss Franc (CHF)'),
-    'SYP' => t('Syrian Pound (SYP)'),
-    'TWD' => t('Taiwan Dollar (TWD)'),
-    'TZS' => t('Tanzanian Shilling (TZS)'),
-    'THB' => t('Thai Baht (THB)'),
-    'TOP' => t('Tonga Pa\'anga (TOP)'),
-    'TTD' => t('Trinidad & Tobago Dollar (TTD)'),
-    'TND' => t('Tunisian Dinar (TND)'),
-    'TRY' => t('New Turkish Lira (TRY)'),
-    'USD' => t('U.S. Dollar (USD)'),
-    'AED' => t('UAE Dirham (AED)'),
-    'UGX' => t('Ugandan Shilling (UGX)'),
-    'UAH' => t('Ukraine Hryvnia (UAH)'),
-    'UYU' => t('Uruguayan New Peso (UYU)'),
-    'UZS' => t('Uzbekistan Sum (UZS)'),
-    'VUV' => t('Vanuatu Vatu (VUV)'),
-    'VEB' => t('Venezuelan Bolivar (VEB)'),
-    'VND' => t('Vietnam Dong (VND)'),
-    'YER' => t('Yemen Riyal (YER)'),
-    'YUM' => t('Yugoslav Dinar (YUM)'),
-    'ZMK' => t('Zambian Kwacha (ZMK)'),
-    'ZWD' => t('Zimbabwe Dollar (ZWD)'),
-  );
-
-  return $currency;
-}
-
-function currency_api_get_symbols() {
-  $currency = array(
+/**
+ * Returns an array of all currency properties.
+ */
+function currency_api_get_currencies() {
+  return array(
     // There is a new sign as of January 2003. It does not yet have a Unicode
     // encoding yet (see http://std.dkuug.dk/jtc1/sc2/wg2/docs/n2640.pdf).
-    'AFA' => t('afghani'),
-    'ALL' => t('Lek'),
-    'DZD' => t('دج'),
-    'ARS' => t('$'),
-    'AWG' => t('ƒ'),
-    'AUD' => t('$'),
-    'AZN' => t('ман'),
-    'BSD' => t('D'),
-    'BHD' => t('.د.ب'),
-    'BDT' => t('৳, ৲'),
-    'BBD' => t('Bds$'),
-    'BYR' => t('p.'),
-    'BZD' => t('BZ$'),
-    'BMD' => t('$'),
-    'BTN' => t('Nu.'),
-    'BOB' => t('$b'),
-    'BAM' => t('KM'),
-    'BWP' => t('P'),
-    'BRL' => t('R$'),
-    'GBP' => t('£'),
-    'BND' => t('$'),
-    'BGN' => t('лв'),
-    'BIF' => t('FBu'),
-    'KHR' => t('៛'),
-    'CAD' => t('$'),
-    'CVE' => t('Esc'),
-    'KYD' => t('$'),
-    'XOF' => t('F'),
-    'XAF' => t('F'),
-    'CLP' => t('$'),
-    'CNY' => t('元'),
-    'COP' => t('$'),
-    'KMF' => t('F'),
-    'CRC' => t('₡'),
-    'HRK' => t('kn'),
-    'CUP' => t('₱'),
-    'CYP' => t('£'),
-    'CZK' => t('Kč'),
-    'DKK' => t('kr'),
-    'DJF' => t('Fdj'),
-    'DOP' => t('RD$'),
-    'XCD' => t('$'),
-    'EGP' => t('LE'),
-    'SVC' => t('$'),
-    'ERN' => t('Nfk'),
-    'EEK' => t('kr'),
-    'ETB' => t('Br'),
-    'EUR' => t('€'),
-    'FKP' => t('£'),
-    'FJD' => t('$'),
-    'GMD' => t('D'),
-    'GHC' => t('¢'),
-    'GIP' => t('£'),
-    'XAU' => t('XAU'),
-    'GTQ' => t('Q'),
-    'GGP' => t('£'),
-    'GNF' => t('FG'),
-    'GYD' => t('$'),
-    'HTG' => t('G'),
-    'HNL' => t('L'),
-    'HKD' => t('HK$'),
-    'HUF' => t('Ft'),
-    'ISK' => t('kr'),
-    'INR' => t('₨'),
-    'IDR' => t('Rp'),
-    'IRR' => t('﷼'),
-    'IQD' => t('ع.د'),
-    'ILS' => t('₪'),
-    'JMD' => t('J$'),
-    'JPY' => t('¥'),
-    'JOD' => t('din.'),
-    'KZT' => t('лв'),
-    'KES' => t('KSh'),
-    'KRW' => t('₩'),
-    'KWD' => t('د.ك'),
-    'KGS' => t('лв'),
-    'LAK' => t('₭'),
-    'LVL' => t('Ls'),
-    'LBP' => t('£'),
+    'AFA' => array('name' => t('Afghanistani Afghani (AFA)'), 'symbol' => t('afghani'), 'decimals' => 2),
+    'ALL' => array('name' => t('Albanian Lek (ALL)'), 'symbol' => t('Lek'), 'decimals' => 2),
+    'DZD' => array('name' => t('Algerian Dinar (DZD)'), 'symbol' => t('دج'), 'decimals' => 2),
+    'ARS' => array('name' => t('Argentine Peso (ARS)'), 'symbol' => t('$'), 'decimals' => 2),
+    'AWG' => array('name' => t('Aruba Florin (AWG)'), 'symbol' => t('ƒ'), 'decimals' => 2),
+    'AUD' => array('name' => t('Australian Dollar (AUD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'AZN' => array('name' => t('Azerbaijan New Maneat (AZN)'), 'symbol' => t('ман'), 'decimals' => 2),
+    'BSD' => array('name' => t('Bahamian Dollar (BSD)'), 'symbol' => t('D'), 'decimals' => 2),
+    'BHD' => array('name' => t('Bahraini Dinar (BHD)'), 'symbol' => t('.د.ب'), 'decimals' => 2),
+    'BDT' => array('name' => t('Bangladeshi Taka (BDT)'), 'symbol' => t('৳, ৲'), 'decimals' => 2),
+    'BBD' => array('name' => t('Barbadian Dollar (BBD)'), 'symbol' => t('Bds$'), 'decimals' => 2),
+    'BYR' => array('name' => t('Belarus Ruble (BYR)'), 'symbol' => t('p.'), 'decimals' => 2),
+    'BZD' => array('name' => t('Belize Dollar (BZD)'), 'symbol' => t('BZ$'), 'decimals' => 2),
+    'BMD' => array('name' => t('Bermuda Dollar (BMD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'BTN' => array('name' => t('Bhutanese Ngultrum (BTN)'), 'symbol' => t('Nu.'), 'decimals' => 2),
+    'BOB' => array('name' => t('Bolivian Boliviano (BOB)'), 'symbol' => t('$b'), 'decimals' => 2),
+    'BAM' => array('name' => t('Bosnia and Herzegovina Convertible Marka (BAM)'), 'symbol' => t('KM'), 'decimals' => 2),
+    'BWP' => array('name' => t('Botswana Pula (BWP)'), 'symbol' => t('P'), 'decimals' => 2),
+    'BRL' => array('name' => t('Brazilian Real (BRL)'), 'symbol' => t('R$'), 'decimals' => 2),
+    'GBP' => array('name' => t('British Pound (GBP)'), 'symbol' => t('£'), 'decimals' => 2),
+    'BND' => array('name' => t('Brunei Dollar (BND)'), 'symbol' => t('$'), 'decimals' => 2),
+    'BGN' => array('name' => t('Bulgarian Lev (BGN)'), 'symbol' => t('лв'), 'decimals' => 2),
+    'BIF' => array('name' => t('Burundi Franc (BIF)'), 'symbol' => t('FBu'), 'decimals' => 2),
+    'KHR' => array('name' => t('Cambodia Riel (KHR)'), 'symbol' => t('៛'), 'decimals' => 2),
+    'CAD' => array('name' => t('Canadian Dollar (CAD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'CVE' => array('name' => t('Cape Verdean Escudo (CVE)'), 'symbol' => t('Esc'), 'decimals' => 2),
+    'KYD' => array('name' => t('Cayman Islands Dollar (KYD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'XOF' => array('name' => t('CFA Franc (BCEAO) (XOF)'), 'symbol' => t('F'), 'decimals' => 2),
+    'XAF' => array('name' => t('CFA Franc (BEAC) (XAF)'), 'symbol' => t('F'), 'decimals' => 2),
+    'CLP' => array('name' => t('Chilean Peso (CLP)'), 'symbol' => t('$'), 'decimals' => 2),
+    'CNY' => array('name' => t('Chinese Yuan (CNY)'), 'symbol' => t('元'), 'decimals' => 2),
+    'COP' => array('name' => t('Colombian Peso (COP)'), 'symbol' => t('$'), 'decimals' => 2),
+    'KMF' => array('name' => t('Comoros Franc (KMF)'), 'symbol' => t('F'), 'decimals' => 2),
+    'CRC' => array('name' => t('Costa Rica Colon (CRC)'), 'symbol' => t('₡'), 'decimals' => 2),
+    'HRK' => array('name' => t('Croatian Kuna (HRK)'), 'symbol' => t('kn'), 'decimals' => 2),
+    'CUP' => array('name' => t('Cuban Peso (CUP)'), 'symbol' => t('₱'), 'decimals' => 2),
+    'CYP' => array('name' => t('Cyprus Pound (CYP)'), 'symbol' => t('£'), 'decimals' => 2),
+    'CZK' => array('name' => t('Czech Koruna (CZK)'), 'symbol' => t('Kč'), 'decimals' => 2),
+    'DKK' => array('name' => t('Danish Krone (DKK)'), 'symbol' => t('kr'), 'decimals' => 2),
+    'DJF' => array('name' => t('Dijiboutian Franc (DJF)'), 'symbol' => t('Fdj'), 'decimals' => 2),
+    'DOP' => array('name' => t('Dominican Peso (DOP)'), 'symbol' => t('RD$'), 'decimals' => 2),
+    'XCD' => array('name' => t('East Caribbean Dollar (XCD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'EGP' => array('name' => t('Egyptian Pound (EGP)'), 'symbol' => t('LE'), 'decimals' => 2),
+    'SVC' => array('name' => t('El Salvador Colon (SVC)'), 'symbol' => t('$'), 'decimals' => 2),
+    'ERN' => array('name' => t('Eritrean Nakfa (ERN)'), 'symbol' => t('Nfk'), 'decimals' => 2),
+    'EEK' => array('name' => t('Estonian Kroon (EEK)'), 'symbol' => t('kr'), 'decimals' => 2),
+    'ETB' => array('name' => t('Ethiopian Birr (ETB)'), 'symbol' => t('Br'), 'decimals' => 2),
+    'EUR' => array('name' => t('Euro (EUR)'), 'symbol' => t('€'), 'decimals' => 2),
+    'FKP' => array('name' => t('Falkland Islands Pound (FKP)'), 'symbol' => t('£'), 'decimals' => 2),
+    'FJD' => array('name' => t('Fiji Dollar (FJD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'GMD' => array('name' => t('Gambian Dalasi (GMD)'), 'symbol' => t('D'), 'decimals' => 2),
+    'GHC' => array('name' => t('Ghanian Cedi (GHC)'), 'symbol' => t('¢'), 'decimals' => 2),
+    'GIP' => array('name' => t('Gibraltar Pound (GIP)'), 'symbol' => t('£'), 'decimals' => 2),
+    'XAU' => array('name' => t('Gold Ounces (XAU)'), 'symbol' => t('XAU'), 'decimals' => 2),
+    'GTQ' => array('name' => t('Guatemala Quetzal (GTQ)'), 'symbol' => t('Q'), 'decimals' => 2),
+    'GGP' => array('name' => t('Guernsey Pound (GGP)'), 'symbol' => t('£'), 'decimals' => 2),
+    'GNF' => array('name' => t('Guinea Franc (GNF)'), 'symbol' => t('FG'), 'decimals' => 2),
+    'GYD' => array('name' => t('Guyana Dollar (GYD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'HTG' => array('name' => t('Haiti Gourde (HTG)'), 'symbol' => t('G'), 'decimals' => 2),
+    'HNL' => array('name' => t('Honduras Lempira (HNL)'), 'symbol' => t('L'), 'decimals' => 2),
+    'HKD' => array('name' => t('Hong Kong Dollar (HKD)'), 'symbol' => t('HK$'), 'decimals' => 2),
+    'HUF' => array('name' => t('Hungarian Forint (HUF)'), 'symbol' => t('Ft'), 'decimals' => 2),
+    'ISK' => array('name' => t('Iceland Krona (ISK)'), 'symbol' => t('kr'), 'decimals' => 2),
+    'INR' => array('name' => t('Indian Rupee (INR)'), 'symbol' => t('₨'), 'decimals' => 2),
+    'IDR' => array('name' => t('Indonesian Rupiah (IDR)'), 'symbol' => t('Rp'), 'decimals' => 2),
+    'IRR' => array('name' => t('Iran Rial (IRR)'), 'symbol' => t('﷼'), 'decimals' => 2),
+    'IQD' => array('name' => t('Iraqi Dinar (IQD)'), 'symbol' => t('ع.د'), 'decimals' => 2),
+    'ILS' => array('name' => t('Israeli Shekel (ILS)'), 'symbol' => t('₪'), 'decimals' => 2),
+    'JMD' => array('name' => t('Jamaican Dollar (JMD)'), 'symbol' => t('J$'), 'decimals' => 2),
+    'JPY' => array('name' => t('Japanese Yen (JPY)'), 'symbol' => t('¥'), 'decimals' => 0),
+    'JOD' => array('name' => t('Jordanian Dinar (JOD)'), 'symbol' => t('din.'), 'decimals' => 2),
+    'KZT' => array('name' => t('Kazakhstan Tenge (KZT)'), 'symbol' => t('лв'), 'decimals' => 2),
+    'KES' => array('name' => t('Kenyan Shilling (KES)'), 'symbol' => t('KSh'), 'decimals' => 2),
+    'KRW' => array('name' => t('Korean Won (KRW)'), 'symbol' => t('₩'), 'decimals' => 2),
+    'KWD' => array('name' => t('Kuwaiti Dinar (KWD)'), 'symbol' => t('د.ك'), 'decimals' => 2),
+    'KGS' => array('name' => t('Kyrgyzstan Som (KGS)'), 'symbol' => t('лв'), 'decimals' => 2),
+    'LAK' => array('name' => t('Lao Kip (LAK)'), 'symbol' => t('₭'), 'decimals' => 2),
+    'LVL' => array('name' => t('Latvian Lat (LVL)'), 'symbol' => t('Ls'), 'decimals' => 2),
+    'LBP' => array('name' => t('Lebanese Pound (LBP)'), 'symbol' => t('£'), 'decimals' => 2),
     // L for singular, M for plural
-    'LSL' => t('M'),
-    'LRD' => t('$'),
-    'LYD' => t('ل.د'),
-    'LTL' => t('Lt'),
-    'MOP' => t('MOP$'),
-    'MKD' => t('ден'),
+    'LSL' => array('name' => t('Lesotho Loti (LSL)'), 'symbol' => t('M'), 'decimals' => 2),
+    'LRD' => array('name' => t('Liberian Dollar (LRD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'LYD' => array('name' => t('Libyan Dinar (LYD)'), 'symbol' => t('ل.د'), 'decimals' => 2),
+    'LTL' => array('name' => t('Lithuanian Lita (LTL)'), 'symbol' => t('Lt'), 'decimals' => 2),
+    'MOP' => array('name' => t('Macau Pataca (MOP)'), 'symbol' => t('MOP$'), 'decimals' => 2),
+    'MKD' => array('name' => t('Macedonian Denar (MKD)'), 'symbol' => t('ден'), 'decimals' => 2),
     // Non-decimal currency.
-    'MGA' => t('iraimbilanja'),
-    'MWK' => t('MK'),
-    'MYR' => t('RM'),
-    'MVR' => t('Rf'),
-    'MTL' => t('Lm'),
+    'MGA' => array('name' => t('iraimbilanja'), 'symbol' => t('iraimbilanja'), 'decimals' => 2),
+    'MWK' => array('name' => t('Malawian Kwacha (MWK)'), 'symbol' => t('MK'), 'decimals' => 2),
+    'MYR' => array('name' => t('Malaysian Ringgit (MYR)'), 'symbol' => t('RM'), 'decimals' => 2),
+    'MVR' => array('name' => t('Maldives Rufiyaa (MVR)'), 'symbol' => t('Rf'), 'decimals' => 2),
+    'MTL' => array('name' => t('Maltese Lira (MTL)'), 'symbol' => t('Lm'), 'decimals' => 2),
     // Non-decimal currency.
-    'MRO' => t('UM'),
-    'MUR' => t('₨'),
-    'MXN' => t('$'),
-    'MDL' => t('lei'),
-    'MNT' => t('₮'),
-    'MAD' => t('د.م.'),
-    'MZM' => t('MT'),
-    'MMK' => t('K'),
-    'NAD' => t('$'),
-    'NPR' => t('₨'),
-    'ANG' => t('ƒ'),
-    'NZD' => t('$'),
-    'NIO' => t('C$'),
-    'NGN' => t('₦'),
-    'KPW' => t('₩'),
-    'NOK' => t('kr'),
-    'OMR' => t('﷼'),
-    'XPF' => t('F'),
-    'PKR' => t('₨'),
-    'XPD' => t('XPD'),
-    'PAB' => t('B/.'),
-    'PGK' => t('K'),
-    'PYG' => t('Gs'),
-    'PEN' => t('S/.'),
-    'PHP' => t('Php'),
-    'XPT' => t('XPT'),
-    'PLN' => t('zł'),
-    'QAR' => t('﷼'),
-    'ROL' => t('lei'),
-    'RUB' => t('руб'),
-    'RWF' => t('RF'),
-    'WST' => t('WS$'),
-    'STD' => t('Db'),
-    'SAR' => t('﷼'),
-    'SCR' => t('₨'),
-    'RSD' => t('Дин.'),
-    'SLL' => t('Le'),
-    'XAG' => t('XAG'),
-    'SGD' => t('$'),
-    'SKK' => t('SIT'),
-    'SBD' => t('$'),
-    'SOS' => t('S'),
-    'ZAR' => t('R'),
-    'LKR' => t('₨'),
-    'SHP' => t('£'),
-    'SDD' => t('£Sd'),
-    'SRD' => t('$'),
+    'MRO' => array('name' => t('Mauritania Ougulya (MRO)'), 'symbol' => t('UM'), 'decimals' => 0),
+    'MUR' => array('name' => t('Mauritius Rupee (MUR)'), 'symbol' => t('₨'), 'decimals' => 2),
+    'MXN' => array('name' => t('Mexican Peso (MXN)'), 'symbol' => t('$'), 'decimals' => 2),
+    'MDL' => array('name' => t('Moldovan Leu (MDL)'), 'symbol' => t('lei'), 'decimals' => 2),
+    'MNT' => array('name' => t('Mongolian Tugrik (MNT)'), 'symbol' => t('₮'), 'decimals' => 2),
+    'MAD' => array('name' => t('Moroccan Dirham (MAD)'), 'symbol' => t('د.م.'), 'decimals' => 2),
+    'MZM' => array('name' => t('Mozambique Metical (MZM)'), 'symbol' => t('MT'), 'decimals' => 2),
+    'MMK' => array('name' => t('Myanmar Kyat (MMK)'), 'symbol' => t('K'), 'decimals' => 2),
+    'NAD' => array('name' => t('Namibian Dollar (NAD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'NPR' => array('name' => t('Nepalese Rupee (NPR)'), 'symbol' => t('₨'), 'decimals' => 2),
+    'ANG' => array('name' => t('Neth Antilles Guilder (ANG)'), 'symbol' => t('ƒ'), 'decimals' => 2),
+    'TRY' => array('name' => t('New Turkish Lira (TRY)'), 'symbol' => t('YTL'), 'decimals' => 2),
+    'NZD' => array('name' => t('New Zealand Dollar (NZD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'NIO' => array('name' => t('Nicaragua Cordoba (NIO)'), 'symbol' => t('C$'), 'decimals' => 2),
+    'NGN' => array('name' => t('Nigerian Naira (NGN)'), 'symbol' => t('₦'), 'decimals' => 2),
+    'KPW' => array('name' => t('North Korean Won (KPW)'), 'symbol' => t('₩'), 'decimals' => 2),
+    'NOK' => array('name' => t('Norwegian Krone (NOK)'), 'symbol' => t('kr'), 'decimals' => 2),
+    'OMR' => array('name' => t('Omani Rial (OMR)'), 'symbol' => t('﷼'), 'decimals' => 2),
+    'XPF' => array('name' => t('Pacific Franc (XPF)'), 'symbol' => t('F'), 'decimals' => 2),
+    'PKR' => array('name' => t('Pakistani Rupee (PKR)'), 'symbol' => t('₨'), 'decimals' => 2),
+    'XPD' => array('name' => t('Palladium Ounces (XPD)'), 'symbol' => t('XPD'), 'decimals' => 2),
+    'PAB' => array('name' => t('Panama Balboa (PAB)'), 'symbol' => t('B/.'), 'decimals' => 2),
+    'PGK' => array('name' => t('Papua New Guinea Kina (PGK)'), 'symbol' => t('K'), 'decimals' => 2),
+    'PYG' => array('name' => t('Paraguayan Guarani (PYG)'), 'symbol' => t('Gs'), 'decimals' => 2),
+    'PEN' => array('name' => t('Peruvian Nuevo Sol (PEN)'), 'symbol' => t('S/.'), 'decimals' => 2),
+    'PHP' => array('name' => t('Philippine Peso (PHP)'), 'symbol' => t('Php'), 'decimals' => 2),
+    'XPT' => array('name' => t('Platinum Ounces (XPT)'), 'symbol' => t('XPT'), 'decimals' => 2),
+    'PLN' => array('name' => t('Polish Zloty (PLN)'), 'symbol' => t('zł'), 'decimals' => 2),
+    'QAR' => array('name' => t('Qatar Rial (QAR)'), 'symbol' => t('﷼'), 'decimals' => 2),
+    'ROL' => array('name' => t('Romanian Leu (ROL)'), 'symbol' => t('lei'), 'decimals' => 2),
+    'RUB' => array('name' => t('Russian Rouble (RUB)'), 'symbol' => t('руб'), 'decimals' => 2),
+    'RWF' => array('name' => t('Rwandese Franc (RWF)'), 'symbol' => t('RF'), 'decimals' => 2),
+    'WST' => array('name' => t('Samoan Tala (WST)'), 'symbol' => t('WS$'), 'decimals' => 2),
+    'STD' => array('name' => t('Sao Tome Dobra (STD)'), 'symbol' => t('Db'), 'decimals' => 2),
+    'SAR' => array('name' => t('Saudi Arabian Riyal (SAR)'), 'symbol' => t('﷼'), 'decimals' => 2),
+    'SCR' => array('name' => t('Seychelles Rupee (SCR)'), 'symbol' => t('₨'), 'decimals' => 2),
+    'RSD' => array('name' => t('Serbian Dinar (RSD)'), 'symbol' => t('Дин.'), 'decimals' => 2),
+    'SLL' => array('name' => t('Sierra Leone Leone (SLL)'), 'symbol' => t('Le'), 'decimals' => 2),
+    'XAG' => array('name' => t('Silver Ounces (XAG)'), 'symbol' => t('XAG'), 'decimals' => 2),
+    'SGD' => array('name' => t('Singapore Dollar (SGD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'SKK' => array('name' => t('Slovak Koruna (SKK)'), 'symbol' => t('SIT'), 'decimals' => 2),
+    'SBD' => array('name' => t('Solomon Islands Dollar (SBD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'SOS' => array('name' => t('Somali Shilling (SOS)'), 'symbol' => t('S'), 'decimals' => 2),
+    'ZAR' => array('name' => t('South African Rand (ZAR)'), 'symbol' => t('R'), 'decimals' => 2),
+    'LKR' => array('name' => t('Sri Lanka Rupee (LKR)'), 'symbol' => t('₨'), 'decimals' => 2),
+    'SHP' => array('name' => t('St Helena Pound (SHP)'), 'symbol' => t('£'), 'decimals' => 2),
+    'SDD' => array('name' => t('Sudanese Dinar (SDD)'), 'symbol' => t('£Sd'), 'decimals' => 2),
+    'SRD' => array('name' => t('Surinam Dollar (SRD)'), 'symbol' => t('$'), 'decimals' => 2),
     // L for singular, E for plural
-    'SZL' => t('E'),
-    'SEK' => t('kr'),
-    'CHF' => t('CHF'),
-    'SYP' => t('£'),
-    'TWD' => t('NT$'),
+    'SZL' => array('name' => t('Swaziland Lilageni (SZL)'), 'symbol' => t('E'), 'decimals' => 2),
+    'SEK' => array('name' => t('Swedish Krona (SEK)'), 'symbol' => t('kr'), 'decimals' => 2),
+    'CHF' => array('name' => t('Swiss Franc (CHF)'), 'symbol' => t('CHF'), 'decimals' => 2),
+    'SYP' => array('name' => t('Syrian Pound (SYP)'), 'symbol' => t('£'), 'decimals' => 2),
+    'TWD' => array('name' => t('Taiwan Dollar (TWD)'), 'symbol' => t('NT$'), 'decimals' => 2),
     // No symbol, but instead an insane formatting.
     // See http://en.wikipedia.org/wiki/Tanzanian_shilling#Symbol.
-    'TZS' => t('TZS'),
-    'THB' => t('฿'),
-    'TOP' => t('T$'),
-    'TTD' => t('TT$'),
-    'TND' => t('د.ت'),
-    'TRY' => t('YTL'),
-    'USD' => t('$'),
-    'AED' => t('د.إ'),
-    'UGX' => t('USh'),
+    'TZS' => array('name' => t('Tanzanian Shilling (TZS)'), 'symbol' => t('TZS'), 'decimals' => 2),
+    'THB' => array('name' => t('Thai Baht (THB)'), 'symbol' => t('฿'), 'decimals' => 2),
+    'TOP' => array('name' => t('Tonga Pa\'anga (TOP)'), 'symbol' => t('T$'), 'decimals' => 2),
+    'TTD' => array('name' => t('Trinidad & Tobago Dollar (TTD)'), 'symbol' => t('TT$'), 'decimals' => 2),
+    'TND' => array('name' => t('Tunisian Dinar (TND)'), 'symbol' => t('د.ت'), 'decimals' => 2),
+    'USD' => array('name' => t('U.S. Dollar (USD)'), 'symbol' => t('$'), 'decimals' => 2),
+    'AED' => array('name' => t('UAE Dirham (AED)'), 'symbol' => t('د.إ'), 'decimals' => 2),
+    'UGX' => array('name' => t('Ugandan Shilling (UGX)'), 'symbol' => t('USh'), 'decimals' => 2),
     // There is a new sign as of March 2004, which is encoded as U+20B4 in
     // Unicode 4.1 released in 2005. It's not yet supported by most operating
     // systems, so I opted for the abbrevation instead.
-    'UAH' => t('грн.'),
-    'UYU' => t('$U'),
-    'UZS' => t('лв'),
-    'VUV' => t('Vt'),
-    'VEB' => t('Bs'),
-    'VND' => t('₫'),
-    'YER' => t('﷼'),
-    'YUM' => t('дин'),
-    'ZMK' => t('ZK'),
-    'ZWD' => t('Z$'),
+    'UAH' => array('name' => t('Ukraine Hryvnia (UAH)'), 'symbol' => t('грн.'), 'decimals' => 2),
+    'UYU' => array('name' => t('Uruguayan New Peso (UYU)'), 'symbol' => t('$U'), 'decimals' => 2),
+    'UZS' => array('name' => t('Uzbekistan Sum (UZS)'), 'symbol' => t('лв'), 'decimals' => 2),
+    'VUV' => array('name' => t('Vanuatu Vatu (VUV)'), 'symbol' => t('Vt'), 'decimals' => 2),
+    'VEB' => array('name' => t('Venezuelan Bolivar (VEB)'), 'symbol' => t('Bs'), 'decimals' => 2),
+    'VND' => array('name' => t('Vietnam Dong (VND)'), 'symbol' => t('₫'), 'decimals' => 2),
+    'YER' => array('name' => t('Yemen Riyal (YER)'), 'symbol' => t('﷼'), 'decimals' => 2),
+    'YUM' => array('name' => t('Yugoslav Dinar (YUM)'), 'symbol' => t('дин'), 'decimals' => 2),
+    'ZMK' => array('name' => t('Zambian Kwacha (ZMK)'), 'symbol' => t('ZK'), 'decimals' => 2),
+    'ZWD' => array('name' => t('Zimbabwe Dollar (ZWD)'), 'symbol' => t('Z$'), 'decimals' => 2),
   );
+}
 
-  return $currency;
+function currency_api_get_list() {
+  static $list;
+  if (!isset($list)) {
+    $currencies = currency_api_get_currencies();
+    $list = array();
+    foreach ($currencies as $code => $currency) {
+      $list[$code] = $currency['name'];
+    }
+  }
+  return $list;
+}
+
+function currency_api_get_symbols() {
+  static $symbols;
+  if (!isset($symbols)) {
+    $currencies = currency_api_get_currencies();
+    $symbols = array();
+    foreach ($currencies as $code => $currency) {
+      $symbols[$code] = $currency['symbol'];
+    }
+  }
+  return $symbols;
 }
 
 function currency_api_get_fields($array) {
