Module:Codenat

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Lua

CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

The module gets a 3-byte ISO language code and returns the corresponding full English name of the nation.

The data, more than 200 code → nation items, is taken from Template:{{Olympic teams}}.

Invocation example: {{#invoke:Codenat|codnat|GER}} will return "Germany".

When necessary, the table can easily be expanded that it serves not only the ISO 639-2/B codes but also the ISO 639-2/T, e.g.

  • COD and also DRC
  • CZE and also CES
  • GER and also DEU
  • GRE and also ELL
  • NED and also NLD

Flag icon templates will need an article for all plural forms, as e.g.

  • British Virgin Islands,
  • Cayman Islands,
  • Faroe Islands,
  • Marshall Islands,
  • Netherlands,
  • Philippines,
  • United Arab Emirates,
  • United States of America,
  • United States Virgin Islands,
  • Federated States of Micronesia.

But it can be used also for nation names as e.g.

  • Czech Republic,
  • Democratic Republic of the Congo,
  • Dominican Republic,
  • People's Republic of China,
  • Republic of Ireland,
  • Republic of the Congo>
  • State of Palestine.

and it is not the same in all languages!

Code

local p = {}

function p.codnat ( frame )
	local args = frame.args
	local nnm  = mw.text.trim ( args[1] or '' );	
	local ncd  = mw.ustring.upper( nnm )
	if ncd ~= '' then
		if 		ncd == 'AFG'  then  nnm = 'Afghanistan';
		elseif	ncd == 'ALB'  then  nnm = 'Albania';
		elseif	ncd == 'ALG'  then  nnm = 'Algeria';
		elseif	ncd == 'AND'  then  nnm = 'Andorra';
		elseif	ncd == 'ANG'  then  nnm = 'Angola';
		elseif	ncd == 'ANT'  then  nnm = 'Antigua and Barbuda';
		elseif	ncd == 'ARG'  then  nnm = 'Argentina';
		elseif	ncd == 'ARM'  then  nnm = 'Armenia';
		elseif	ncd == 'ARU'  then  nnm = 'Aruba';
		elseif	ncd == 'ASA'  then  nnm = 'American Samoa';
		elseif	ncd == 'AUS'  then  nnm = 'Australia';
		elseif	ncd == 'AUT'  then  nnm = 'Austria';
		elseif	ncd == 'AZE'  then  nnm = 'Azerbaijan';
		elseif	ncd == 'BAH'  then  nnm = 'Bahamas';
		elseif	ncd == 'BAN'  then  nnm = 'Bangladesh';
		elseif	ncd == 'BAR'  then  nnm = 'Barbados';
		elseif	ncd == 'BDI'  then  nnm = 'Burundi';
		elseif	ncd == 'BEL'  then  nnm = 'Belgium';
		elseif	ncd == 'BEN'  then  nnm = 'Benin';
		elseif	ncd == 'BER'  then  nnm = 'Bermuda';
		elseif	ncd == 'BHU'  then  nnm = 'Bhutan';
		elseif	ncd == 'BIH'  then  nnm = 'Bosnia and Herzegovina';
		elseif	ncd == 'BIZ'  then  nnm = 'Belize';
		elseif	ncd == 'BLR'  then  nnm = 'Belarus';
		elseif	ncd == 'BOL'  then  nnm = 'Bolivia';
		elseif	ncd == 'BOT'  then  nnm = 'Botswana';
		elseif	ncd == 'BRA'  then  nnm = 'Brazil';
		elseif	ncd == 'BRN'  then  nnm = 'Bahrain';
		elseif	ncd == 'BRU'  then  nnm = 'Brunei';
		elseif	ncd == 'BUL'  then  nnm = 'Bulgaria';
		elseif	ncd == 'BUR'  then  nnm = 'Burkina Faso';
		elseif	ncd == 'CAF'  then  nnm = 'Central African Republic';
		elseif	ncd == 'CAM'  then  nnm = 'Cambodia';
		elseif	ncd == 'CAN'  then  nnm = 'Canada';
		elseif	ncd == 'CAY'  then  nnm = 'Cayman Islands';
		elseif	ncd == 'CGO'  then  nnm = 'Congo-Brazzaville';
		elseif	ncd == 'CHA'  then  nnm = 'Chad';
		elseif	ncd == 'CHI'  then  nnm = 'Chile';
		elseif	ncd == 'CHN'  then  nnm = "China";
		elseif	ncd == 'CIV'  then  nnm = "Côte d'Ivoire";
		elseif	ncd == 'CMR'  then  nnm = 'Cameroon';
		elseif	ncd == 'COD'  then  nnm = 'Congo-Kinshasa';
		elseif	ncd == 'COK'  then  nnm = 'Cook Islands';
		elseif	ncd == 'COL'  then  nnm = 'Colombia';
		elseif	ncd == 'COM'  then  nnm = 'Comoros';
		elseif	ncd == 'CPV'  then  nnm = 'Cape Verde';
		elseif	ncd == 'CRC'  then  nnm = 'Costa Rica';
		elseif	ncd == 'CRO'  then  nnm = 'Croatia';
		elseif	ncd == 'CUB'  then  nnm = 'Cuba';
		elseif	ncd == 'CYP'  then  nnm = 'Cyprus';
		elseif	ncd == 'CZE'  then  nnm = 'Czechia';
		elseif	ncd == 'DEN'  then  nnm = 'Denmark';
		elseif	ncd == 'DJI'  then  nnm = 'Djibouti';
		elseif	ncd == 'DMA'  then  nnm = 'Dominica';
		elseif	ncd == 'DOM'  then  nnm = 'Dominican Republic';
		elseif	ncd == 'ECU'  then  nnm = 'Ecuador';
		elseif	ncd == 'EGY'  then  nnm = 'Egypt';
		elseif	ncd == 'ERI'  then  nnm = 'Eritrea';
		elseif	ncd == 'ESA'  then  nnm = 'El Salvador';
		elseif	ncd == 'ESP'  then  nnm = 'Spain';
		elseif	ncd == 'EST'  then  nnm = 'Estonia';
		elseif	ncd == 'ETH'  then  nnm = 'Ethiopia';
		elseif	ncd == 'FIJ'  then  nnm = 'Fiji';
		elseif	ncd == 'FIN'  then  nnm = 'Finland';
		elseif	ncd == 'FRA'  then  nnm = 'France';
		elseif	ncd == 'FRO'  then  nnm = 'Faroe Islands';
		elseif	ncd == 'FSM'  then  nnm = 'Micronesia';
		elseif	ncd == 'GAB'  then  nnm = 'Gabon';
		elseif	ncd == 'GAM'  then  nnm = 'Gambia';
		elseif	ncd == 'GBR'  then  nnm = 'United Kingdom';
		elseif	ncd == 'GBS'  then  nnm = 'Guinea-Bissau';
		elseif	ncd == 'GEO'  then  nnm = 'Georgia';
		elseif	ncd == 'GEQ'  then  nnm = 'Equatorial Guinea';
		elseif	ncd == 'GER'  then  nnm = 'Germany';
		elseif	ncd == 'GHA'  then  nnm = 'Ghana';
		elseif	ncd == 'GRE'  then  nnm = 'Greece';
		elseif	ncd == 'GRN'  then  nnm = 'Grenada';
		elseif	ncd == 'GUA'  then  nnm = 'Guatemala';
		elseif	ncd == 'GUI'  then  nnm = 'Guinea';
		elseif	ncd == 'GUM'  then  nnm = 'Guam';
		elseif	ncd == 'GUY'  then  nnm = 'Guyana';
		elseif	ncd == 'HAI'  then  nnm = 'Haiti';
		elseif	ncd == 'HKG'  then  nnm = 'Hong Kong';
		elseif	ncd == 'HON'  then  nnm = 'Honduras';
		elseif	ncd == 'HUN'  then  nnm = 'Hungary';
		elseif	ncd == 'INA'  then  nnm = 'Indonesia';
		elseif	ncd == 'IND'  then  nnm = 'India';
		elseif	ncd == 'IRI'  then  nnm = 'Iran';
		elseif	ncd == 'IRL'  then  nnm = 'Ireland';
		elseif	ncd == 'IRQ'  then  nnm = 'Iraq';
		elseif	ncd == 'ISL'  then  nnm = 'Iceland';
		elseif	ncd == 'ISR'  then  nnm = 'Israel';
		elseif	ncd == 'ISV'  then  nnm = 'United States Virgin Islands';
		elseif	ncd == 'ITA'  then  nnm = 'Italy';
		elseif	ncd == 'IVB'  then  nnm = 'British Virgin Islands';
		elseif	ncd == 'JAM'  then  nnm = 'Jamaica';
		elseif	ncd == 'JOR'  then  nnm = 'Jordan';
		elseif	ncd == 'JPN'  then  nnm = 'Japan';
		elseif	ncd == 'KAZ'  then  nnm = 'Kazakhstan';
		elseif	ncd == 'KEN'  then  nnm = 'Kenya';
		elseif	ncd == 'KGZ'  then  nnm = 'Kyrgyzstan';
		elseif	ncd == 'KIR'  then  nnm = 'Kiribati';
		elseif	ncd == 'KOR'  then  nnm = 'South Korea';
		elseif	ncd == 'KOS'  then  nnm = 'Kosovo';
		elseif	ncd == 'KSA'  then  nnm = 'Saudi Arabia';
		elseif	ncd == 'KUW'  then  nnm = 'Kuwait';
		elseif	ncd == 'LAO'  then  nnm = 'Laos';
		elseif	ncd == 'LAT'  then  nnm = 'Latvia';
		elseif	ncd == 'LBA'  then  nnm = 'Libya';
		elseif	ncd == 'LBN'  then  nnm = 'Lebanon';
		elseif	ncd == 'LBR'  then  nnm = 'Liberia';
		elseif	ncd == 'LCA'  then  nnm = 'Saint Lucia';
		elseif	ncd == 'LES'  then  nnm = 'Lesotho';
		elseif	ncd == 'LIE'  then  nnm = 'Liechtenstein';
		elseif	ncd == 'LTU'  then  nnm = 'Lithuania';
		elseif	ncd == 'LUX'  then  nnm = 'Luxembourg';
		elseif	ncd == 'MAC'  then  nnm = 'Macau';
		elseif	ncd == 'MAD'  then  nnm = 'Madagascar';
		elseif	ncd == 'MAR'  then  nnm = 'Morocco';
		elseif	ncd == 'MAS'  then  nnm = 'Malaysia';
		elseif	ncd == 'MAW'  then  nnm = 'Malawi';
		elseif	ncd == 'MDA'  then  nnm = 'Moldova';
		elseif	ncd == 'MDV'  then  nnm = 'Maldives';
		elseif	ncd == 'MEX'  then  nnm = 'Mexico';
		elseif	ncd == 'MGL'  then  nnm = 'Mongolia';
		elseif	ncd == 'MHL'  then  nnm = 'Marshall Islands';
		elseif	ncd == 'MKD'  then  nnm = 'North Macedonia';
		elseif	ncd == 'MLI'  then  nnm = 'Mali';
		elseif	ncd == 'MLT'  then  nnm = 'Malta';
		elseif	ncd == 'MNE'  then  nnm = 'Montenegro';
		elseif	ncd == 'MON'  then  nnm = 'Monaco';
		elseif	ncd == 'MOZ'  then  nnm = 'Mozambique';
		elseif	ncd == 'MRI'  then  nnm = 'Mauritius';
		elseif	ncd == 'MTN'  then  nnm = 'Mauritania';
		elseif	ncd == 'MYA'  then  nnm = 'Myanmar';
		elseif	ncd == 'NAM'  then  nnm = 'Namibia';
		elseif	ncd == 'NCA'  then  nnm = 'Nicaragua';
		elseif	ncd == 'NLD'  then  nnm = 'Netherlands';
		elseif	ncd == 'NEP'  then  nnm = 'Nepal';
		elseif	ncd == 'NGR'  then  nnm = 'Nigeria';
		elseif	ncd == 'NIG'  then  nnm = 'Niger';
		elseif	ncd == 'NOR'  then  nnm = 'Norway';
		elseif	ncd == 'NRU'  then  nnm = 'Nauru';
		elseif	ncd == 'NZL'  then  nnm = 'New Zealand';
		elseif	ncd == 'OMA'  then  nnm = 'Oman';
		elseif	ncd == 'PAK'  then  nnm = 'Pakistan';
		elseif	ncd == 'PAN'  then  nnm = 'Panama';
		elseif	ncd == 'PAR'  then  nnm = 'Paraguay';
		elseif	ncd == 'PER'  then  nnm = 'Peru';
		elseif	ncd == 'PHL'  then  nnm = 'Philippines';
		elseif	ncd == 'PLE'  then  nnm = 'Palestine';
		elseif	ncd == 'PLW'  then  nnm = 'Palau';
		elseif	ncd == 'PNG'  then  nnm = 'Papua New Guinea';
		elseif	ncd == 'POL'  then  nnm = 'Poland';
		elseif	ncd == 'POR'  then  nnm = 'Portugal';
		elseif	ncd == 'PRK'  then  nnm = 'North Korea';
		elseif	ncd == 'PUR'  then  nnm = 'Puerto Rico';
		elseif	ncd == 'QAT'  then  nnm = 'Qatar';
		elseif	ncd == 'ROU'  then  nnm = 'Romania';
		elseif	ncd == 'RSA'  then  nnm = 'South Africa';
		elseif	ncd == 'RUS'  then  nnm = 'Russia';
		elseif	ncd == 'RWA'  then  nnm = 'Rwanda';
		elseif	ncd == 'SAM'  then  nnm = 'Samoa';
		elseif	ncd == 'SEN'  then  nnm = 'Senegal';
		elseif	ncd == 'SEY'  then  nnm = 'Seychelles';
		elseif	ncd == 'SGP'  then  nnm = 'Singapore';
		elseif	ncd == 'SKN'  then  nnm = 'Saint Kitts and Nevis';
		elseif	ncd == 'SLE'  then  nnm = 'Sierra Leone';
		elseif	ncd == 'SLO'  then  nnm = 'Slovenia';
		elseif	ncd == 'SMR'  then  nnm = 'San Marino';
		elseif	ncd == 'SOL'  then  nnm = 'Solomon Islands';
		elseif	ncd == 'SOM'  then  nnm = 'Somalia';
		elseif	ncd == 'SRB'  then  nnm = 'Serbia';
		elseif	ncd == 'SRI'  then  nnm = 'Sri Lanka';
		elseif	ncd == 'SSD'  then  nnm = 'South Sudan';
		elseif	ncd == 'STP'  then  nnm = 'São Tomé and Príncipe';
		elseif	ncd == 'SUD'  then  nnm = 'Sudan';
		elseif	ncd == 'SUI'  then  nnm = 'Switzerland';
		elseif	ncd == 'SUR'  then  nnm = 'Suriname';
		elseif	ncd == 'SVK'  then  nnm = 'Slovakia';
		elseif	ncd == 'SWE'  then  nnm = 'Sweden';
		elseif	ncd == 'SWZ'  then  nnm = 'Eswatini';
		elseif	ncd == 'SYR'  then  nnm = 'Syria';
		elseif	ncd == 'TAN'  then  nnm = 'Tanzania';
		elseif	ncd == 'TGA'  then  nnm = 'Tonga';
		elseif	ncd == 'THA'  then  nnm = 'Thailand';
		elseif	ncd == 'TJK'  then  nnm = 'Tajikistan';
		elseif	ncd == 'TKM'  then  nnm = 'Turkmenistan';
		elseif	ncd == 'TLS'  then  nnm = 'East Timor';
		elseif	ncd == 'TOG'  then  nnm = 'Togo';
		elseif	ncd == 'TPE'  then  nnm = 'Taiwan';
		elseif	ncd == 'TTO'  then  nnm = 'Trinidad and Tobago';
		elseif	ncd == 'TUN'  then  nnm = 'Tunisia';
		elseif	ncd == 'TUR'  then  nnm = 'Turkey';
		elseif	ncd == 'TUV'  then  nnm = 'Tuvalu';
		elseif	ncd == 'UAE'  then  nnm = 'United Arab Emirates';
		elseif	ncd == 'UGA'  then  nnm = 'Uganda';
		elseif	ncd == 'UKR'  then  nnm = 'Ukraine';
		elseif	ncd == 'URU'  then  nnm = 'Uruguay';
		elseif	ncd == 'USA'  then  nnm = 'United States';
		elseif	ncd == 'UZB'  then  nnm = 'Uzbekistan';
		elseif	ncd == 'VAN'  then  nnm = 'Vanuatu';
		elseif	ncd == 'VEN'  then  nnm = 'Venezuela';
		elseif	ncd == 'VIE'  then  nnm = 'Vietnam';
		elseif	ncd == 'VIN'  then  nnm = 'Saint Vincent and the Grenadines';
		elseif	ncd == 'YEM'  then  nnm = 'Yemen';
		elseif	ncd == 'ZAM'  then  nnm = 'Zambia';
		elseif	ncd == 'ZIM'  then  nnm = 'Zimbabwe';
		else    nnm  = 'wrong code';		-- not found: return [empty string?]
		end
	end
	return nnm;
end

function p.codplu ( frame )			-- article ("the") for plural forms of flag icons
	local args = frame.args
	local ret  = '';
	local ncd  = mw.ustring.upper( mw.text.trim ( args[1] ) ) or '';
	if ncd ~= '' then
		if	ncd == 'CAY'
		or	ncd == 'FRO'
		or	ncd == 'FSM'
		or	ncd == 'ISV'
		or	ncd == 'IVB'
		or	ncd == 'MHL'
		or	ncd == 'NLD'
		or	ncd == 'PHL'
		or	ncd == 'UAE'
		or	ncd == 'USA'
		then ret = '1'; 
		end
	end
	return ret;
end

return p;