La documentation pour ce module peut être créée à Module:Prix/Data/doc

--[==[ 	Toutes les données affichées ici sont seulement indicatives : 	Wikivoyage n’accepte aucune responsabilité concernant leur actualisation. 	leur précision ou tout autre usage pour lequel elles pourraient être utilisées. 	Consultez [[Wikivoyage:Avertissements]]. 	Les cours des devises à taux variable devraient être mis à jour quotidiennement . --]==] require('strict') local find = string.find local insert = table.insert local sort = table.sort local mwLog, mwLogObject = mw.log, mw.logObject local NaN = -(0/0)  -- Devise par code ISO. -- Le cours indique la valeur pour 1 euro. -- La date est au format ISO ('YYY-MM-DD'), afin de faciliter les comparaisons ou conversions de format local data = { -- Devise de référence (taux fixe par définition) : 	['EUR'] = {nom = 'euro', cours = 1, date = '1999-01-01'}, -- Devises liées à l’euro à taux fixe de façon permanente, émises par les membres de la zone Euro (ce taux ne peut plus changer sans décision communautaire), source BCE : 	['XEU'] = {nom = 'ECU (European Currency Unit)', cours = 1, date = '1999-01-01'}, 	['ATS'] = {nom = 'schilling autrichien', cours = 13.7603, date = '1999-01-01'}, 	['BEF'] = {nom = 'franc belge', cours = 40.3399, date = '1999-01-01'}, 	['DEM'] = {nom = 'mark allemand', cours = 1.95583, date = '1999-01-01'}, 	['ESP'] = {nom = 'peseta espagnole', cours = 166.386, date = '1999-01-01'}, 	['FIM'] = {nom = 'mark finlandais', cours = 5.94573, date = '1999-01-01'}, 	['FRF'] = {nom = 'franc français', cours = 6.55957, date = '1999-01-01'}, 	['IEP'] = {nom = 'livre irlandaise', cours = 0.787564, date = '1999-01-01'}, 	['ITL'] = {nom = 'lire italienne', cours = 1936.27, date = '1999-01-01'}, 	['LUF'] = {nom = 'franc luxembourgeois', cours = 40.3399, date = '1999-01-01'}, 	['NLG'] = {nom = 'florin néerlandais', cours = 2.20371, date = '1999-01-01'}, 	['PTE'] = {nom = 'escudo portugais', cours = 200.482, date = '1999-01-01'}, 	['GRD'] = {nom = 'drachme grecque', cours = 340.75, date = '2001-01-01'}, 	['LTL'] = {nom = 'litas lituanienne', cours = 3.4528, date = '2004-06-28'}, 	['SIT'] = {nom = 'tolar slovène', cours = 239.64, date = '2007-01-01'}, 	['CYP'] = {nom = 'livre chypriote', cours = 0.585274, date = '2008-01-01'}, 	['MTL'] = {nom = 'lire maltaise', cours = 0.4293, date = '2008-01-01'}, 	['SKK'] = {nom = 'couronne slovaque', cours = 30.126, date = '2009-01-01'}, 	['EEK'] = {nom = 'couronne estonienne', cours = 15.6466, date = '2011-01-01'}, 	['LVL'] = {nom = 'lats letton', cours = 0.702804, date = '2014-01-01'}, 	['HRK'] = {nom = 'kuna croate', cours = 7.5345, date = '2023-01-01'}, -- Devises liées à l’euro à taux fixe par un accord national et une décision communautaire permanente (ce taux ne peut plus changer sans décision communautaire), source BCE : 	['ADP'] = {nom = 'peseta andorrane', cours = 166.386, date = '1999-01-01'}, 	['ADF'] = {nom = 'franc andorran', cours = 6.55957, date = '1999-01-01'}, 	['MCF'] = {nom = 'franc monégasque', cours = 6.55957, date = '1999-01-01'}, 	['SML'] = {nom = 'lire saint-marinaise', cours = 1936.27, date = '1999-01-01'}, 	['VAL'] = {nom = 'lire vaticane', cours = 1936.27, date = '1999-01-01'}, -- Devises liées à l’euro à taux fixe par un accord bilatéral (reconnu par l’Union européenne) avec un membre de la zone euro (taux révisable, mais pas depuis la date indiquée), source BCE : 	['CVE'] = {nom = 'escudo cap-verdien', cours = 110.265, date = '1999-01-01'}, 	['XAF'] = {nom = 'franc CFA (BCEAC)', cours = 655.957, date = '1999-01-01'}, 	['XOF'] = {nom = 'franc CFA (BCEAO)', cours = 655.957, date = '1999-01-01'}, 	['XPF'] = {nom = 'franc CFP (IEOM)', cours = 119.26, date = '1999-01-01'}, -- Devises liées à l’euro à taux fixe par une politique monétaire nationale unilatérale (révisable par le pays émetteur, mais pas depuis la date indiquée), source BCE : 	['BAM'] = {nom = 'mark convertible de Bosnie-Herzégovine', cours = 1.95583, date = '1999-01-01'}, 	['BGN'] = {nom = 'lev bulgare', cours = 1.95583, date = '1999-01-01'}, 	['CHE'] = {nom = 'euro WIR (unité de compte suisse)', cours = 11.1732, date = '1999-01-01'}, 	['KMF'] = {nom = 'franc comorien', cours = 491.968, date = '1999-01-01'}, 	['MAD'] = {nom = 'dirham marocain', cours = 11.1732, date = '1999-01-01'}, 	['STD'] = {nom = 'dobra santoméenne', cours = 24.5, date = '2010-01-01'},  -- Autres devises à taux de change variable contre l’euro (cours pour 1 euro, plus précis et plus stable que pour 1 dollar américain), source BCE préférable : -- Il faut inclure USD dans cette partie de la liste, pour permettre les conversions dans la liste suivante depuis le cours contre 1 dollar. 	['ALL'] = {nom = 'lek albanais', cours = 98.8866, date = '2025-04-08'}, 	['ANG'] = {nom = 'florin antillais', cours = 1.9576, date = '2025-04-08'}, 	['AWG'] = {nom = 'florin arubais', cours = 1.957, date = '2025-04-08'}, 	['AUD'] = {nom = 'dollar australien', cours = 1.80832, date = '2025-04-08'}, 	['BRL'] = {nom = 'réal brésilien (nouveau)', cours = 6.42464, date = '2025-04-08'}, 	['CAD'] = {nom = 'dollar canadien', cours = 1.55213, date = '2025-04-08'}, 	['CHF'] = {nom = 'franc suisse', cours = 0.935464, date = '2025-04-08'}, 	['CZK'] = {nom = 'couronne tchèque', cours = 25.1497, date = '2025-04-08'}, 	['DKK'] = {nom = 'couronne danoise', cours = 7.46483, date = '2025-04-08'}, 	['DZD'] = {nom = 'dinar algérien', cours = 146.324, date = '2025-04-08'}, 	['FKP'] = {nom = 'livre des Îles Malouines', cours = 0.855881, date = '2025-04-08'}, 	['GBP'] = {nom = 'livre sterling', cours = 0.855881, date = '2025-04-08'}, 	['GIP'] = {nom = 'livre gibraltarienne', cours = 0.855918, date = '2025-04-08'}, 	['HUF'] = {nom = 'forint hongrois', cours = 407.288, date = '2025-04-08'}, 	['ISK'] = {nom = 'couronne islandaise', cours = 145.11, date = '2025-04-08'}, 	['JPY'] = {nom = 'yen japonais', cours = 160.799, date = '2025-04-08'}, 	['MDL'] = {nom = 'leu moldave', cours = 19.4278, date = '2025-04-08'}, 	['MKD'] = {nom = 'denar nord-macédonien', cours = 61.4556, date = '2025-04-08'}, 	['NOK'] = {nom = 'couronne norvégienne', cours = 10.9756, date = '2025-04-08'}, 	['NZD'] = {nom = 'dollar néo-zélandais', cours = 1.95286, date = '2025-04-08'}, 	['SEK'] = {nom = 'couronne suédoise', cours = 10.97087, date = '2025-04-08'}, 	['PLN'] = {nom = 'złoty polonais', cours = 4.27258, date = '2025-04-08'}, 	['RON'] = {nom = 'leu roumain (nouveau)', cours = 4.97761, date = '2025-04-08'}, 	['RSD'] = {nom = 'dinar serbe', cours = 117.165, date = '2025-04-08'}, 	['RUB'] = {nom = 'rouble russe', cours = 93.8494, date = '2025-04-08'}, 	['SHP'] = {nom = 'livre de Sainte-Hélène', cours = 0.856869, date = '2025-04-08'}, 	['TND'] = {nom = 'dinar tunisien', cours = 3.36524, date = '2025-04-08'}, 	['TRY'] = {nom = 'livre turque', cours = 41.5775, date = '2025-04-08'}, 	['UAH'] = {nom = 'hryvnia ukrainienne', cours = 45.1027, date = '2025-04-08'}, 	['USD'] = {nom = 'dollar américain', cours = 1.09359, date = '2025-04-08'}, 	['XCG'] = {nom = 'florin caribéen', cours = 1.95772, date = '2025-04-08'},  -- Autres devises à taux de change variable contre l’euro (cours pour 1 dollar américain, à convertir en cours pour 1 euro sans perte de précision), source à compléter : 	['AED'] = {nom = 'dirham émirati', cours = 4.0251, date = '2025-04-08'}, 	['AFN'] = {nom = 'afghani (nouvel)', cours = 78.47, date = '2025-04-08'}, 	['AMD'] = {nom = 'dram arménien', cours = 427.9, date = '2025-04-08'}, 	['AOA'] = {nom = 'kwanza angolais (ajusté en 2000)', cours = 1009.128, date = '2025-04-08'}, 	['ARS'] = {nom = 'peso argentin (nouveau)', cours = 1178.452, date = '2025-04-08'}, 	['AZN'] = {nom = 'manat azerbaïdjanais (nouveau)', cours = 1.867, date = '2025-04-08'}, 	['BBD'] = {nom = 'dollar de la Barbade', cours = 2.2127, date = '2025-04-08'}, 	['BDT'] = {nom = 'taka bangladais', cours = 133.15, date = '2025-04-08'}, 	['BHD'] = {nom = 'dinar bahreïni', cours = 0.4129, date = '2025-04-08'}, 	['BIF'] = {nom = 'franc burundais', cours = 3257.3, date = '2025-04-08'}, 	['BMD'] = {nom = 'dollar des Bermudes', cours = 1.0959, date = '2025-04-08'}, 	['BND'] = {nom = 'dollar du Brunei', cours = 1.4764, date = '2025-04-08'}, 	['BOB'] = {nom = 'boliviano bolivien', cours = 7.589, date = '2025-04-08'}, 	['BSD'] = {nom = 'dollar bahaméen', cours = 1.0959, date = '2025-04-08'}, 	['BTN'] = {nom = 'ngultrum bouthanais', cours = 94.082, date = '2025-04-08'}, 	['BWP'] = {nom = 'pula botswanais', cours = 15.414, date = '2025-04-08'}, 	['BYN'] = {nom = 'rouble biélorusse (nouveau)', cours = 3.57627, date = '2025-04-08'}, 	['BYR'] = {nom = 'rouble biélorusse (ancien)', cours = 35762.7, date = '2025-04-08'}, -- 1 BYR = 1000 BYN 	['BZD'] = {nom = 'dollar du Belize', cours = 2.2013, date = '2025-04-08'}, 	['CDF'] = {nom = 'franc congolais', cours = 3185.2, date = '2025-04-08'}, 	['CLP'] = {nom = 'peso chilien', cours = 1073.49, date = '2025-04-08'}, 	['CNY'] = {nom = 'yuan renminbi chinois', cours = 8.009205, date = '2025-04-08'}, 	['COP'] = {nom = 'peso colombien', cours = 4686.4, date = '2025-04-08'}, 	['CRC'] = {nom = 'colon costaricain', cours = 556.1, date = '2025-04-08'}, 	['CUC'] = {nom = 'peso convertible cubain', cours = 1.09352, date = '2025-04-08'}, 	['CUP'] = {nom = 'peso cubain', cours = 26.302, date = '2025-04-08'}, 	['DJF'] = {nom = 'franc djiboutien', cours = 195.15, date = '2025-04-08'}, 	['DOP'] = {nom = 'peso dominicain', cours = 68.92, date = '2025-04-08'}, 	['EGP'] = {nom = 'livre égyptienne', cours = 56.318, date = '2025-04-08'}, 	['ERN'] = {nom = 'nakfa érythréen', cours = 16.4239, date = '2025-04-08'}, 	['ETB'] = {nom = 'birr éthiopien', cours = 145.0654, date = '2025-04-08'}, 	['FJD'] = {nom = 'dollar fidjien', cours = 2.5608, date = '2025-04-08'}, 	['GEL'] = {nom = 'lari géorgien', cours = 3.000235, date = '2025-04-08'}, 	['GHS'] = {nom = 'cedi ghanéen', cours = 16.986, date = '2025-04-08'}, 	['GMD'] = {nom = 'dalasi gambien', cours = 77.98951, date = '2025-04-08'}, 	['GNF'] = {nom = 'franc guinéen', cours = 9484, date = '2025-04-08'}, 	['GTQ'] = {nom = 'quetzal guatémaltèque', cours = 8.459, date = '2025-04-08'}, 	['GYD'] = {nom = 'dollar guyanien', cours = 229.95, date = '2025-04-08'}, 	['HKD'] = {nom = 'dollar hongkongais', cours = 8.51682, date = '2025-04-08'}, 	['HNL'] = {nom = 'lempira hondurien', cours = 28.039, date = '2025-04-08'}, 	['HTG'] = {nom = 'gourde haïtienne', cours = 143.4, date = '2025-04-08'}, 	['IDR'] = {nom = 'roupie indonésienne', cours = 18651, date = '2025-04-08'}, 	['ILS'] = {nom = 'shekel israélien (nouveau)', cours = 4.12805, date = '2025-04-08'}, 	['INR'] = {nom = 'roupie indienne', cours = 94.1625, date = '2025-04-08'}, 	['IQD'] = {nom = 'dinar irakien', cours = 1435.6, date = '2025-04-08'}, 	['IRR'] = {nom = 'rial iranien', cours = 46142.54851, date = '2025-04-08'}, 	['JMD'] = {nom = 'dollar jamaïcain', cours = 172.83, date = '2025-04-08'}, 	['JOD'] = {nom = 'dinar jordanien', cours = 0.7769, date = '2025-04-08'}, 	['KES'] = {nom = 'shilling kényan', cours = 141.92, date = '2025-04-08'}, 	['KGS'] = {nom = 'som kirghize', cours = 95.17059554, date = '2025-04-08'}, 	['KHR'] = {nom = 'riel cambodgien', cours = 4386, date = '2025-04-08'}, 	['KPW'] = {nom = 'won nord-coréen', cours = 985.51, date = '2025-04-08'}, 	['KRW'] = {nom = 'won sud-coréen', cours = 1610.4, date = '2025-04-08'}, 	['KWD'] = {nom = 'dinar koweïtien', cours = 0.33742, date = '2025-04-08'}, 	['KYD'] = {nom = 'dollar des îles Caïmans', cours = 0.9133, date = '2025-04-08'}, 	['KZT'] = {nom = 'tenge kazakh', cours = 574.5, date = '2025-04-08'}, 	['LAK'] = {nom = 'kip laotienne', cours = 23730, date = '2025-04-08'}, 	['LBP'] = {nom = 'livre libanaise', cours = 98192.6, date = '2025-04-08'}, 	['LKR'] = {nom = 'roupie srilankaise', cours = 326.41, date = '2025-04-08'}, 	['LRD'] = {nom = 'dollar libérien', cours = 219.18, date = '2025-04-08'}, 	['LSL'] = {nom = 'loti du Lesotho', cours = 21.2286, date = '2025-04-08'}, 	['LYD'] = {nom = 'dinar libyen', cours = 6.078, date = '2025-04-08'}, 	['MGA'] = {nom = 'ariary malgache', cours = 5115, date = '2025-04-08'}, 	['MMK'] = {nom = 'kyat birman', cours = 3487.125, date = '2025-04-08'}, 	['MNT'] = {nom = 'tugrik mongol', cours = 3841.12, date = '2025-04-08'}, 	['MOP'] = {nom = 'pataca macanaise', cours = 8.7695, date = '2025-04-08'}, 	['MRO'] = {nom = 'ouguiya mauritanienne', cours = 434.393, date = '2025-04-08'}, 	['MUR'] = {nom = 'roupie mauricienne', cours = 49.48, date = '2025-04-08'}, 	['MVR'] = {nom = 'rufiyaa maldivienne', cours = 16.80058, date = '2025-04-08'}, 	['MWK'] = {nom = 'kwacha malawite', cours = 1900.3, date = '2025-04-08'}, 	['MXN'] = {nom = 'peso mexicain', cours = 22.62315, date = '2025-04-08'}, 	['MYR'] = {nom = 'ringgit malaisien', cours = 4.9119, date = '2025-04-08'}, 	['MZN'] = {nom = 'metical mozambicain (nouveau)', cours = 69.72051, date = '2025-04-08'}, 	['NAD'] = {nom = 'dollar namibien', cours = 21.2286, date = '2025-04-08'}, 	['NGN'] = {nom = 'naira nigérian', cours = 1697, date = '2025-04-08'}, 	['NIO'] = {nom = 'cordoba nicaraguayen', cours = 40.33, date = '2025-04-08'}, 	['NPR'] = {nom = 'roupie népalaise', cours = 150.531, date = '2025-04-08'}, 	['OMR'] = {nom = 'rial omanais', cours = 0.42189, date = '2025-04-08'}, 	['PAB'] = {nom = 'balboa panaméen', cours = 1.0959, date = '2025-04-08'}, 	['PEN'] = {nom = 'sol péruvien (nouveau)', cours = 4.0333, date = '2025-04-08'}, 	['PGK'] = {nom = 'kina paraguayenne', cours = 4.458, date = '2025-04-08'}, 	['PHP'] = {nom = 'peso philippin', cours = 62.792, date = '2025-04-08'}, 	['PKR'] = {nom = 'roupie pakistanaise', cours = 307.263, date = '2025-04-08'}, 	['PYG'] = {nom = 'guarani paraguayen', cours = 8773, date = '2025-04-08'}, 	['QAR'] = {nom = 'rial qatari', cours = 3.9948, date = '2025-04-08'}, 	['RWF'] = {nom = 'franc rwandais', cours = 1545.2, date = '2025-04-08'}, 	['SAR'] = {nom = 'riyal saoudien', cours = 4.1108, date = '2025-04-08'}, 	['SBD'] = {nom = 'dollar des Salomon', cours = 9.113134142, date = '2025-04-08'}, 	['SCR'] = {nom = 'roupie seychelloise', cours = 15.723, date = '2025-04-08'}, 	['SDG'] = {nom = 'livre soudanaise', cours = 655.135, date = '2025-04-08'}, 	['SGD'] = {nom = 'dollar de Singapour', cours = 1.48004, date = '2025-04-08'}, 	['SLL'] = {nom = 'leone sierra-léonais', cours = 25587.9, date = '2025-04-08'}, 	['SOS'] = {nom = 'shilling somalien', cours = 626.3, date = '2025-04-08'}, 	['SRD'] = {nom = 'dollar surinamien', cours = 40.386, date = '2025-04-08'}, 	['SYP'] = {nom = 'livre syrienne', cours = 14231.7, date = '2025-04-08'}, 	['SZL'] = {nom = 'lilangeni d’Eswatini', cours = 21.222, date = '2025-04-08'}, 	['THB'] = {nom = 'baht thaïlandais', cours = 37.896, date = '2025-04-08'}, 	['TJS'] = {nom = 'somoni tadjik', cours = 11.907, date = '2025-04-08'}, 	['TMT'] = {nom = 'manat turkmène (nouveau)', cours = 3.829306249, date = '2025-04-08'}, 	['TOP'] = {nom = 'pa’anga tongan', cours = 2.566196507, date = '2025-04-08'}, 	['TTD'] = {nom = 'dollar de Trinité-et-Tobago', cours = 7.427, date = '2025-04-08'}, 	['TWD'] = {nom = 'dollar taïwanais (nouveau)', cours = 36.17264, date = '2025-04-08'}, 	['TZS'] = {nom = 'shilling tanzanien', cours = 2948, date = '2025-04-08'}, 	['UGX'] = {nom = 'shilling ougandais', cours = 4073, date = '2025-04-08'}, 	['UYU'] = {nom = 'peso uruguayen', cours = 46.16, date = '2025-04-08'}, 	['UZS'] = {nom = 'sum ouzbek', cours = 14189, date = '2025-04-08'}, 	['VEF'] = {nom = 'bolivar fort vénézuélien', cours = 8022930, date = '2025-04-08'}, 	['VND'] = {nom = 'dong vietnamien', cours = 28274, date = '2025-04-08'}, 	['VUV'] = {nom = 'vatu de Vanuatu', cours = 137.948, date = '2025-04-08'}, 	['WST'] = {nom = 'tala samoan', cours = 3.15968, date = '2025-04-08'}, 	['XCD'] = {nom = 'dollar de la Caraïbe orientale', cours = 2.961601255, date = '2025-04-08'}, 	['YER'] = {nom = 'rial yéménite', cours = 268.0115, date = '2025-04-08'}, 	['ZAR'] = {nom = 'rand sud-africain (compte convertible)', cours = 21.37315, date = '2025-04-08'}, 	['ZMW'] = {nom = 'kwacha zambien', cours = 30.658, date = '2025-04-08'}, 	['ZWD'] = {nom = 'dollar zimbabwéen', cours = 394.633, date = '2025-04-08'},  -- Devises spéciales, cryptomonnaies cotées sur les marchés officiels et métaux précieux (taux volatiles, cours pour 1 dollar américain à convertir en cours pour 1 euro), source à compléter : 	['XAG'] = {nom = 'argent (libellé en onces)', cours = 0.0360151, date = '2025-04-08'}, 	['XAU'] = {nom = 'or (libellé en onces)', cours = 0.000362666, date = '2025-04-08'}, 	['XDR'] = {nom = 'droits de tirage spéciaux (DTS)', cours = 0.820427, date = '2025-04-08'}, 	['XPD'] = {nom = 'palladium (libellé en onces)', cours = 0.00118856, date = '2025-04-08'}, 	['XPT'] = {nom = 'platine (libellé en onces)', cours = 0.00117738, date = '2025-04-08'}, 	['ETH'] = {nom = 'Ethereum (cryptomonnaie)', cours = 0.000690562, date = '2025-04-08'}, 	['BTC'] = {nom = 'Bitcoin (cryptomonnaie)', cours = 0.0000136942, date = '2025-04-08'}, }  for code, d in pairs(data) do 	if not d.code then 		d.code = code 	end 	if not d.alias then 		d.alias = {} 	end 	if not data[code] then 		data[code] = d 	end 	-- Vérifie la validité de la valeur numérique donnée au cours de la devise pour 1 euro. 	local cours = tonumber(d.cours) 	if type(cours) == 'number' then 		d.cours = cours 		-- Définit la précision par défaut pour les sous-unités selon le cours de la devise pour 1 euro. 		if not d.precision then 			if not cours then d.precision = 2 			elseif cours > 50 then d.precision = 0 			elseif cours > 0.5 then d.precision = 2 			elseif cours > 0.05 then d.precision = 3 			elseif cours > 0.005 then d.precision = 4 			elseif cours > 0.0005 then d.precision = 6 			elseif cours > 0.00005 then d.precision = 7 			else d.precision = 8 			end 		end 	end end  local function alias(code, abr, ...) 	local d = data[code] 	if not d then 		mwLog('Code « ' .. code .. ' » non défini, les alias fournis sont ignorés.') 	else 		if abr then -- L’abréviation peut être nil (indiquant d'afficher le code standard à la place) pour pouvoir donner quand même des alias. 			if data[abr] then 				d = data[abr] 				if abr == d.code then 					mwLog('Abréviation « ' .. abr .. ' » du code « ' .. code .. ' » déjà utilisé en tant que code ISO de devise monétaire, abréviation ignorée.') 				elseif abr == d.nom then 					mwLog('Abréviation « ' .. abr .. ' » du code « ' .. code .. ' » déjà utilisé en tant que nom défini pour le code ISO de devise monétaire « ' .. d.code .. ' », abréviation ignorée.') 				elseif abr == d.abreviation then 					mwLog('Abréviation « ' .. abr .. ' » du code « ' .. code .. ' » déjà utilisé en tant qu’abréviation définie pour le code ISO de devise monétaire « ' .. d.code .. ' », abréviation ignorée.') 				else 					mwLog('Abréviation « ' .. abr .. ' » du code « ' .. code .. ' » déjà utilisé en tant qu’alias pour le code ISO de devise monétaire « ' .. d.code .. ' », abréviation ignorée.') 				end 			elseif abr == d.nom then 				mwLog('Abréviation « ' .. abr .. ' » du code « ' .. code .. ' » déjà utilisé en tant que nom défini pour le code ISO de devise monétaire « ' .. d.code .. ' », abréviation ignorée.') 			elseif abr == d.abreviation then 				mwLog('Abréviation « ' .. abr .. ' » du code « ' .. code .. ' » déjà utilisé en tant qu’abréviation définie pour le code ISO de devise monétaire « ' .. d.code .. ' », abréviation ignorée.') 			else 				data[abr] = d 				d.abreviation = abr 			end 		end 		for _, alias in ipairs(arg) do 			if data[alias] then 				d = data[alias] 				if alias == d.nom then 					mwLog('Alias « ' .. alias .. ' » du code « ' .. code .. ' » déjà utilisé en tant que nom défini pour le code ISO de devise monétaire « ' .. d.code .. ' », alias ignoré.') 				elseif abr == d.abreviation then 					mwLog('Alias « ' .. alias .. ' » du code « ' .. code .. ' » déjà utilisé en tant qu’abréviation définie pour le code ISO de devise monétaire « ' .. d.code .. ' », alias ignoré.') 				else 					mwLog('Alias « ' .. alias .. ' » du code « ' .. code .. ' » déjà utilisé en tant qu’alias défini pour le code ISO de devise monétaire « ' .. d.code .. ' », alias ignoré.') 				end 			elseif alias == d.code then 					mwLog('Alias « ' .. alias .. ' » déjà utilisé en tant que code ISO de devise monétaire, alias ignoré.') 			elseif alias == d.nom then 				mwLog('Alias « ' .. alias .. ' » du code « ' .. code .. ' » déjà utilisé en tant que nom défini pour le code ISO de devise monétaire « ' .. d.code .. ' », alias ignoré.') 			elseif alias == d.abreviation then 				mwLog('Alias « ' .. alias .. ' » du code « ' .. code .. ' » déjà utilisé en tant qu’abréviation définie pour le code ISO de devise monétaire « ' .. d.code .. ' », alias ignoré.') 			else 				for _, v in ipairs(d.alias) do 					if v  == alias then 						mwLog('Alias « ' .. alias .. ' » du code « ' .. code .. ' » déjà utilisé en tant qu’alias défini pour le code ISO de devise monétaire « ' .. d.code .. ' », alias ignoré.') 						alias = nil 						break 					end 				end 				if alias then 					insert(d.alias, alias) 					data[alias] = d 				end 			end 		end 	end end  -- Symboles et abréviations courantes pouvant être utilisées dans le Modèle:Prix (le premier alias est celui préféré pour l'affichage des prix). -- Le code ci-dessus détecte les incohérences de doublons (et peut en signale sur la console du mode édition). alias('AFN', '؋', 'afghani', 'afghanis') alias('ALL', 'Lk', 'lek', 'leks', 'leks albanais') -- L’abréviation 'L' peut être confondue avec celle du lempira hondurien (HNL). alias('AMD', '֏', 'dram', 'drams', 'drams arméniens') alias('ANG', 'ƒ', 'florin', 'florins', 'florins antillais') -- La première abréviation et les 2 premiers alias sont ambigus seulement avec l'ancien florin néerlandais. alias('AUD', '$AU', 'AU$', '$ AU', '$ AUD', 'dollars australiens', 'dollar d’Australie', 'dollars d’Australie') alias('AZN', '₼', 'manats azerbaïdjanais (nouveaux)', 'nouveau manat azerbaïdjanais', 'nouveaux manats azerbaïdjanais', 'nouveau manat d’Azerbaïdjan', 'nouveaux manats d’Azerbaïdjan', 'nouveau manat azéri', 'nouveaux manats azéris', 'manat azerbaïdjanais', 'manats azerbaïdjanais', 'manat d’Azerbaïdjan', 'manats d’Azerbaïdjan', 'manat azéri', 'manats azéris') alias('BAM', 'MK', 'marka', 'markas') alias('BDT', '৳', 'takas bangladais', 'taka du Bangladesh', 'takas du Bangladesh') alias('BEF', 'FB', 'francs belges')-- Ne pas confondre avec les francs suisses, burundais, congolais, djiboutiens, guinéens et rwandais ou les anciens francs français, luxembourgeois, andorrans et monégasques. alias('BTC', '₿', 'Bitcoin', 'Bitcoins', 'bitcoin', 'Bitcoins') alias('CAD', '$CA', '$ CA', '$C', 'CA$', 'dollars canadiens', 'dollar du Canada', 'dollars du Canada') alias('CHF', 'FS', 'Fr.', 'francs suisses') -- La 2e abréviation est ambiguë les francs burundais, congolais, djiboutiens, guinéens et rwandais ou les anciens francs français, belges, luxembourgeois, andorrans et monégasques. alias('CNY', 'Ұ', 'yuan', 'yuans', 'yuan renminbi', 'yuans renminbi', 'yuans renminbi chinois') -- La première abréviation est parfois confondue et utilisée pour le yen japonais. alias('CVE', '$CV', '$ CV', 'CV$', 'escudos cap-verdiens', 'escudo du Cap-Vert', 'escudos du Cap-Vert', 'escudo', 'escudos') -- Les deux derniers alias sont ambigus seulement avec l'ancien escudo portugais. alias('CZK', 'Kč', 'couronnes tchèques', 'couronne de Tchéquie', 'couronnes de Tchéquie') alias('DEM', 'DM', 'deutschemark', 'deutschemarks', 'mark', 'marks') -- Ne pas confondre avec l’ancien mark finlandais (FIM). alias('DZD', 'DA', 'dinars algériens', 'dinar d’Algérie', 'dinars d’Algérie') alias('ERN', 'ናቕፋ', 'nakfas érythréen', 'nakfa', 'nakfas') alias('ESP', '₧', 'peseta', 'pesetas', 'peseta espagnole', 'pesetas espagnoles') -- Les trois premier alias sont ambigus avec l'ancienne peseta andorrane. alias('ETB', 'Br', 'birr', 'birrs', 'birrs éthiopiens') alias('ETH', 'Ξ', 'Ethereum', 'Ethereums', 'ethereum', 'ethereums') alias('EUR', '€', 'euros') alias('FIM', 'mk', 'Smk') -- Ne pas confondre avec l’ancien mark allemand (DEM). alias('FKP', 'FK£', '£FK', '£ FK', 'livres des Îles Malouines', 'livre des Îles Falkland', 'livres des Îles Falkland')  alias('FRF', 'FF', 'francs français') -- Ne pas confondre avec les francs suisses, burundais, congolais, djiboutiens, guinéens et rwandais ou les anciens francs belges, luxembourgeois, andorrans et monégasques. alias('GBP', '£', 'livres sterling', 'livre', 'livres') -- L’abréviation et les deux derniers alias sont ambigus avec les anciennes lires italiennes et turques et les anciennes livres maltaises, mais peuvent l’être encore avec les livres de Gibraltar, des Îles Malouines, turques, libanaises, syriennes, égyptiennes et soudanaises. alias('GIP', 'GI£', '£GI', '£ GI', 'livres gibraltariennes', 'livre de Gibraltar', 'livres de Gibraltar')  alias('HKD', 'HK$', '$HK', '$ HK', 'dollars hongkongais', 'dollar de Hong Kong', 'dollars de Hong Kong') alias('HNL', 'Lm', 'lempira', 'lempiras', 'lempiras honduriens', 'lempira du Honduras', 'lempiras du Honduras') -- L’abréviation 'L' peut être confondue avec celle du lek albanais (ALL). alias('HUF', 'Ft', 'forint', 'forints', 'forints hongrois', 'forint de Hongrie', 'forints de Hongrie') alias('IDR', 'Rp', 'roupies indonésiennes', 'roupies d’Indonésie', 'roupies d’Indonésie') alias('ILS', '₪', 'shekel', 'shekels', 'shekel israélien', 'shekels israéliens', 'shekel d’Israël', 'shekels d’Israël') -- Alias ambigus seulement avec l'ancien shekel. alias('INR', '₹', 'roupie', 'roupies', 'roupies indiennes', 'roupie d’Inde', 'roupies d’Inde') -- Ne pas confondre avec les roupies mauriciennes ou indonésiennes. alias('JPY', '¥', 'yen', 'yens', 'yens japonais', 'yen du Japon', 'yens du Japon') -- La première abréviation est parfois confondue et utilisée pour le yuan chinois. alias('KHR', '៛', 'riel', 'riels', 'riels cambodgiens', 'riel du Cambodge', 'riels du Cambodge') alias('KPW', 'KP₩', 'wons nord-coréens', 'won de Corée-du-Nord', 'wons de Corée-du-Nord') alias('KRW', 'KR₩', 'wons sud-coréens', 'won de Corée-du-Sud', 'wons de Corée-du-Sud', '₩', 'won', 'wons') -- Les 3 derniers alias sont ambigus avec le won nord-coréen. alias('KZT', '₸', 'tenges kazakhs', 'tenges kazakhs', 'tenge du Kazakhstan', 'tenges du Kazakhstan') alias('MAD', 'DH', 'dinars marocains', 'dinar du Maroc', 'dinars  du Maroc') alias('MOP', 'MO$', '$ MO', '$MO', 'pataca', 'patacas', 'patacas macanaises', 'pataca de Macao', 'patacas de Macao') -- Le symbole '$' est trop ambigu. alias('MUR', 'Rs', 'roupies mauriciennes', 'roupie de Maurice', 'roupies de Maurice') alias('MWK', 'K', 'kwachas malawites', 'kwacha du Malawi', 'kwachas du Malawi') alias('NAD', 'N$', '$ N', '$N', 'NA$', '$ NA', '$NA', 'dollars namibiens', 'dollar de Namibie', 'dollars de Namibie') -- Le symbole '$' est trop ambigu. alias('NGN', '₦', 'naira', 'nairas', 'naira nigérian', 'nairas nigérians', 'naira du Nigéria', 'nairas du Nigéria') alias('NIO', 'C$', 'cordoba', 'cordobas', 'cordoba oro', 'cordobas oro', 'cordobas nicaraguayens', 'cordoba du Nicaragua', 'cordobas du Nicaragua') alias('NOK', 'kr', 'couronnes norvégiennes', 'couronnes de Norvège', 'couronnes de Norvège') -- La première abréviation est ambiguë avec les couronnes danoises, suédoises et islandaises. alias('NZD', 'NZ$', '$NZ','$ NZ', 'dollars néo-zélandais', 'dollar de Nouvelle-Zélande', 'dollars de Nouvelle-Zélande') alias('PLN', 'zł', 'złoty', 'złotys', 'złotys polonais', 'złoty de Pologne', 'złotys de Pologne') alias('RON', 'leu', 'lei', 'leu roumain', 'lei roumains', 'leu de Roumanie', 'lei de Roumanie') alias('RUB', '₽', 'roubles russes', 'rouble de Russie', 'roubles de Russie', 'rouble', 'roubles', 'руб.') -- Les 3 derniers alias sont ambigus. alias('SHP', 'SH£', '£SH', '£ SH', 'livres de Saint-Hélène')  alias('THB', '฿', 'baht', 'bahts', 'bahts thaïlandais', 'baht de Thaïlande', 'bahts de Thaïlande') alias('TRY', '₺', 'livres turques', 'livre de Turquie', 'livres de Turquie') alias('TND', 'DT', 'dinars tunisiens', 'dinar de Tunisie', 'dinars de Tunisie') alias('TND', 'T$', 'pa’anga tongan', 'pa’anga', 'pa’angas') alias('TWD', 'TW$', '$TW', '$ TW', 'dollars taïwanais', 'dollar de Taïwan', 'dollars de Taïwan', 'nouveau dollar de Taïwan', 'nouveaux dollars de Taïwan') alias('UAH', '₴', 'hryvnia', 'hryvnias', 'hryvnias ukrainiennes', 'hryvnia d’Ukraine', 'hryvnias d’Ukraine') alias('USD', 'US$', '$ US', '$US', 'dollars américains', 'dollar des États-Unis', 'dollars des États-Unis', '$', 'dollar', 'dollars') -- Les 3 derniers alias sont ambigus. Devise également officielle des Îles Marshall, des États fédérés de Micronésie, des Palaos, du Timor oriental, du Panama, du Salvador, de l’Équateur, des Îles Turques-et-Caïques, des Îles Vierges britanniques, ainsi que des Pays-Bas caribéens (Bonaire, Saint-Eustache et Saba : 3 communes intégrées à l’État des Pays-Bas mais qui n’utilisent ni l’euro, ni le florin caribéen qui a remplacé l’ancien florin antillais pour les États d’Aruba, de Curaçao et de Sint-Maarten). alias('VEF', 'BsF', 'bolivars forts', 'bolívar fuerté', 'bolívars fuertés', 'bolivars forts du Venezuela', 'bolivars forts du Venezuela') alias('VND', '₫', 'dong', 'dongs', 'dong vietnamien', 'dongs vietnamiens') alias('XAF', 'F CFAc', 'FCFAc') -- Voir aussi les alias ambigus de 'XOF'. alias('XAG', 'oz Ag', 'ozAg', 'once d’argent', 'onces d’argent', "once d'argent", "onces d'argent") alias('XAU', 'oz Au', 'ozAu', 'once d’or', 'onces d’or', "once d'or", "onces d'or") alias('XCD', 'EC$', '$EC', '$ EC', 'dollars de la Caraïbe orientale', 'dollar est-caribéen', 'dollars est-caribéens') alias('XCG', 'Cg', 'florins caribéens', 'florin des Pays-Bas caribéens', 'florins des Pays-Bas caribéens') alias('XDR', 'DTS') -- L’alias 'DTS' n’est pas ambigu, ce n’est pas un code ISO standard (il reste actuellement réservé). alias('XEU', 'ÉCU', 'ECU') -- L’alias 'ECU' n’est pas ambigu, ce n’est pas un code ISO standard (il reste actuellement réservé). alias('XOF', 'F CFA', 'FCFA', 'franc CFA', 'francs CFA', 'CFA', 'F CFAo', 'FCFAo') -- Les 5 premiers alias sont ambigus, l’alias 'CFA' n’est pas un code ISO standard (il reste actuellement réservé). alias('XPD', 'oz Pd', 'ozPd', 'once de palladium', 'onces de palladium') alias('XPT', 'oz Pt', 'ozPt', 'once de platine', 'onces de platine') alias('XPF', 'F CFP', 'FCFP', 'franc CFP', 'francs CFP', 'CFP') -- L’alias 'CFP' n’est pas un code ISO standard (il reste actuellement réservé) alias('ZAR', 'R', 'rand', 'rands', 'rand sud-africain', 'rands sud-africains', 'rand d’Afrique-du-Sud', 'rands d’Afrique-du-Sud') alias('ZWD', 'ZW$', '$ ZW', '$ZW', 'dollars zimbabwéens', 'dollar du Zimbabwé', 'dollars du Zimbabwé') -- Le symbole '$' est trop ambigu.  --[=[ La mise à jour automatique par bot est désactivée pour l'instant: - Certaines devises sont mal évaluées (notamment celles fixées à l'euro, évaluées d'après le dollar). - Certaines devises n'ont pas de mise à jour correcte depuis 2022 (ou avec le mauvais multiple). - La source utilisée n'est pas documentée (XE.com, oanda.com ?) et semble avoir des défauts, oubliant   elle des actualisations de certaines devises. - Les noms de devise sont parfois erronés ou trop ambigus, et doivent être corrigés par le bot. - Il manque quelques devises nouvelles.  Les mises à jour ci-dessous ne sont reportées ci-dessus que manuellement après vérification humaine.  Une modification de ce script Lua est en cours de test pour valider certains cours ci-dessous. Avec la modification prochaine, il ne sera plus nécessaire de mentionner les noms et le format sera simplifié pour le bot, évitant aussi certaines erreurs comme des omissions ou des formats erronés de valeurs, et filtrant les changements automatiques des cours fixes (cela préviendra aussi des bogues possibles du bot car il est possible de vérifier ce format en évitant de générer des erreurs de script dans Wikivoyage), ce qui permettra au bot de fonctionner avec plus de sécurité et de stabilité.  Les lignes marquées "BOT" ne doivent pas être modifiées (utilisées par l'actuel bot quotidien). --]=] mwLog('Bot start.') do     local d = data     local data = {} -- BOT 	data["AED"] = {code="AED",cours="4.1606",date="01/05/2025",abreviation="AED",nom="dirham"} 	data["AFN"] = {code="AFN",cours="80.49",date="01/05/2025",abreviation="AFN",nom="afghani (nouvel)"} 	data["ALL"] = {code="ALL",cours="98.62",date="01/05/2025",abreviation="ALL",nom="lek"} 	data["AMD"] = {code="AMD",cours="442",date="01/05/2025",abreviation="AMD",nom="dram"} 	data["ANG"] = {code="ANG",cours="2.0477",date="01/05/2025",abreviation="ANG",nom="florin"} 	data["AOA"] = {code="AOA",cours="1041.382",date="01/05/2025",abreviation="AOA",nom="kwanza (ajusté) (2000-)"} 	data["ARS"] = {code="ARS",cours="1328.44",date="01/05/2025",abreviation="ARS",nom="peso (nouveau)"} 	data["AUD"] = {code="AUD",cours="1.765925",date="01/05/2025",abreviation="$ AUD'",nom="dollar australien"} 	data["AWG"] = {code="AWG",cours="2.038280602",date="01/05/2025",abreviation="AWG",nom="florin"} 	data["AZN"] = {code="AZN",cours="1.9334",date="01/05/2025",abreviation="AZN",nom="manat (nouveau)"} 	data["BAM"] = {code="BAM",cours="1.9558",date="01/05/2025",abreviation="BAM",nom="mark convertible (ou marka)"} 	data["BBD"] = {code="BBD",cours="2.2941",date="01/05/2025",abreviation="BBD",nom="dollar de la Barbade,"} 	data["BDT"] = {code="BDT",cours="138.05",date="01/05/2025",abreviation="BDT",nom="taka"} 	data["BGN"] = {code="BGN",cours="1.9558",date="01/05/2025",abreviation="BGN",nom="lev (4e)"} 	data["BHD"] = {code="BHD",cours="0.427",date="01/05/2025",abreviation="BHD",nom="dinar"} 	data["BIF"] = {code="BIF",cours="3379.4",date="01/05/2025",abreviation="BIF",nom="franc burundais"} 	data["BMD"] = {code="BMD",cours="1.1362",date="01/05/2025",abreviation="BMD",nom="dollar des Bermudes"} 	data["BND"] = {code="BND",cours="1.4845",date="01/05/2025",abreviation="BND",nom="dollar de Brunei"} 	data["BOB"] = {code="BOB",cours="7.851",date="01/05/2025",abreviation="BOB",nom="boliviano"} 	data["BRL"] = {code="BRL",cours="6.426746",date="01/05/2025",abreviation="BRL",nom="réal (nouveau)"} 	data["BSD"] = {code="BSD",cours="1.1362",date="01/05/2025",abreviation="BSD",nom="dollar bahaméen"} 	data["BTN"] = {code="BTN",cours="96.021",date="01/05/2025",abreviation="BTN",nom="ngultrum"} 	data["BWP"] = {code="BWP",cours="15.554",date="01/05/2025",abreviation="BWP",nom="pula"} 	data["BYR"] = {code="BYR",cours="18987.556369",date="29/09/2022",abreviation="BYR",nom="rouble"} 	data["BZD"] = {code="BZD",cours="2.2823",date="01/05/2025",abreviation="BZD",nom="dollar du Belize"} 	data["CAD"] = {code="CAD",cours="1.561705",date="01/05/2025",abreviation="$C",nom="dollar canadien"} 	data["CDF"] = {code="CDF",cours="3296.7",date="01/05/2025",abreviation="CDF",nom="franc congolais"} 	data["CHF"] = {code="CHF",cours="0.93539",date="01/05/2025",abreviation="Fr.",nom="franc suisse"} 	data["CLP"] = {code="CLP",cours="1074.15",date="01/05/2025",abreviation="CLP",nom="peso"} 	data["CNY"] = {code="CNY",cours="8.234172",date="01/05/2025",abreviation="CNY",nom="yuan renminbi"} 	data["COP"] = {code="COP",cours="4756.3",date="01/05/2025",abreviation="COP",nom="peso"} 	data["CRC"] = {code="CRC",cours="573.9",date="01/05/2025",abreviation="CRC",nom="colon"} 	data["CUC"] = {code="CUC",cours="0.968753",date="29/09/2022",abreviation="CUC",nom="peso convertible"} 	data["CUP"] = {code="CUP",cours="27.269",date="01/05/2025",abreviation="CUP",nom="peso"} 	data["CVE"] = {code="CVE",cours="110.265",date="01/05/2025",abreviation="CVE",nom="escudo"} 	data["CZK"] = {code="CZK",cours="24.9348",date="01/05/2025",abreviation="CZK",nom="couronne tchèque"} 	data["DJF"] = {code="DJF",cours="202.33",date="01/05/2025",abreviation="DJF",nom="franc"} 	data["DKK"] = {code="DKK",cours="7.46391",date="01/05/2025",abreviation="DKK",nom="couronne danoise"} 	data["DOP"] = {code="DOP",cours="66.87",date="01/05/2025",abreviation="DOP",nom="peso"} 	data["DZD"] = {code="DZD",cours="150.26",date="01/05/2025",abreviation="DZD",nom="dinar"} 	data["EGP"] = {code="EGP",cours="57.577",date="01/05/2025",abreviation="EGP",nom="livre"} 	data["ERN"] = {code="ERN",cours="14.531293",date="29/09/2022",abreviation="ERN",nom="nakfa"} 	data["ETB"] = {code="ETB",cours="152.4786",date="01/05/2025",abreviation="ETB",nom="birr"} 	data["FJD"] = {code="FJD",cours="2.5599",date="01/05/2025",abreviation="FJD",nom="dollar de Fidji"} 	data["FKP"] = {code="FKP",cours="0.83758",date="29/09/2022",abreviation="FKP",nom="livre"} 	data["GBP"] = {code="GBP",cours="0.849965",date="01/05/2025",abreviation="GBP",nom="livre sterling"} 	data["GEL"] = {code="GEL",cours="3.120577",date="01/05/2025",abreviation="GEL",nom="lari"} 	data["GHS"] = {code="GHS",cours="16.191",date="01/05/2025",abreviation="GHS",nom="cedi"} 	data["GIP"] = {code="GIP",cours="0.83758",date="29/09/2022",abreviation="GIP",nom="livre de Gibraltar"} 	data["GMD"] = {code="GMD",cours="81.10898",date="01/05/2025",abreviation="GMD",nom="dalasi"} 	data["GNF"] = {code="GNF",cours="9841",date="01/05/2025",abreviation="GNF",nom="franc"} 	data["GTQ"] = {code="GTQ",cours="8.75",date="01/05/2025",abreviation="GTQ",nom="quetzal"} 	data["GYD"] = {code="GYD",cours="238.43",date="01/05/2025",abreviation="GYD",nom="dollar guyanien"} 	data["HKD"] = {code="HKD",cours="8.7839",date="01/05/2025",abreviation="HKD",nom="dollar de Hong Kong"} 	data["HNL"] = {code="HNL",cours="29.485",date="01/05/2025",abreviation="HNL",nom="lempira"} 	data["HRK"] = {code="HRK",cours="7.526728",date="29/09/2022",abreviation="HRK",nom="kuna"} 	data["HTG"] = {code="HTG",cours="148.44",date="01/05/2025",abreviation="HTG",nom="gourde"} 	data["HUF"] = {code="HUF",cours="404.4585",date="01/05/2025",abreviation="HUF",nom="forint"} 	data["IDR"] = {code="IDR",cours="18884",date="01/05/2025",abreviation="IDR",nom="roupie indonésienne"} 	data["ILS"] = {code="ILS",cours="4.1358",date="01/05/2025",abreviation="ILS",nom="shekel (nouveau)"} 	data["INR"] = {code="INR",cours="95.831",date="01/05/2025",abreviation="INR",nom="roupie indienne"} 	data["IQD"] = {code="IQD",cours="1488.4",date="01/05/2025",abreviation="IQD",nom="dinar"} 	data["IRR"] = {code="IRR",cours="47688.74499",date="01/05/2025",abreviation="IRR",nom="rial"} 	data["ISK"] = {code="ISK",cours="145.9",date="01/05/2025",abreviation="ISK",nom="couronne islandaise"} 	data["ITL"] = {code="ITL",cours="2010.491",date="29/09/2022",abreviation="ITL",nom="lire"} 	data["JMD"] = {code="JMD",cours="179.87",date="01/05/2025",abreviation="JMD",nom="dollar jamaïcain"} 	data["JOD"] = {code="JOD",cours="0.8033",date="01/05/2025",abreviation="JOD",nom="dinar"} 	data["JPY"] = {code="JPY",cours="161.9385",date="01/05/2025",abreviation="JPY",nom="yen"} 	data["KES"] = {code="KES",cours="147.08",date="01/05/2025",abreviation="KES",nom="shilling kényan"} 	data["KGS"] = {code="KGS",cours="99.0295221",date="01/05/2025",abreviation="KGS",nom="som"} 	data["KHR"] = {code="KHR",cours="4548",date="01/05/2025",abreviation="KHR",nom="riel"} 	data["KMF"] = {code="KMF",cours="492.0328268",date="01/05/2025",abreviation="KMF",nom="franc"} 	data["KPW"] = {code="KPW",cours="871.877632",date="29/09/2022",abreviation="KPW",nom="won"} 	data["KRW"] = {code="KRW",cours="1613.11",date="01/05/2025",abreviation="KRW",nom="won"} 	data["KWD"] = {code="KWD",cours="0.34718",date="01/05/2025",abreviation="KWD",nom="dinar"} 	data["KYD"] = {code="KYD",cours="0.9469",date="01/05/2025",abreviation="KYD",nom="dollar des îles Caïmans"} 	data["KZT"] = {code="KZT",cours="583.07",date="01/05/2025",abreviation="KZT",nom="tenge"} 	data["LAK"] = {code="LAK",cours="24565",date="01/05/2025",abreviation="LAK",nom="kip"} 	data["LBP"] = {code="LBP",cours="101803.5",date="01/05/2025",abreviation="LBP",nom="livre"} 	data["LKR"] = {code="LKR",cours="340.12",date="01/05/2025",abreviation="LKR",nom="roupie srilankaise"} 	data["LRD"] = {code="LRD",cours="227.24",date="01/05/2025",abreviation="LRD",nom="dollar libérien"} 	data["LSL"] = {code="LSL",cours="21.1565",date="01/05/2025",abreviation="LSL",nom="loti"} 	data["LYD"] = {code="LYD",cours="6.202",date="01/05/2025",abreviation="LYD",nom="dinar"} 	data["MAD"] = {code="MAD",cours="10.5313",date="01/05/2025",abreviation="MAD",nom="dirham"} 	data["MDL"] = {code="MDL",cours="19.503",date="01/05/2025",abreviation="MDL",nom="leu"} 	data["MGA"] = {code="MGA",cours="5045",date="01/05/2025",abreviation="MGA",nom="ariary"} 	data["MKD"] = {code="MKD",cours="61.535",date="01/05/2025",abreviation="MKD",nom="denar"} 	data["MMK"] = {code="MMK",cours="3487.125",date="01/05/2025",abreviation="MMK",nom="kyat"} 	data["MNT"] = {code="MNT",cours="3123.687515",date="29/09/2022",abreviation="MNT",nom="tugrik"} 	data["MOP"] = {code="MOP",cours="9.0781",date="01/05/2025",abreviation="MOP",nom="pataca"} 	data["MRO"] = {code="MRO",cours="345.84461",date="29/09/2022",abreviation="MRO",nom="ouguiya"} 	data["MUR"] = {code="MUR",cours="51.06",date="01/05/2025",abreviation="MUR",nom="roupie mauricienne"} 	data["MVR"] = {code="MVR",cours="17.45088",date="01/05/2025",abreviation="MVR",nom="rufiyaa"} 	data["MWK"] = {code="MWK",cours="1970.2",date="01/05/2025",abreviation="MWK",nom="kwacha"} 	data["MXN"] = {code="MXN",cours="22.2064",date="01/05/2025",abreviation="MXN",nom="peso"} 	data["MYR"] = {code="MYR",cours="4.8942",date="01/05/2025",abreviation="MYR",nom="ringgit"} 	data["MZN"] = {code="MZN",cours="72.47608",date="01/05/2025",abreviation="MZN",nom="metical (nouveau)"} 	data["NAD"] = {code="NAD",cours="21.1565",date="01/05/2025",abreviation="NAD",nom="dollar namibien"} 	data["NGN"] = {code="NGN",cours="1821.4",date="01/05/2025",abreviation="NGN",nom="naira"} 	data["NIO"] = {code="NIO",cours="41.81",date="01/05/2025",abreviation="NIO",nom="cordoba d’or"} 	data["NOK"] = {code="NOK",cours="11.7827",date="01/05/2025",abreviation="NOK",nom="couronne norvégienne"} 	data["NPR"] = {code="NPR",cours="153.634",date="01/05/2025",abreviation="NPR",nom="roupie népalaise"} 	data["NZD"] = {code="NZD",cours="1.90724",date="01/05/2025",abreviation="NZD",nom="dollar néo-zélandais"} 	data["OMR"] = {code="OMR",cours="0.4361",date="01/05/2025",abreviation="OMR",nom="rial"} 	data["PAB"] = {code="PAB",cours="1.1362",date="01/05/2025",abreviation="PAB",nom="balboa"} 	data["PEN"] = {code="PEN",cours="4.1659",date="01/05/2025",abreviation="PEN",nom="sol (nouveau)"} 	data["PGK"] = {code="PGK",cours="4.639",date="01/05/2025",abreviation="PGK",nom="kina"} 	data["PHP"] = {code="PHP",cours="63.16",date="01/05/2025",abreviation="PHP",nom="peso"} 	data["PKR"] = {code="PKR",cours="318.248",date="01/05/2025",abreviation="PKR",nom="roupie pakistanaise"} 	data["PLN"] = {code="PLN",cours="4.278645",date="01/05/2025",abreviation="PLN",nom="złoty"} 	data["PYG"] = {code="PYG",cours="9100",date="01/05/2025",abreviation="PYG",nom="guarani"} 	data["QAR"] = {code="QAR",cours="4.1412",date="01/05/2025",abreviation="QAR",nom="rial"} 	data["RON"] = {code="RON",cours="4.97839",date="01/05/2025",abreviation="RON",nom="leu (nouveau)"} 	data["RSD"] = {code="RSD",cours="117.191",date="01/05/2025",abreviation="RSD",nom="dinar"} 	data["RUB"] = {code="RUB",cours="92.8847",date="01/05/2025",abreviation="RUB",nom="rouble russe"} 	data["RWF"] = {code="RWF",cours="1632.2",date="01/05/2025",abreviation="RWF",nom="franc rwandais"} 	data["SAR"] = {code="SAR",cours="4.2484",date="01/05/2025",abreviation="SAR",nom="riyal"} 	data["SBD"] = {code="SBD",cours="9.468336618",date="01/05/2025",abreviation="SBD",nom="dollar des Salomon"} 	data["SCR"] = {code="SCR",cours="16.118",date="01/05/2025",abreviation="SCR",nom="roupie seychelloise"} 	data["SDG"] = {code="SDG",cours="680.3415",date="01/05/2025",abreviation="SDG",nom="livre"} 	data["SEK"] = {code="SEK",cours="10.92844",date="01/05/2025",abreviation="SEK",nom="couronne suédoise"} 	data["SGD"] = {code="SGD",cours="1.47863",date="01/05/2025",abreviation="SGD",nom="dollar de Singapour"} 	data["SHP"] = {code="SHP",cours="0.8495221757",date="01/05/2025",abreviation="SHP",nom="livre"} 	data["SLL"] = {code="SLL",cours="25587.9",date="01/05/2025",abreviation="SLL",nom="leone"} 	data["SOS"] = {code="SOS",cours="649.3",date="01/05/2025",abreviation="SOS",nom="shilling somalien"} 	data["SRD"] = {code="SRD",cours="41.9985",date="01/05/2025",abreviation="SRD",nom="dollar surinamien"} 	data["STD"] = {code="STD",cours="20051.228629",date="29/09/2022",abreviation="STD",nom="dobra"} 	data["SYP"] = {code="SYP",cours="2434.020971",date="29/09/2022",abreviation="SYP",nom="livre"} 	data["SZL"] = {code="SZL",cours="21.138",date="01/05/2025",abreviation="SZL",nom="lilangeni"} 	data["THB"] = {code="THB",cours="37.845",date="01/05/2025",abreviation="THB",nom="baht"} 	data["TJS"] = {code="TJS",cours="11.9755",date="01/05/2025",abreviation="TJS",nom="somoni"} 	data["TMT"] = {code="TMT",cours="3.955740814",date="01/05/2025",abreviation="TMT",nom="manat (nouveau)"} 	data["TND"] = {code="TND",cours="3.3745",date="01/05/2025",abreviation="TND",nom="dinar"} 	data["TOP"] = {code="TOP",cours="2.651475341",date="01/05/2025",abreviation="TOP",nom="pa’anga"} 	data["TRY"] = {code="TRY",cours="43.76911",date="01/05/2025",abreviation="TRY",nom="livre turque"} 	data["TTD"] = {code="TTD",cours="7.696",date="01/05/2025",abreviation="TTD",nom="dollar de Trinité-et-Tobago"} 	data["TWD"] = {code="TWD",cours="36.29907",date="01/05/2025",abreviation="TWD",nom="nouveau dollar de Taïwan"} 	data["TZS"] = {code="TZS",cours="3056.4",date="01/05/2025",abreviation="TZS",nom="shilling tanzanien"} 	data["UAH"] = {code="UAH",cours="47.1326",date="01/05/2025",abreviation="UAH",nom="hryvnia"} 	data["UGX"] = {code="UGX",cours="4162",date="01/05/2025",abreviation="UGX",nom="shilling ougandais"} 	data["USD"] = {code="USD",cours="1.13229125",date="01/05/2025",abreviation="$",nom="dollar"} 	data["UYU"] = {code="UYU",cours="47.81",date="01/05/2025",abreviation="UYU",nom="peso"} 	data["UZS"] = {code="UZS",cours="14695",date="01/05/2025",abreviation="UZS",nom="sum"} 	data["VEF"] = {code="VEF",cours="217805073818.5945",date="29/09/2022",abreviation="VEF",nom="bolívar fuerté"} 	data["VND"] = {code="VND",cours="29549",date="01/05/2025",abreviation="VND",nom="dong"} 	data["VUV"] = {code="VUV",cours="115.24466",date="29/09/2022",abreviation="VUV",nom="vatu"} 	data["WST"] = {code="WST",cours="2.640412",date="29/09/2022",abreviation="WST",nom="tala"} 	data["XAF"] = {code="XAF",cours="655.957",date="01/05/2025",abreviation="XAF",nom="franc CFA (BCEAC)"} 	data["XAG"] = {code="XAG",cours="0.051468",date="29/09/2022",abreviation="XAG",nom="argent (libellé en onces)"} 	data["XAU"] = {code="XAU",cours="0.000585",date="29/09/2022",abreviation="XAU",nom="or (libellé en onces)"} 	data["XCD"] = {code="XCD",cours="3.060489559",date="01/05/2025",abreviation="XCD",nom="dollar de la Caraïbe orientale"} 	data["XDR"] = {code="XDR",cours="0.8158",date="01/05/2025",abreviation="XDR",nom="droits de tirage spéciaux (DTS)"} 	data["XOF"] = {code="XOF",cours="655.957",date="01/05/2025",abreviation="XOF",nom="franc CFA (BCEAO)"} 	data["XPD"] = {code="XPD",cours="0.0013",date="29/09/2022",abreviation="XPD",nom="palladium (libellé en onces)"} 	data["XPF"] = {code="XPF",cours="119.26",date="01/05/2025",abreviation="XPF",nom="franc CFP (IEOM)"} 	data["XPT"] = {code="XPT",cours="0.0013",date="29/09/2022",abreviation="XPT",nom="platine (libellé en onces)"} 	data["YER"] = {code="YER",cours="277.4286",date="01/05/2025",abreviation="YER",nom="rial"} 	data["ZAR"] = {code="ZAR",cours="21.04267",date="01/05/2025",abreviation="ZAR",nom="rand (compte convertible)"} 	data["ZMW"] = {code="ZMW",cours="31.615",date="01/05/2025",abreviation="ZMW",nom="kwacha"} -- // BOT 	for k, v in pairs(data) do 		local d = d[k] 		if d and type(v) == 'table' then 			local code, cours, date, abr, nom = tostring(v.code), tonumber(v.cours), tostring(v.date), tostring(v.abreviation), tostring(v.nom) 			if code ~= k or not cours or date == 'nil' then 				v.statut = 'données incorrectes' 			else 				v.code = nil 				if abr == k or abr == d.abreviation or abr == d.nom then 					v.abreviation = nil 				else 					for _, alias in ipairs(d.alias) do 						if abr == alias then 							v.abreviation = nil 						end 					end 				end 				if nom == k or nom == d.abreviation or nom == d.nom then 					v.nom = nil 				else 					for _, alias in ipairs(d.alias) do 						if nom == alias then 							v.nom = nil 						end 					end 				end 				if not cours or not date then 					v.statut = 'données incomplètes' 				else 					if cours == d.cours then 						v.statut = 'inutile' 						v.cours = nil 					else 						v.cours = cours 					end 					if nom == d.nom then 						v.nom = nil 					else 						v.statut = 'nom différent' 					end 					if abr == d.abreviation then 						v.abreviation = nil 					end 					local _, _, d1, m1, y1 = find(date, '^(%d%d)/(%d%d)/(%d%d%d%d)$') 					d1, m1, y1 = tonumber(d1), tonumber(m1), tonumber(y1) 					if not y1 or not m1 or not d1 					or (y1 < 1999 or y1 > 2029 -- NOTE: validité à revoir avant 2030 (si le bot tourne encore) 						or m1 < 1 or m1 > 12 or d1 < 1 or d1 > 31 						or m1 == 2 and (d1 > 29 or d == 29 and (y1 % 4 == 0 or y1 % 100 == 0)) 						or (m1 == 4 or m1 == 6 or m1 == 9 or m1 == 11) and d1 > 30 					) then 						v.statut = 'date non valide' 					else 						v.date = y1 .. '-' .. (m1 < 10 and '0' or '') .. m1 .. '-' .. (d1 < 10 and '0' or '') .. d1 						local _, _, y0, m0, d0 = find(d.date, '^(%d%d%d%d)-(%d%d)-(%d%d)$') 						d0, m0, y0 = tonumber(d0), tonumber(m0), tonumber(y0) 						d1 = (y1 - 2000) * 365.25 + (m1 - 1) * 30.4375 + (d1 - 1) -- Approximatif mais suffisant. 						d0 = (y0 - 2000) * 365.25 + (m0 - 1) * 30.4375 + (d0 - 1) -- Approximatif mais suffisant. 						if d1 < d0  then 							v.statut = 'données obsolètes' 						elseif d1 > d0 + 60 then -- NOTE: au delà de 60 jours faire une vérification manuelle. 							if y0 < 2025 then 								v.statut = 'date erronée' 							else 								v.statut = 'antidaté' 							end 						else 							if cours and cours < d.cours * 0.8 or cours > d.cours * 1.2 then 								v.statut = 'variation excessive' 							else 								v.statut = 'mise à jour acceptée' .. (v.nom and ', mais changement de nom à vérifier' or '') 								v.cours, v.date, d.cours, d.date = d.cours, d.date, v.cours, v.date 							end 						end 					end 				end 				d['~'] = v -- statut du BOT 			end 		end 	end end mwLog('Bot end.') --]=]  local codes = {} local abreviations = {} for code, d in pairs(data) do 	if code == d.code then 		-- Ajoute ce code à la liste des codes (à trier). 		insert(codes, code) 		-- Ajoute l’abréviation en tant qu’alias si elle ne l’est pas déjà. 		local abr = d.abreviation 		insert(abreviations, abr) 		for _, alias in ipairs(d.alias) do 			if alias == abr then 				abr = nil 				break 			end 		end 		if abr then 			insert(d.alias, abr) 		end 		if not d.abreviation then 			d.abreviation = code -- Utilise ce code comme abréviation par défaut. 		end 		-- Ajoute le nom par défaut en tant qu’alias s’il ne l’est pas déjà. 		abr = d.nom 		for _, alias in ipairs(d.alias) do 			if alias == abr then 				abr = nil 				break 			end 		end 		if abr then 			insert(d.alias, abr) 		end 		data[d.nom] = d 		-- Complète le nom par défaut avec le code, pour mieux préciser l’abréviation affichée. 		d.nom = d.nom .. ' [' .. code .. ']' 		-- Trie les alias. 		sort(d.alias) 	end 	-- Ajoute ce code à la liste des codes (à trier).     sort(codes) end -- Listes finales triées des codes et abréviations. data[1] = codes data[2] = abreviations  return data