模組:Infobox road/locations
外观
local p = {}
local format = mw.ustring.format
local frame = mw.getCurrentFrame()
local getArgs = require('Module:Arguments').getArgs
local function country(args)
local state = args.state or args.province
local country
local countryModule = mw.loadData("Module:Road data/countrymask")
local country = args.country or countryModule[state]
return country
end
local function state(args)
local state = args.state or args.province
local country = country(args)
return frame:expandTemplate ({title='Country name', args = { country .. "-" .. state}})
end
local function state2(args)
local state = args.state2 or args.province2
local country = country(args)
return frame:expandTemplate ({title='Country name', args = { country .. "-" .. state}})
end
local function spain(args)
local province = args.province or args.community
local communities = {
["AL"] = "AN",
["CA"] = "AN",
["CO"] = "AN",
["GR"] = "AN",
["H"] = "AN",
["J"] = "AN",
["MA"] = "AN",
["SE"] = "AN",
["HU"] = "AR",
["TE"] = "AR",
["Z"] = "AR",
["O"] = "AS",
["S"] = "CB",
["AV"] = "CL",
["BU"] = "CL",
["LE"] = "CL",
["P"] = "CL",
["SA"] = "CL",
["SG"] = "CL",
["SO"] = "CL",
["VA"] = "CL",
["ZA"] = "CL",
["AB"] = "CM",
["CR"] = "CM",
["CU"] = "CM",
["GU"] = "CM",
["TO"] = "CM",
["GC"] = "CN",
["TF"] = "CN",
["B"] = "CT",
["GI"] = "CT",
["L"] = "CT",
["T"] = "CT",
["BA"] = "EX",
["CC"] = "EX",
["C"] = "GA",
["LU"] = "GA",
["OR"] = "GA",
["PO"] = "GA",
["PM"] = "IB",
["MU"] = "MC",
["M"] = "MD",
["NA"] = "NC",
["VI"] = "PV",
["BI"] = "PV",
["SS"] = "PV",
["LO"] = "RI",
["A"] = "VC",
["CS"] = "VC",
["V"] = "VC",
}
local comm = communities[province]
local data = frame:expandTemplate ({title='Flagg', args = { "xx", frame:expandTemplate ({title='Country name', args = { "ESP-" .. comm}}) } })
return data
end
local function constituent(args)
local loc = country(args)
if loc == "GBR" then
return nil
else
local labels = {
["ENG"] = "構成國",
["NIR"] = "構成國",
["SCT"] = "構成國",
["WLS"] = "構成國",
["NLD"] = "構成國",
["ABW"] = "構成國",
["CUW"] = "構成國",
["SXM"] = "構成國",
["GGY"] = "王室屬地",
["IMN"] = "王室屬地",
["JEY"] = "王室屬地",
["AIA"] = "海外領土",
["BMU"] = "海外領土",
["IOT"] = "海外領土",
["VGB"] = "海外領土",
["CYM"] = "海外領土",
["FLK"] = "海外領土",
["GIB"] = "海外領土",
["MSR"] = "海外領土",
["PCN"] = "海外領土",
["SHN"] = "海外領土",
["SGS"] = "海外領土",
["TCA"] = "海外領土",
}
local label = labels[loc]
local countryname = frame:expandTemplate ({title='Country name', args = { country(args)}})
local data = frame:expandTemplate ({title='Flagg', args = { "xx", countryname, nodata = 1 }})
return label, data
end
end
local function location(args)
local infobox_args = {}
infobox_args['title'] = '地點'
infobox_args['bodystyle'] = 'display:inline-table;'
infobox_args['child'] = 'yes'
infobox_args['decat'] = 'yes'
------------- EUROPE & ASIA --------------
if country(args) == "EUR" or country(args) == "ASIA" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = args.countries
------------- ÅLAND --------------
elseif country(args) == "ALA" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[芬兰]]"
infobox_args['label2'] = '自治區'
infobox_args['data2'] = "[[奥兰]]"
------------- AUSTRALIA --------------
elseif country(args) == "AUS" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[澳大利亚]]"
local function lga(args)
local labels = {
SA = "[[南澳大利亞州地方政府區域|地方政府區域]]",
VIC = "[[維多利亞州地方政府區域|地方政府區域]]",
NSW = "[[新南威爾斯州地方政府區域|地方政府區域]]",
QLD = "[[昆士蘭州地方政府區域|地方政府區域]]",
NT = "[[北領地地方政府區域|地方政府區域]]",
WA = "[[西澳大利亞州地方政府區域|地方政府區域]]",
TAS = "[[塔斯马尼亚州地方政府区域|地方政府區域]]",
ACT = "區"
}
local state = args.state or ''
local label = labels[state] or "[[澳大利亞地方政府|地方政府區域]]"
return label, args.lga
end
local function locations(args)
local labels = {
highway = "主要聚居地",
["rural road"] = "主要聚居地",
freeway = "主要郊區",
["city highway"] = "主要郊區",
road = "主要郊區",
street = "郊區"
}
local type = args.type or ''
local label = labels[type] or "主要目的地"
return label, args.locations
end
if args.state then
if args.state == "NT" or args.state == "ACT" or args.state == "JBT" then
infobox_args['label2'] = '領地'
else
infobox_args['label2'] = '州'
end
infobox_args['data2'] = frame:expandTemplate ({title='Flagg', args = {"xx" , state(args), nodata = 1 }})
else
infobox_args['label2'] = '州'
infobox_args['data2'] = args.states
end
infobox_args['label3'], infobox_args['data3'] = lga(args)
infobox_args['label4'], infobox_args['data4'] = locations(args)
------------- BRAZIL --------------
elseif country(args) == "BRA" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[巴西]]"
if args.state then
if args.state == "DF" then
infobox_args['label2'] = '聯邦區'
else
infobox_args['label2'] = '州'
end
infobox_args['data2'] = frame:expandTemplate ({title='Flagg', args = {"xx" , state(args), nodata = 1 }})
else
infobox_args['label2'] = '州'
infobox_args['data2'] = args.states
end
------------- CANADA --------------
elseif country(args) == "CAN" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[加拿大]]"
if args.province then
if args.province == "YK" or args.province == "NT" or args.province == "NU" then
infobox_args['label2'] = '地區'
else
infobox_args['label2'] = '省'
end
infobox_args['data2'] = frame:expandTemplate ({title='Flagg', args = {"xx" , state(args), nodata = 1 }})
else
infobox_args['label2'] = '省'
infobox_args['data2'] = args.provinces
end
if args.province == 'AB' then
infobox_args['label3'] = "特別與鄉村市鎮"
infobox_args['data3'] = args.rural_municipalities
infobox_args['label4'] = "特別地區"
infobox_args['data4'] = args.areas
infobox_args['label5'] = "改善區"
infobox_args['data5'] = args.districts
elseif args.province == 'BC' then
infobox_args['label3'] = "地方分區"
infobox_args['data3'] = args.districts or args.rural_municipalities
elseif args.province == 'MB' or args.province == 'SK' then
infobox_args['label3'] = "鄉村市鎮"
infobox_args['data3'] = args.rural_municipalities
elseif args.province == 'NB' or args.province == 'PE' then
infobox_args['label3'] = "縣"
infobox_args['data3'] = args.counties
infobox_args['label4'] = "堂區"
infobox_args['data4'] = args.parishes
infobox_args['label5'] = "社區"
infobox_args['data5'] = args.communities
elseif args.province == 'NS' then
infobox_args['label3'] = "縣"
infobox_args['data3'] = args.counties
elseif args.province == 'ON' then
infobox_args['label3'] = "市鎮"
infobox_args['data3'] = args.rural_municipalities
infobox_args['label4'] = "縣"
infobox_args['data4'] = args.counties
infobox_args['label5'] = "地方"
infobox_args['data5'] = args.regions
infobox_args['label6'] = "區"
infobox_args['data6'] = args.districts
infobox_args['label7'] = "分區"
infobox_args['data7'] = args.divisions
elseif args.province == 'QC' then
infobox_args['label3'] = "地方市鎮"
infobox_args['data3'] = args.rural_municipalities
infobox_args['label4'] = "等同領地"
infobox_args['data4'] = args.territories
elseif args.province == 'NT' or args.province == 'NU' then
infobox_args['label3'] = "Regions"
infobox_args['data3'] = args.regions
end
------------- CHINA --------------
elseif country(args) == "CHN" or country(args) == "PRC" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[中华人民共和国]]"
if args.province then
infobox_args['label2'] = '省'
infobox_args['data2'] = frame:expandTemplate ({title='Flagg', args = {"xx" , state(args), nodata = 1 }})
infobox_args['label3'] = '縣'
infobox_args['data3'] = args.counties
else
infobox_args['label2'] = '省'
infobox_args['data2'] = args.provinces
infobox_args['label3'] = '自治區'
infobox_args['data3'] = args.regions
end
------------- FRANCE --------------
elseif country(args) == "FRA" or country(args) == "GUF" or country(args) == "GLP" or country(args) == "MTQ" or country(args) == "MYT" or country(args) == "REU" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[法国]]"
if country(args) == "GUF" then
infobox_args['label2'] = '海外省及大區'
infobox_args['data2'] = "[[法屬圭亞那]]"
elseif country(args) == "GLP" then
infobox_args['label2'] = '海外省'
infobox_args['data2'] = "[[瓜德罗普]]"
elseif country(args) == "MTQ" then
infobox_args['label2'] = '海外省'
infobox_args['data2'] = "[[馬提尼克]]"
elseif country(args) == "MYT" then
infobox_args['label2'] = '海外省'
infobox_args['data2'] = "[[马约特]]"
elseif country(args) == "REU" then
infobox_args['label2'] = '海外省'
infobox_args['data2'] = "[[留尼汪]]"
else
infobox_args['label2'] = '大區'
infobox_args['data2'] = args.regions
infobox_args['label3'] = '省'
infobox_args['data3'] = args.departments
end
------------ GEORGIA -------------
elseif country(args) == "GEO" then
infobox_args['data1'] = "[[格鲁吉亚]]"
------------ HONG KONG -------------
elseif country(args) == "HKG" then
infobox_args['label1'] = '地區'
infobox_args['data1'] = "[[香港]]"
infobox_args['label2'] = '區'
infobox_args['data2'] = args.districts
------------- INDIA --------------
elseif country(args) == "IND" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[印度]]"
infobox_args['label4'] = '縣'
infobox_args['data4'] = args.districts
if args.state then
if args.state == "AN" or args.state == 'CH' or args.state == 'DH' or args.state == 'DL' or args.state == 'JK' or args.state == 'LA' or args.state == 'LD' or args.state == 'PY' then
infobox_args['label2'] = '聯邦屬地'
else
infobox_args['label2'] = '邦'
end
infobox_args['data2'] = frame:expandTemplate ({title='Flagg', args = {"xx" , state(args), nodata = 1 }})
else
infobox_args['label2'] = '邦'
infobox_args['data2'] = args.states
infobox_args['label3'] = '聯邦屬地'
infobox_args['data3'] = args.territories
end
------------ MACAU -------------
elseif country(args) == "MAC" then
infobox_args['label1'] = '地區'
infobox_args['data1'] = "[[澳門]]"
------------- MEXICO --------------
elseif country(args) == "MEX" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[墨西哥]]"
if args.state then
if args.state == "CMX" then
infobox_args['label2'] = '自治市'
else
infobox_args['label2'] = '州'
end
if args.state == "CHH" then
infobox_args['data2'] = '[[奇瓦瓦州]]'
elseif args.state == "HID" then
infobox_args['data2'] = '[[伊達爾戈州]]'
elseif args.state == "MEX" then
infobox_args['data2'] = '[[墨西哥州]]'
else
infobox_args['data2'] = frame:expandTemplate ({title='Flagg', args = {"xx" , state(args), nodata = 1 }})
end
infobox_args['label3'] = '市鎮'
infobox_args['data3'] = args.counties or args.municipalities
else
infobox_args['label2'] = '州'
infobox_args['data2'] = args.states
infobox_args['label3'] = '市鎮'
infobox_args['data3'] = args.counties or args.municipalities
end
------------- NETHERLANDS --------------
elseif country(args) == "NLD" or country(args) == "ABW" or country(args) == "CUW" or country(args) == "SXM"then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[荷兰王国]]"
infobox_args['label2'], infobox_args['data2'] = constituent(args)
if country(args) == "NLD" then
infobox_args['label3'] = '省'
infobox_args['data3'] = args.provinces
end
------------- RUSSIA --------------
elseif country(args) == "RUS" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[俄罗斯]]"
infobox_args['label2'] = '州'
infobox_args['data2'] = args.oblasts
infobox_args['label3'] = '共和國'
infobox_args['data3'] = args.republics
infobox_args['label4'] = '自治區'
infobox_args['data4'] = args.okrugs
infobox_args['label5'] = '邊疆區'
infobox_args['data5'] = args.krais
infobox_args['label6'] = '直轄市'
infobox_args['data6'] = args.federal_cities
------------- SPAIN --------------
elseif country(args) == "ESP" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[西班牙]]"
local province = args.province
if province and province ~= '' then
infobox_args['label2'] = '自治區'
infobox_args['data2'] = spain(args)
if province == "O" or province == "S" or province == "PM" or province == "LO" or province == "M" or province == "MU" or province == "NA" then
return nil
else
infobox_args['label3'] = '省'
infobox_args['data3'] = frame:expandTemplate ({title='Flagg', args = {"xx" , state(args), nodata = 1 }})
end
elseif args.community then
infobox_args['label2'] = '自治區'
infobox_args['data2'] = frame:expandTemplate ({title='Flagg', args = {"xx" , frame:expandTemplate ({title='country name', args = {"ESP-" .. args.community} }) } })
infobox_args['label3'] = '省'
infobox_args['data3'] = args.provinces
else
infobox_args['label2'] = '自治區'
infobox_args['data2'] = args.communities
infobox_args['label3'] = '省'
infobox_args['data3'] = args.provinces
end
------------ TAIWAN -------------
elseif country(args) == "TWN" then
infobox_args['label1'] = '地區'
infobox_args['data1'] = "[[臺灣]]"
------------- UNITED KINGDOM --------------
elseif country(args) == "GBR" or country(args) == "ENG" or country(args) == "NIR" or country(args) == "SCT" or country(args) == "WLS" or
country(args) == "GGY" or country(args) == "IMN" or country(args) == "JEY" or country(args) == "AIA" or country(args) == "BMU" or
country(args) == "IOT" or country(args) == "VGB" or country(args) == "CYM" or country(args) == "FLK" or country(args) == "GIB" or
country(args) == "MSR" or country(args) == "PCN" or country(args) == "SHN" or country(args) == "SGS" or country(args) == "TCA" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[英国]]"
infobox_args['label2'], infobox_args['data2'] = constituent(args)
if country(args) ~= "ENG" then
infobox_args['label5'] = '郡'
infobox_args['data5'] = args.counties
end
if country(args) == "ENG" then
infobox_args['label3'] = '區域'
infobox_args['data3'] = args.areas
infobox_args['label4'] = '郡'
infobox_args['data4'] = args.counties
infobox_args['label5'] = '自治市鎮'
infobox_args['data5'] = args.boroughs
elseif country(args) == "NIR" then
infobox_args['label3'] = '區'
infobox_args['data3'] = args.districts
elseif country(args) == "SCT" then
infobox_args['label3'] = '議會轄區'
infobox_args['data3'] = args.areas
elseif country(args) == "WLS" then
infobox_args['label3'] = '郡'
infobox_args['data3'] = args.counties
infobox_args['label4'] = '郡自治市鎮'
infobox_args['data4'] = args.boroughs
elseif country(args) == "GGY" or country(args) == "JEY" or country(args) == "BMU" or country(args) == "MSR" then
infobox_args['label3'] = '堂區'
infobox_args['data3'] = args.parishes
elseif country(args) == "IMN" then
infobox_args['label3'] = '行政區'
infobox_args['data3'] = args.sheadings
elseif country(args) == "AIA" or country(args) == "VGB" or country(args) == "CYM" or country(args) == "TCA" then
infobox_args['label3'] = '區'
infobox_args['data3'] = args.districts
elseif country(args) == "SHN" then
infobox_args['label3'] = '島'
infobox_args['data3'] = args.island
end
------------- UNITED STATES --------------
elseif country(args) == "USA" then
infobox_args['label1'] = '國家'
infobox_args['data1'] = "[[美国]]"
local function county(args)
local state = args.state
local stateName = frame:expandTemplate ({title='Country name', args = { "USA-" .. state}})
local country = country(args)
local countyName = args.county or args.parish or args.borough or args.municipality
local county
if state == 'LA' then
county = '堂區'
elseif state == 'AK' then
county = '自治市鎮'
elseif state == 'PR' then
county = '市鎮'
else
county = '縣'
end
return string.format("[[%s%s (%s)|%s]]", countyName, county, stateName, countyName)
end
if args.state2 then
infobox_args['label2'] = '州'
infobox_args['data2'] = frame:expandTemplate ({title='Flagg', args = {"xx" , state(args) }}) .. ", " .. frame:expandTemplate ({title='Flagg', args = {"xx" , state2(args) }})
elseif args.state then
if args.state == "AS" or args.state == "GU" or args.state == "MP" or args.state == "PR" or args.state == "VI" then
infobox_args['label2'] = '屬地'
elseif args.state == "DC" then
infobox_args['label2'] = '聯邦地區'
else
infobox_args['label2'] = '州'
end
if args.state == "GA" then
infobox_args['data2'] = '[[喬治亞州]]'
elseif args.state == "WA" then
infobox_args['data2'] = '[[华盛顿州]]'
elseif args.state == "NY" then
infobox_args['data2'] = '[[纽约州]]'
else
infobox_args['data2'] = frame:expandTemplate ({title='Flagg', args = {"xx" , state(args), nodata = 1 }})
end
else
infobox_args['label2'] = '州'
infobox_args['data2'] = args.states
end
if args.county then
infobox_args['label3'] = '縣'
infobox_args['data3'] = county(args)
else
infobox_args['label3'] = '縣'
infobox_args['data3'] = args.counties
end
if args.parish then
infobox_args['label4'] = '堂區'
infobox_args['data4'] = county(args)
else
infobox_args['label4'] = '堂區'
infobox_args['data4'] = args.parishes
end
if args.borough then
infobox_args['label5'] = '自治市鎮'
infobox_args['data5'] = county(args)
else
infobox_args['label5'] = '自治市鎮'
infobox_args['data5'] = args.boroughs
end
if args.municipality then
infobox_args['label6'] = '自治體'
infobox_args['data6'] = county(args)
else
infobox_args['label6'] = '自治體'
infobox_args['data6'] = args.municipalities
end
if args.indep_city then
infobox_args['label6'] = '獨立市'
infobox_args['data6'] = args.indep_city
else
infobox_args['label7'] = '獨立市'
infobox_args['data7'] = args.indep_cities
end
else
------------- ALL OTHER COUNTRIES --------------
if country(args) ~= nil then
local countryname = frame:expandTemplate ({title='Country name', args = { country(args)}})
infobox_args['label1'] = '國家'
infobox_args['data1'] = frame:expandTemplate ({title='Flagg', args = { "xx", countryname, nodata = 1 }})
else
infobox_args['label1'] = '國家'
infobox_args['data1'] = args.countries
end
infobox_args['label2'] = '島'
infobox_args['data2'] = args.island
infobox_args['label3'] = '社區'
infobox_args['data3'] = args.communities
infobox_args['label4'] = '地區'
infobox_args['data4'] = args.regions
infobox_args['label5'] = '省'
infobox_args['data5'] = args.provinces
infobox_args['label6'] = '州'
infobox_args['data6'] = args.states
infobox_args['label7'] = '省'
infobox_args['data7'] = args.governorates
infobox_args['label8'] = '縣'
infobox_args['data8'] = args.counties
infobox_args['label9'] = '省'
infobox_args['data9'] = args.departments
infobox_args['label10'] = '州'
infobox_args['data10'] = args.cantons
infobox_args['label11'] = '都道府縣'
infobox_args['data11'] = args.prefectures
infobox_args['label12'] = '分區'
infobox_args['data12'] = args.divisions
infobox_args['label13'] = '州'
infobox_args['data13'] = args.oblasts
infobox_args['label14'] = '區'
infobox_args['data14'] = args.districts
infobox_args['label15'] = '堂區'
infobox_args['data15'] = args.parishes
infobox_args['label16'] = '市鎮'
infobox_args['data16'] = args.communes
infobox_args['label17'] = '領地'
infobox_args['data17'] = args.territories
infobox_args['label18'] = args.label1
infobox_args['data18'] = args.location1
infobox_args['label19'] = args.label2
infobox_args['data19'] = args.location2
infobox_args['label20'] = args.label3
infobox_args['data20'] = args.location3
infobox_args['label21'] = args.label4
infobox_args['data21'] = args.location4
infobox_args['label22'] = args.label5
infobox_args['data22'] = args.location5
infobox_args['label23'] = '次級地方'
infobox_args['data23'] = args.subregions
infobox_args['label24'] = '副縣'
infobox_args['data24'] = args.subcounties
infobox_args['label25'] = '支廳'
infobox_args['data25'] = args.subprefectures
end
if country(args) ~= "USA" then
infobox_args['label26'] = '市鎮'
infobox_args['data26'] = args.municipalities
infobox_args['label27'] = '主要城市'
infobox_args['data27'] = args.cities
infobox_args['label28'] = '鎮'
infobox_args['data28'] = args.towns
infobox_args['label29'] = '村'
infobox_args['data29'] = args.villages
if country(args) == "GBR" or country(args) == "ENG" or country(args) == "NIR" or country(args) == "SCT" or country(args) == "WLS" or
country(args) == "GGY" or country(args) == "IMN" or country(args) == "JEY" or country(args) == "AIA" or country(args) == "BMU" or
country(args) == "IOT" or country(args) == "VGB" or country(args) == "CYM" or country(args) == "FLK" or country(args) == "GIB" or
country(args) == "MSR" or country(args) == "PCN" or country(args) == "SHN" or country(args) == "SGS" or country(args) == "TCA" then
infobox_args['label30'] = frame:expandTemplate ({title='link-en', args = {'英國道路#主要目的地', 'Roads in the United Kingdom#Primary destinations', '主要目的地'}})
infobox_args['data30'] = args.destinations
else
infobox_args['label30'] = '主要目的地'
infobox_args['data30'] = args.destinations
end
end
return frame:expandTemplate ({title='Infobox', args = infobox_args})
end
local function params(args)
if country(args) or args.areas or args.borough or args.boroughs or args.cantons or args.cities or args.communes or args.communities or args.counties or
args.countries or args.county or args.departments or args.destinations or args.districts or args.divisions or args.federal_cities or args.governorates or
args.indep_city or args.indep_cities or args.island or args.krais or args.label1 or args.label2 or args.label3 or args.label4 or args.label5 or args.lga or
args.location1 or args.location2 or args.location3 or args.location4 or args.location5 or args.locations or args.municipalities or args.municipality or
args.oblasts or args.okrugs or args.parish or args.parishes or args.prefectures or args.provinces or args.regions or args.republics or args.rural_municipalities or
args.sheadings or args.states or args.subcounties or args.subprefectures or args.subregions or args.territories or args.towns or args.villages then
return true
else
return false
end
end
function p.location(frame)
local args = getArgs(frame)
if params(args) == false then
return nil
else
return location(args)
end
end
return p