Mòideal:ISO 639
(deasbaireachd⧼tpt-languages-separator⧽ ⧼tpt-languages-separator⧽eachdraidh⧼tpt-languages-separator⧽ceanglaichean⧼tpt-languages-separator⧽doc⧼tpt-languages-separator⧽bogsa-gainmhich⧼tpt-languages-separator⧽cùisean deuchainn)
This module is currently protected from editing. See the protection policy and protection log for more details. Please discuss any changes on the talk page; you may submit an edit request to ask an administrator to make an edit if it is uncontroversial or supported by consensus. You may also request that this page be unprotected. |
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
Language templates |
---|
Languages (ISO 639) |
|
Uicleir ceanglaichean-Uici |
|
Eile |
|
Data |
This module could potentially replace the sub template system of Teamplaid:ISO 639 name (Sònraichte:PrefixIndex/Teamplaid:ISO 639 name) and is used by Teamplaid:ISO 639 code-1, Teamplaid:ISO 639 code-2, Teamplaid:ISO 639 code-3, Teamplaid:ISO 639 code-5.
Eisimpleirean - Examples
name (function) | part1 (function) | part2 (function) | part3 (function) | part5 (function) | part5 (function) hierachy (parameter) | |
---|---|---|---|---|---|---|
English | English | en | eng | eng | ||
en | English | en | eng | eng | ||
EN | English | en | eng | eng | ||
eng | English | en | eng | eng | ||
fr | French | fr | fre | fra | ||
French | French | fr | fre | fra | ||
En | En | enc | ||||
abj | Aka-Bea | abj | ||||
Abellen Ayta | Abellen Ayta | abp | ||||
French, Cajun | Cajun French | frc | ||||
Mande languages | Mande languages | dmn | nic:dmn | |||
apa | Apache languages | apa | apa | nai:xnd:ath:apa | ||
East Germanic languages | East Germanic languages | gme | ine:gem:gme | |||
Germanic languages | Germanic languages | gem | gem | ine:gem:gme |
Fo-dhuilleagan - Subpages
Ùrachadh - Update
If you feel this Module needs updating you can
- Use Mòideal:ISO 639/data/make to main data table
- Use Mòideal:ISO 639/data/altnames/make to update alternative names
- Manually update Mòideal:ISO 639/data/ISO 639-5 (Only ~100 codes in ISO 639-5, at the Library of Congress at id and en)
}}
local p = {}
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local data = mw.loadData('Module:ISO 639/data')
local altnames = mw.loadData('Module:ISO 639/data/altnames')
local ISO_639_5 = mw.loadData('Module:ISO 639/data/ISO_639-5')
function p.part2(frame) -- to output part 3 code
frame.args.type = "part2"
return p.main(frame)
end
function p.part5(frame) -- to output part 3 code
if yesno(frame.args.hierachy) then
frame.args.type = "hierachy"
else
frame.args.type = "part5"
end
return p.main(frame)
end
function p.part3(frame) -- to output part 3 code
frame.args.type = "part3"
return p.main(frame)
end
function p.part1(frame) -- to output part 1 code
frame.args.type = "part1"
return p.main(frame)
end
function p.name(frame) -- to output name
frame.args.type = "name"
return p.main(frame)
end
function p.get(text) -- remove junk and standardizes
if text == table then
text = text[1]
end
if string.upper(text) == text then -- assume it's a code when the input is all uppercase
text = string.lower(text)
end
local accents = {["À"]="A",["Á"]="A",["Â"]="A",["Ã"]="A", -- accent list
["Ä"]="A",["Å"]="A",["Ç"]="C",["È"]="E",["É"]="E",
["Ê"]="E",["Ë"]="E",["Ì"]="I",["Í"]="I",["Î"]="I",
["Ï"]="I",["Ñ"]="N",["Ò"]="O",["Ó"]="O",["Ô"]="O",
["Õ"]="O",["Ö"]="O",["Ø"]="O",["Ù"]="U",["Ú"]="U",
["Û"]="U",["Ü"]="U",["Ý"]="Y"
}
text = mw.ustring.gsub(text,"[À-Ý]",accents) -- Deaccent
text = mw.ustring.gsub(text,"%[","") -- Delink
text = mw.ustring.gsub(text,"%]","") -- Delink
text = mw.ustring.gsub(text,"%{","") -- Remove {
text = mw.ustring.gsub(text,"%}","") -- Remove }
return text
end
function p.main(frame) -- main function (doesn't need to be called directly)
local args = getArgs(frame)
args[1] = p.get(args[1])
if altnames[args[1]] then args[1] = altnames[args[1]] end -- change alternate name to ISO 639-3 code
if not args[1] then
return '<span class="error">Argument 1 is not set!</span>'
end
for part3,table in pairs(data) do
if args[1] == part3
or args[1] == table["part1"]
or args[1] == table["part2"]
or args[1] == table["name"]
then
if args.type == "part3" then
return part3 or ""
elseif args.type == "part1" then
return table["part1"] or ""
elseif args.type == "part2" then
return table["part2"] or ""
elseif args.type == "name" then
return table["name"] or ""
end
end
end
for hierachy,table in pairs(ISO_639_5) do
if table.altnames then
for _,value in pairs(table.altnames) do
if args[1] == table then
args[1] = table.name
end
end
end
if table[args[1]] == hierachy
or args[1] == table["part5"]
or args[1] == table["part2"]
or args[1] == table["name"]
then
if args.type == "hierachy" then
return hierachy or ""
elseif args.type == "part5" then
return table["part5"] or ""
elseif args.type == "part2" then
return table["part2"] or ""
elseif args.type == "name" then
return table["name"] or ""
end
end
end
end
return p