Wikipedia
ilowiki
https://ilo.wikipedia.org/wiki/Umuna_a_Panid
MediaWiki 1.39.0-wmf.25
first-letter
Midia
Espesial
Tungtungan
Agar-aramat
Agar-aramat tungtungan
Wikipedia
Wikipedia tungtungan
Papeles
Papeles tungtungan
MediaWiki
MediaWiki tungtungan
Plantilia
Plantilia tungtungan
Tulong
Tulong tungtungan
Kategoria
Kategoria tungtungan
TimedText
TimedText talk
Modulo
Modulo tungtungan
Gadget
Gadget talk
Gadget definition
Gadget definition talk
Marso 18
0
2516
392286
320884
2022-08-18T22:04:41Z
Lam-ang
3622
/* Naipasngay */ +pimmusay
wikitext
text/x-wiki
{{Kalendario}}
{{Aldaw}}
== Paspasamak ==
== Naipasngay ==
* [[1837]] – [[Grover Cleveland]], maika-22 ken maika-24 a [[Presidente ti Estados Unidos]] (pimmusay [[1908]])
* [[1905]] – [[Robert Donat]], Briton nga aktor (pimmusay [[1958]])
* [[1928]] – [[Fidel V. Ramos]], maika-12 a [[Presidente ti Filipinas]] (pimmusay [[2022]])
* [[1979]] – [[Adam Levine]], Amerikano a kumakanta
== Pimmusay ==
== Dagiti akinruar a silpo ==
* [http://news.bbc.co.uk/onthisday/hi/dates/stories/march/18 BBC: On This Day]
* [http://www.tnl.net/when/3/18 Today in History: March 18]
{{pungol}}
{{Dagiti bulan}}
{{DEFAULTSORT:Marso 18}}
[[Kategoria:Al-aldaw ti tawen]]
[[Kategoria:Marso]]
oiqs4bc2j4vptwtud5168uzi979dtmb
Hulio 31
0
2734
392288
352218
2022-08-18T22:08:45Z
Lam-ang
3622
+[[Fidel V. Ramos]]
wikitext
text/x-wiki
{{Kalendario}}
{{Aldaw}}
== Paspasamak ==
== Naipasngay ==
* [[1892]] – [[Herbert W. Armstrong]], nagpundar ti Worldwide Church of God (pimmusay [[1986]])
* [[1914]] – [[Louis de Funès]], Pranses nga aktor (pimmusay [[1983]])
* [[1965]] – [[J. K. Rowling]], Ingles a mannurat
== Pimmusay ==
* [[1895]] – [[Thomas Francis Wade]], Briton a sinologo ken diplomata (naipasngay [[1818]])
* [[2022]] – [[Fidel V. Ramos]], maika-12 a [[Presidente ti Filipinas]] (naipasngay [[1928]])
== Dagiti akinruar a silpo ==
* [http://news.bbc.co.uk/onthisday/hi/dates/stories/july/31 BBC: On This Day]
* [http://www.tnl.net/when/7/31 Today in History: July 31]
{{pungol}}
{{Dagiti bulan}}
{{DEFAULTSORT:Hulio 31}}
[[Kategoria:Al-aldaw ti tawen]]
[[Kategoria:Hulio]]
finoin4uxphzi0go7dnwu6aow5a2zbf
1928
0
3560
392285
372895
2022-08-18T22:03:53Z
Lam-ang
3622
+pimmusay
wikitext
text/x-wiki
Ti '''1928''' ket maysa a [[bisiesto a tawen]] a nangrugi iti [[aldaw]] ti [[Domingo]] iti [[kalendario a Gregoriano]].
== Paspasamak ==
== Naipasngay ==
[[Papeles:Vice President Mondale 1977 closeup.jpg|thumb|140px|[[Walter Mondale]]]]
* [[Enero 5]] – [[Walter Mondale]], Amerikano a politiko, maika-42 a [[Bise Presidente iti Estados Unidos]] (pimmusay [[2021]])
[[Papeles:Ramos Pentagon.jpg|thumb|140px|[[Fidel V. Ramos]]]]
* [[Marso 18]] – [[Fidel V. Ramos]], maika-12 a [[Presidente ti Filipinas]] (pimmusay [[2022]])
[[Papeles:ShirleyTempleMackenzieKing2b.jpg|thumb|140px|[[Shirley Temple]]]]
* [[Abril 23]] – [[Shirley Temple]], Amerikana nga aktres ken diplomata (pimmusay [[2014]])
[[Papeles:CheHigh.jpg|thumb|right|140px|[[Che Guevara]]]]
* [[Hunio 14]] – [[Che Guevara]], Arhentino-Kubano a pisiko, politiko ken daulo ti gerilia (pimmusay [[1967]])
[[Papeles:Teofisto Guingona Jr. 20171013.jpg|thumb|140px|[[Teofisto T. Guingona, Jr.]]]]
* [[Hulio 4]] – [[Teofisto T. Guingona, Jr.]], maika-13 a Bise Presidente ti Filipinas
* [[Hulio 26|Hulio 26]] – [[Stanley Kubrick]], [[Americano|Amerikano]] a direktor ti pelikula (pimmusay [[1999]])
* [[Oktubre 3]] – [[Erik Bruhn]], Danes a sumasala ti balet (pimmusay [[1986]])
[[Papeles:Salvador Laurel portrait.jpg|thumb|140px|[[Salvador Laurel]]]]
* [[Nobiembre 18]] – [[Salvador Laurel]], maika-8 a Bise Presidente ti Filipinas (pimmusay [[2004]])
== Pimmusay ==
{{Tawen-pungol}}
[[Kategoria:1928|1928]]
7gre227qifcx9i523sw8464nokijzol
Wikipedia:Dap-ayan/Nadumaduma
4
30584
392271
392262
2022-08-18T21:23:25Z
Lam-ang
3622
-lint error
wikitext
text/x-wiki
{{Dap-ayan/paulo
|ladawan=PL Wiki CzyWiesz ikona.svg
|teksto=<br />Agipablaak kadagiti mensahe a saan a maitunos kadagiti ania man a kategoria.
|apat={{Apat|WP:KDPY}}
|arkibo='''Naiduldulin''': [[WP:Dap-ayan/2006-2012|2006-2012]], {{listaan ti tinawen nga arkibo
| root = Wikipedia:Dap-ayan
| prefix = Nadumaduma 
}}
|narikepan=wen
}}
{{TOC right}}
{{#ifexist:Wikipedia:Dap-ayan/Nadumaduma {{#time:Y}}|{{Wikipedia:Dap-ayan/Nadumaduma {{#time:Y}}}}|{{Wikipedia:Dap-ayan/Nadumaduma {{#time:Y|-1 year}}}}}}
<!--■■■■■■■■■■■■■ Agipablaak ti baba iti daytoy a linia ■■■■■■■■■■■■■-->
== Deployment of FLORES Machine Translation to Iloko Wikipedia ==
Hello Friends!
Apologies as this message is not in your native language {{Int:Please-translate}}.
The WMF Language team plans to introduce a machine translation (MT) support for the Content Translation in Iloko Wikipedia called FLORES. This means that you can choose to use [https://ai.facebook.com/blog/the-flores-101-data-set-helping-build-better-translation-systems-around-the-world/ FLORES machine translation] when translating Wikipedia articles to Iloko using [https://ilo.wikipedia.org/wiki/Special:ContentTranslation the Content Translation tool].
The FLORES Machine Translation is provided by an [https://ai.facebook.com/ AI research team at Meta] through a free for use API key that allows the Content Translation to access the service on the FLORES server for an evaluation trial period. This MT will be set as default in your Wikipedia, but you can choose not to use it by selecting "Start with empty paragraph" from the "Initial Translation" dropdown menu.
The Wikimedia Foundation has worked out an agreement that allows the use of FLORES without compromising Wikipedia’s policies about attribution of rights, your privacy as a user, and brand representation. You can find more information about the FLORES Machine translation on [https://www.mediawiki.org/wiki/Content_translation/Machine_Translation/Flores#Summary_of_our_agreement_with_Meta this page].
Please note that the use of the FLORES MT is not compulsory. However, we would want your community to:
*use it once it is deployed to improve the quality of the Machine Translation service
*[https://www.mediawiki.org/wiki/Talk:Content_translation provide feedback] about our plans, its quality once deployed and ask any questions you might have about this addition.
We trust that introducing this MT is a good support to the Content Translations tool towards having better quality articles in Iloko Wikipedia.
Thank you!
[[Agar-aramat:UOzurumba (WMF)|UOzurumba (WMF)]] ([[Agar-aramat tungtungan:UOzurumba (WMF)|tungtungan]]) 20:37, 31 Mayo 2022 (UTC)
===FLORES Machine Translation deployed to Iloko Wikipedia===
Hello Friends!
The WMF Language team is pleased to inform you that we have deployed the FLORES machine translation (MT) support for the Content Translation in Iloko Wikipedia.
Please remember that the FLORES machine translation is set as default in your Wikipedia. Still, you can choose not to use it by selecting "Start with empty paragraph" from the "Initial Translation" dropdown menu. However, we would want your community to:
*use it to improve the quality of the Machine Translation service
*[https://www.mediawiki.org/wiki/Talk:Content_translation provide feedback] about its quality and ask any questions you might have about this addition.
We look forward to your community using the Machine Translation support in Content Translation to create better quality articles in Iloko Wikipedia.
Thank you!
[[Agar-aramat:UOzurumba (WMF)|UOzurumba (WMF)]] ([[Agar-aramat tungtungan:UOzurumba (WMF)|tungtungan]]) 16:05, 21 Hunio 2022 (UTC) On behalf of the WMF Language team.
== Enabling Content and Section translation tool in Iloko Wikipedia ==
{{Int:Hello}} Friends!
Apologies as this message is not in your native language, {{Int:Please-translate}}.
The WMF Language team is pleased to let you know that we will like to enable the Section and Content translation tool in Iloko Wikipedia. For this, our team will love you to read about the tool and test the new [https://design.wikimedia.org/strategy/section-translation.html Section Translation tool] so you can:
* Give us your feedback
* Ask us questions
* Tell us how to improve it
Below is background information about the tools and how you can test the Section translation tool.
'''Background information'''
[[mw:Content_translation|Content Translation]] has been a successful tool for editors to create content in their language. More than one million articles have been created across all languages since the tool was released in 2015. However, the tool is not out of beta in Iloko Wikipedia, limiting the discoverability of the tool and its use and blocking the enablement of the Section translation in your Wikipedia
[[mw:Content_translation/Section_translation|Section Translation]] extends the capabilities of Content Translation to support mobile devices. On mobile, the tool will:
* Guide you to translate one section at a time in order to expand existing articles or create new ones
* Make it easy to transfer knowledge across languages anytime from your mobile device
We plan to enable the tools on Iloko Wikipedia in the coming week if there are no objections from your community. After it is enabled, we’ll monitor the content created with the tools and process all the feedback. In any case, feel free to raise any concerns or questions you may already have as a reply to this message or on [[mw:Talk:Content_translation/Section_translation|the project talk page]]
'''Try the Section translation tool'''
Before the enablement, you can try the current implementation of the tool in [https://test.m.wikipedia.org/w/index.php?title=Special:ContentTranslation&from=en&to=fa&sx=true#/ our testing instance]. Once it is enabled on Iloko Wikipedia, you’ll have access to [[:tr:Special:ContentTranslation|https://ilo.wikipedia.org/wiki/Special:ContentTranslation]] with your mobile device. You can select an article to translate, and machine translation will be provided as a starting point for editors to improve.
'''Provide feedback'''
Please provide feedback about Section translation on [[mw:Talk:Content_translation/Section_translation|the project talk page]]. We want to hear about your impressions on
* The section translation tool
* What do you think about our plans to enable it
* Your ideas for improving the tool
Thanks and we look forward to your feedback and questions.
[[Agar-aramat:UOzurumba (WMF)|UOzurumba (WMF)]] ([[Agar-aramat tungtungan:UOzurumba (WMF)|tungtungan]]) 12:32, 29 Hunio 2022 (UTC) On behalf of the WMF Language team.
===Content and Section Translation tool enabled in Iloko Wikipedia===
{{Int:Hello}} Friends!
The WMF Language team is pleased to let you know that we [https://ilo.m.wikipedia.org/wiki/Special:ContentTranslation?title=Especial:Traducci%C3%B3n_de_contenidos&from=en&to=ilo&sx=true§ion=#/ have enabled the Section translation] and [https://ilo.wikipedia.org/w/index.php?title=Special:ContentTranslation&campaign=contributionsmenu&to=ilo#draft Content translation] tools in Iloko Wikipedia.
The [https://www.mediawiki.org/wiki/Content_translation Content translation tool] can be discovered by users [https://www.mediawiki.org/wiki/Help:Content_translation/Starting through several entry points]. However, users not interested in translation can disable it [[Special:Preferences#mw-prefsection-rendering|from their preferences]]. Also, with the [https://www.mediawiki.org/wiki/Content_translation/Section_translation Section translation tool], you can start translating an article on your mobile device right when you notice it is missing in Iloko. From a Wikipedia article in any language, switch languages and search for Ilokano. If the article does not exist, an option to translate it will appear, as shown in the image below.
[[File:Sx-language-selector-invite-th.png|thumb|left|Image of the entry point]]
We know that these tools will help translators in your community to add content using any device with ease. Content created with the Content and Section Translation tool will be marked with the "[https://ilo.wikipedia.org/wiki/Espesial:Log?type=&user=&page=&wpdate=&tagfilter=contenttranslation-v2&wpfilters%5B%5D=newusers contenttranslation]" and “[https://ilo.wikipedia.org/wiki/Espesial:Log?type=&user=&page=&wpdate=&tagfilter=sectiontranslation&wpfilters%5B%5D=newusers sectiontranslaiton]” tag, respectively, for the community to review. We’ll monitor the content created, but we are very interested in hearing about your experience using the tools and reviewing the content created with it.
So, enjoy the tools and [https://www.mediawiki.org/wiki/Talk:Content_translation/Section_translation provide feedback] on improving it.
Thank you!
[[Agar-aramat:UOzurumba (WMF)|UOzurumba (WMF)]] ([[Agar-aramat tungtungan:UOzurumba (WMF)|tungtungan]]) 05:18, 10 Agosto 2022 (UTC) On behalf of the WMF Language team.
ms2pgya9rjlzkz6o5znku54un0uel0i
Modulo:Pagbaliwen/nayon
828
32364
392282
391769
2022-08-18T21:48:21Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1103931122|Module:Convert/extra/1103931122]]
Scribunto
text/plain
-- Extra conversion data used by Module:Convert.
--
-- [[Module:Convert/data]] defines all units and is transcluded in all pages
-- where [[Module:Convert]] is used. Testing new units by editing that module
-- would invalidate the cache for all affected pages.
--
-- For quick changes and experiments with new units, this module can be edited.
-- Since this module is transcluded in only a small number of pages, changes
-- should cause little server overhead and should propagate quickly.
--
-- If a unit is defined in the data module, any definition here is ignored,
-- so defining the same unit in both modules is not an error.
-- A unit defined here can refer to units that are also defined here, and
-- can refer to units defined in the data module.
--
-- Periodically, those extra units that are wanted permanently can be removed
-- from here after being added to [[Module:Convert/data]].
local extra_units = {
["sec"] = { -- experiment per request at [[Template talk:Convert#Auto-select time unit?]]
_name1 = "second",
_symbol = "s",
utype = "time",
scale = 1,
prefixes = 1,
default = "v < 7200 ! min ! h",
link = "Second",
},
["inches"] = {
target = "in",
},
["bit"] = {
_name1 = "bit",
_symbol = "bit",
utype = "information",
scale = 0.125,
prefixes = 1,
default = "B",
link = "Bit",
},
["B"] = {
_name1 = "byte",
_symbol = "B",
utype = "information",
scale = 8,
prefixes = 1,
default = "bit",
link = "Byte",
},
}
return { extra_units = extra_units }
si3t3fvu32yvdjd7okhe8ybh8h58wxa
Modulo:Pagbaliwen/nayon/pagipadasan
828
32384
392281
391768
2022-08-18T21:47:59Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1103931122|Module:Convert/extra/1103931122]]
Scribunto
text/plain
-- Extra conversion data used by Module:Convert.
--
-- [[Module:Convert/data]] defines all units and is transcluded in all pages
-- where [[Module:Convert]] is used. Testing new units by editing that module
-- would invalidate the cache for all affected pages.
--
-- For quick changes and experiments with new units, this module can be edited.
-- Since this module is transcluded in only a small number of pages, changes
-- should cause little server overhead and should propagate quickly.
--
-- If a unit is defined in the data module, any definition here is ignored,
-- so defining the same unit in both modules is not an error.
-- A unit defined here can refer to units that are also defined here, and
-- can refer to units defined in the data module.
--
-- Periodically, those extra units that are wanted permanently can be removed
-- from here after being added to [[Module:Convert/data]].
local extra_units = {
["sec"] = { -- experiment per request at [[Template talk:Convert#Auto-select time unit?]]
_name1 = "second",
_symbol = "s",
utype = "time",
scale = 1,
prefixes = 1,
default = "v < 7200 ! min ! h",
link = "Second",
},
["inches"] = {
target = "in",
},
["bit"] = {
_name1 = "bit",
_symbol = "bit",
utype = "information",
scale = 0.125,
prefixes = 1,
default = "B",
link = "Bit",
},
["B"] = {
_name1 = "byte",
_symbol = "B",
utype = "information",
scale = 8,
prefixes = 1,
default = "bit",
link = "Byte",
},
}
return { extra_units = extra_units }
si3t3fvu32yvdjd7okhe8ybh8h58wxa
Modulo:Hatnote
828
34601
392284
391581
2022-08-18T21:56:47Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1105145280|Module:Hatnote/1105145280]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote --
-- --
-- This module produces hatnote links and links to related articles. It --
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --
-- helper functions for other Lua hatnote modules. --
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Modulo:Dagiti argumento]]
local yesno -- lazily initialise [[Modulo:Wensaan]]
local formatLink -- lazily initialise [[Modulo:Pormaten ti silpo]] ._formatLink
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local curNs = mw.title.getCurrentTitle().namespace
p.missingTargetCat =
--Default missing target category, exported for use in related modules
((curNs == 0) or (curNs == 14)) and
'Dagiti artikulo nga agraman kadagiti plantilia ti hatnote a mangpunta kadagiti awan a panid' or nil
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Modulo:Dagiti argumento')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
function p.findNamespaceId(link, removeColon)
-- Finds the namespace id (namespace number) of a link or a pagename. This
-- function will not work if the link is enclosed in double brackets. Colons
-- are trimmed from the start of the link by default. To skip colon
-- trimming, set the removeColon parameter to false.
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
if removeColon ~= false then
link = removeInitialColon(link)
end
local namespace = link:match('^(.-):')
if namespace then
local nsTable = mw.site.namespaces[namespace]
if nsTable then
return nsTable.id
end
end
return 0
end
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)
-- Formats an error message to be returned to wikitext. If
-- addTrackingCategory is not false after being returned from
-- [[Module:Yesno]], and if we are not on a talk page, a tracking category
-- is added.
checkType('makeWikitextError', 1, msg, 'string')
checkType('makeWikitextError', 2, helpLink, 'string', true)
yesno = require('Modulo:Wensaan')
title = title or mw.title.getCurrentTitle()
-- Make the help link text.
local helpText
if helpLink then
helpText = ' ([[' .. helpLink .. '|tulong]])'
else
helpText = ''
end
-- Make the category text.
local category
if not title.isTalkPage -- Don't categorise talk pages
and title.namespace ~= 2 -- Don't categorise userspace
and yesno(addTrackingCategory) ~= false -- Allow opting out
then
category = 'Dagiti plantilia ti hatnote nga agraman kadagiti biddut'
category = mw.ustring.format(
'[[%s:%s]]',
mw.site.namespaces[14].name,
category
)
else
category = ''
end
return mw.ustring.format(
'<strong class="error">Biddut: %s%s.</strong>%s',
msg,
helpText,
category
)
end
function p.disambiguate(page, disambiguator)
-- Formats a page title with a disambiguation parenthetical,
-- i.e. "Example" → "Example (disambiguation)".
checkType('disambiguate', 1, page, 'string')
checkType('disambiguate', 2, disambiguator, 'string', true)
disambiguator = disambiguator or 'panangilawlawag'
return mw.ustring.format('%s (%s)', page, disambiguator)
end
function p.defaultClasses(inline)
-- Provides the default hatnote classes as a space-separated string; useful
-- for hatnote-manipulation modules like [[Module:Hatnote group]].
return
(inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' ..
'navigation-not-searchable'
end
--------------------------------------------------------------------------------
-- Hatnote
--
-- Produces standard hatnote text. Implements the {{hatnote}} template.
--------------------------------------------------------------------------------
function p.hatnote(frame)
local args = getArgs(frame)
local s = args[1]
if not s then
return p.makeWikitextError(
'awan ti nainaganan a teksto',
'Plantilia:Hatnote#Dagiti biddut',
args.category
)
end
return p._hatnote(s, {
extraclasses = args.extraclasses,
selfref = args.selfref
})
end
function p._hatnote(s, options)
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 2, options, 'table', true)
options = options or {}
local inline = options.inline
local hatnote = mw.html.create(inline == 1 and 'span' or 'div')
local extraclasses
if type(options.extraclasses) == 'string' then
extraclasses = options.extraclasses
end
hatnote
:attr('role', 'note')
:addClass(p.defaultClasses(inline))
:addClass(extraclasses)
:addClass(options.selfref and 'selfref' or nil)
:wikitext(s)
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Modulo:Hatnote/styles.css' }
} .. tostring(hatnote)
end
return p
3223u81kxnwv969mi1g2ifjvme7q3em
Modulo:Hatnote/pagipadasan
828
35040
392283
391580
2022-08-18T21:55:44Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1105145280|Module:Hatnote/1105145280]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote --
-- --
-- This module produces hatnote links and links to related articles. It --
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --
-- helper functions for other Lua hatnote modules. --
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Modulo:Dagiti argumento]]
local yesno -- lazily initialise [[Modulo:Wensaan]]
local formatLink -- lazily initialise [[Modulo:Pormaten ti silpo]] ._formatLink
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local curNs = mw.title.getCurrentTitle().namespace
p.missingTargetCat =
--Default missing target category, exported for use in related modules
((curNs == 0) or (curNs == 14)) and
'Dagiti artikulo nga agraman kadagiti plantilia ti hatnote a mangpunta kadagiti awan a panid' or nil
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Modulo:Dagiti argumento')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
function p.findNamespaceId(link, removeColon)
-- Finds the namespace id (namespace number) of a link or a pagename. This
-- function will not work if the link is enclosed in double brackets. Colons
-- are trimmed from the start of the link by default. To skip colon
-- trimming, set the removeColon parameter to false.
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
if removeColon ~= false then
link = removeInitialColon(link)
end
local namespace = link:match('^(.-):')
if namespace then
local nsTable = mw.site.namespaces[namespace]
if nsTable then
return nsTable.id
end
end
return 0
end
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)
-- Formats an error message to be returned to wikitext. If
-- addTrackingCategory is not false after being returned from
-- [[Module:Yesno]], and if we are not on a talk page, a tracking category
-- is added.
checkType('makeWikitextError', 1, msg, 'string')
checkType('makeWikitextError', 2, helpLink, 'string', true)
yesno = require('Modulo:Wensaan')
title = title or mw.title.getCurrentTitle()
-- Make the help link text.
local helpText
if helpLink then
helpText = ' ([[' .. helpLink .. '|tulong]])'
else
helpText = ''
end
-- Make the category text.
local category
if not title.isTalkPage -- Don't categorise talk pages
and title.namespace ~= 2 -- Don't categorise userspace
and yesno(addTrackingCategory) ~= false -- Allow opting out
then
category = 'Dagiti plantilia ti hatnote nga agraman kadagiti biddut'
category = mw.ustring.format(
'[[%s:%s]]',
mw.site.namespaces[14].name,
category
)
else
category = ''
end
return mw.ustring.format(
'<strong class="error">Biddut: %s%s.</strong>%s',
msg,
helpText,
category
)
end
function p.disambiguate(page, disambiguator)
-- Formats a page title with a disambiguation parenthetical,
-- i.e. "Example" → "Example (disambiguation)".
checkType('disambiguate', 1, page, 'string')
checkType('disambiguate', 2, disambiguator, 'string', true)
disambiguator = disambiguator or 'panangilawlawag'
return mw.ustring.format('%s (%s)', page, disambiguator)
end
function p.defaultClasses(inline)
-- Provides the default hatnote classes as a space-separated string; useful
-- for hatnote-manipulation modules like [[Module:Hatnote group]].
return
(inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' ..
'navigation-not-searchable'
end
--------------------------------------------------------------------------------
-- Hatnote
--
-- Produces standard hatnote text. Implements the {{hatnote}} template.
--------------------------------------------------------------------------------
function p.hatnote(frame)
local args = getArgs(frame)
local s = args[1]
if not s then
return p.makeWikitextError(
'awan ti nainaganan a teksto',
'Plantilia:Hatnote#Dagiti biddut',
args.category
)
end
return p._hatnote(s, {
extraclasses = args.extraclasses,
selfref = args.selfref
})
end
function p._hatnote(s, options)
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 2, options, 'table', true)
options = options or {}
local inline = options.inline
local hatnote = mw.html.create(inline == 1 and 'span' or 'div')
local extraclasses
if type(options.extraclasses) == 'string' then
extraclasses = options.extraclasses
end
hatnote
:attr('role', 'note')
:addClass(p.defaultClasses(inline))
:addClass(extraclasses)
:addClass(options.selfref and 'selfref' or nil)
:wikitext(s)
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Modulo:Hatnote/styles.css' }
} .. tostring(hatnote)
end
return p
3223u81kxnwv969mi1g2ifjvme7q3em
Modulo:Simbolo ti IPA/datos
828
36268
392278
390341
2022-08-18T21:40:51Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1102576395|Module:IPA symbol/data/1102576395]]
Scribunto
text/plain
local data = {
sounds = {},
diacritics = {},
univPatterns = {
{
pat = "g", -- Latin Small Letter G
rep = "ɡ" -- Latin Small Letter Script G
},
{
pat = "ᵍ", -- Modifier Letter Small G
rep = "ᶢ" -- Modifier Letter Small Script G
},
{
pat = "l̴", -- 'l' + Combining Tilde Overlay
rep = "ɫ" -- Latin Small Letter L with Middle Tilde
},
{
pat = "ˁ", -- Modifier Letter Reversed Glottal Stop
rep = "ˤ" -- Modifier Letter Small Reversed Glottal Stop
},
{
pat = "’", -- Right Single Quotation Mark
rep = "ʼ" -- Modifier Letter Apostrophe
},
{
pat = "ȷ", -- Latin Small Letter Dotless J
rep = "j" -- Latin Small Letter J
},
{
pat = "ʇ", -- Latin Small Letter Turned T
rep = "ǀ" -- Latin Letter Dental Click
},
{
pat = "[!ʗ]", -- Exclamation Mark / Latin Letter Stretched C
rep = "ǃ" -- Latin Letter Retroflex Click
},
{
pat = "ǃǃ", -- Latin Letter Retroflex Click x 2
rep = "‼" -- Double Exclamation Mark
},
{
pat = "ʖ", -- Latin Letter Inverted Glottal Stop
rep = "ǁ" -- Latin Letter Lateral Click
},
},
keyPatterns = {
-- These do not affect the revese look for diacritics
{
pat = "[͜͡ːˑ◌]", -- Tie bars, length marks, dotted circle
rep = ""
},
{
pat = "ᵏ", -- Modifier Letter Small K
rep = "k" -- Latin Small Letter K
},
{
pat = "ᶢ", -- Modifier Letter Small Script G
rep = "ɡ" -- Latin Small Letter Script G
},
{
pat = "ᵑ", -- Modifier Letter Small Eng
rep = "ŋ" -- Latin Small Letter Eng
},
}
}
local rawData = {
sounds = {
-- PULMONIC CONSONANTS
-- Nasals
{
name = "Voiceless bilabial nasal",
symbols = { "m̥" },
},
{
name = "Voiced bilabial nasal",
symbols = { "m" },
audio = "Bilabial nasal.ogg"
},
{
name = "Voiced labiodental nasal",
symbols = { "ɱ" },
audio = "Labiodental nasal.ogg"
},
{
name = "Voiced linguolabial nasal",
symbols = { "n̼" },
audio = "Linguolabial nasal.ogg"
},
{
name = "Voiced dental nasal",
symbols = { "n̪" },
},
{
name = "Voiceless alveolar nasal",
symbols = { "n̥" },
},
{
name = "Voiced alveolar nasal",
symbols = { "n" },
audio = "Alveolar nasal.ogg"
},
{
name = "Voiced postalveolar nasal",
symbols = { "n̠" },
},
{
name = "Voiceless retroflex nasal",
symbols = { "ɳ̊", "ɳ̥" },
},
{
name = "Voiced retroflex nasal",
symbols = { "ɳ" },
audio = "Retroflex nasal.ogg"
},
{
name = "Voiceless alveolo-palatal nasal",
symbols = { "n̠̊ʲ", "ɲ̊˖", "ɲ̟̊", "ȵ̊" },
},
{
name = "Voiced alveolo-palatal nasal",
symbols = { "n̠ʲ", "ɲ˖", "ɲ̟", "ȵ" },
},
{
name = "Voiceless palatal nasal",
symbols = { "ɲ̊", "ɲ̥" },
},
{
name = "Voiced palatal nasal",
symbols = { "ɲ" },
audio = "Palatal nasal.ogg"
},
{
name = "Voiced post-palatal nasal",
symbols = { "ɲ˗", "ɲ̠", "ŋ˖", "ŋ̟" },
},
{
name = "Voiceless velar nasal",
symbols = { "ŋ̊", "ŋ̥" },
},
{
name = "Voiced velar nasal",
symbols = { "ŋ" },
audio = "Velar nasal.ogg"
},
{
name = "Voiced pre-uvular nasal",
symbols = { "ɴ̟", "ŋ˗", "ŋ̠" },
},
{
name = "Voiced uvular nasal",
symbols = { "ɴ" },
audio = "Uvular nasal.ogg"
},
-- Plosives
{
name = "Voiceless bilabial plosive",
symbols = { "p" },
audio = "Voiceless bilabial plosive.ogg"
},
{
name = "Voiced bilabial plosive",
symbols = { "b" },
audio = "Voiced bilabial plosive.ogg"
},
{
name = "Voiceless labiodental plosive",
symbols = { "p̪", "p͆" },
},
{
name = "Voiced labiodental plosive",
symbols = { "b̪" },
},
{
name = "Voiceless linguolabial plosive",
symbols = { "t̼" },
audio = "Voiceless linguolabial stop.ogg"
},
{
name = "Voiced linguolabial plosive",
symbols = { "d̼" },
audio = "Voiced linguolabial stop.ogg"
},
{
name = "Voiceless dental plosive",
symbols = { "t̪" },
audio = "Voiceless dental stop.ogg"
},
{
name = "Voiced dental plosive",
symbols = { "d̪" },
audio = "Voiced dental stop.ogg"
},
{
name = "Voiceless alveolar plosive",
symbols = { "t" },
audio = "Voiceless alveolar plosive.ogg"
},
{
name = "Voiced alveolar plosive",
symbols = { "d" },
audio = "Voiced alveolar plosive.ogg"
},
{
name = "Voiceless postalveolar plosive",
symbols = { "t̠" },
},
{
name = "Voiced postalveolar plosive",
symbols = { "d̠" },
},
{
name = "Voiceless retroflex plosive",
symbols = { "ʈ" },
audio = "Voiceless retroflex stop.oga"
},
{
name = "Voiced retroflex plosive",
symbols = { "ɖ" },
audio = "Voiced retroflex stop.oga"
},
{
name = "Voiceless alveolo-palatal plosive",
symbols = { "t̠ʲ", "c̟", "ȶ" },
},
{
name = "Voiced alveolo-palatal plosive",
symbols = { "d̠ʲ", "ɟ˖", "ɟ̟", "ȡ" },
},
{
name = "Voiceless palatal plosive",
symbols = { "c" },
audio = "Voiceless palatal plosive.ogg"
},
{
name = "Voiced palatal plosive",
symbols = { "ɟ" },
audio = "Voiced palatal plosive.ogg"
},
{
name = "Voiceless post-palatal plosive",
symbols = { "c̠", "k̟" },
},
{
name = "Voiced post-palatal plosive",
symbols = { "ɟ˗", "ɟ̠", "ɡ˖", "ɡ̟" },
},
{
name = "Voiceless velar plosive",
symbols = { "k" },
audio = "Voiceless velar plosive.ogg"
},
{
name = "Voiced velar plosive",
symbols = { "ɡ" },
audio = "Voiced velar plosive 02.ogg"
},
{
name = "Voiceless pre-uvular plosive",
symbols = { "q˖", "q̟", "k̠" },
},
{
name = "Voiced pre-uvular plosive",
symbols = { "ɢ̟", "ɡ˗", "ɡ̠" },
},
{
name = "Voiceless uvular plosive",
symbols = { "q" },
audio = "Voiceless uvular plosive.ogg"
},
{
name = "Voiced uvular plosive",
symbols = { "ɢ" },
audio = "Voiced uvular stop.oga"
},
{
name = "Epiglottal plosive",
symbols = { "ʡ" },
audio = "Epiglottal stop.ogg"
},
{
name = "Glottal stop",
symbols = { "ʔ" },
audio = "Glottal stop.ogg"
},
-- Affricates
{
name = "Voiceless bilabial affricate",
symbols = { "pɸ" },
audio = "Voiceless bilabial affricate.ogg"
},
{
name = "Voiced bilabial affricate",
symbols = { "bβ" },
},
{
name = "Voiceless labiodental affricate",
symbols = { "p̪f", "p͆f", "pf" },
audio = "Voiceless labiodental affricate.ogg"
},
{
name = "Voiced labiodental affricate",
symbols = { "b̪v", "bv" },
audio = "Voiced labiodental affricate.ogg"
},
{
name = "Voiceless dental affricate",
symbols = { "t̪s̪", "ts̪", "t̟s̟", "ts̟" },
audio = "Voiceless dental sibilant affricate.oga"
},
{
name = "Voiced dental affricate",
symbols = { "d̪z̪", "dz̪", "d̟z̟", "dz̟" },
audio = "Voiced dental sibilant affricate.oga"
},
{
name = "Voiceless dental non-sibilant affricate",
symbols = { "t̪θ", "t̟θ", "tθ" },
audio = "Voiceless dental non-sibilant affricate.oga"
},
{
name = "Voiced dental non-sibilant affricate",
symbols = { "d̪ð", "d̟ð", "dð" },
audio = "Voiced dental non-sibilant affricate.oga"
},
{
name = "Voiceless alveolar affricate",
symbols = { "ts", "ʦ" },
audio = "Voiceless alveolar sibilant affricate.oga"
},
{
name = "Voiced alveolar affricate",
symbols = { "dz", "ʣ" },
audio = "Voiced alveolar sibilant affricate.oga"
},
{
name = "Voiceless apico-alveolar affricate",
symbols = { "t̺s̺", "ts̺", "t̠s̠", "ts̠" },
},
{
name = "Voiced apico-alveolar affricate",
symbols = { "d̺z̺", "dz̺", "d̠z̠", "dz̠" },
},
{
name = "Voiceless alveolar non-sibilant affricate",
symbols = { "tɹ̝̊", "tɹ̥", "tθ̠", "tθ͇" },
},
{
name = "Voiced alveolar non-sibilant affricate",
symbols = { "dɹ̝", "dɹ", "dð̠", "dð͇" },
},
{
name = "Voiceless postalveolar affricate",
symbols = { "t̠ʃ", "tʃ", "ʧ" },
audio = "Voiceless palato-alveolar affricate.ogg"
},
{
name = "Voiced postalveolar affricate",
symbols = { "d̠ʒ", "dʒ", "ʤ" },
audio = "Voiced palato-alveolar affricate.ogg"
},
{
name = "Voiceless postalveolar non-sibilant affricate",
symbols = { "t̠ɹ̠̊˔", "tɹ̠̊˔", "tɹ̝̊˗", "t̠ɹ̝̊˗", "t̠ɹ̠̊", "tɹ̠̊" },
audio = "Voiceless postalveolar non-sibilant affricate.ogg"
},
{
name = "Voiced postalveolar non-sibilant affricate",
symbols = { "d̠ɹ̠˔", "dɹ̠˔", "dɹ̝˗", "d̠ɹ̝˗", "d̠ɹ̠", "dɹ̠" },
audio = "Voiced postalveolar non-sibilant affricate.ogg"
},
{
name = "Voiceless retroflex affricate",
symbols = { "ʈʂ", "tʂ" },
audio = "Voiceless retroflex affricate.ogg"
},
{
name = "Voiced retroflex affricate",
symbols = { "ɖʐ", "dʐ" },
audio = "Voiced retroflex affricate.ogg"
},
{
name = "Voiceless alveolo-palatal affricate",
symbols = { "tɕ", "cɕ", "ʨ" },
audio = "Voiceless alveolo-palatal affricate.ogg"
},
{
name = "Voiced alveolo-palatal affricate",
symbols = { "dʑ", "ɟʑ", "ʥ" },
audio = "Voiced alveolo-palatal affricate.ogg"
},
{
name = "Voiceless palatal affricate",
symbols = { "cç" },
audio = "Voiceless palatal affricate.ogg"
},
{
name = "Voiced palatal affricate",
symbols = { "ɟʝ" },
audio = "Voiced palatal affricate.ogg"
},
{
name = "Voiceless post-palatal affricate",
symbols = { "c̠ç˗", "cç˗", "c̠ç̠", "cç̠", "k̟x̟", "kx̟" },
},
{
name = "Voiced post-palatal affricate",
symbols = { "ɟ˗ʝ˗", "ɟʝ˗", "ɟ̠ʝ̠", "ɟʝ̠", "ɡ˖ɣ˖", "ɡɣ˖", "ɡ̟ɣ̟", "ɡɣ̟" },
},
{
name = "Voiceless velar affricate",
symbols = { "kx" },
audio = "Voiceless velar affricate.ogg"
},
{
name = "Voiced velar affricate",
symbols = { "ɡɣ" },
audio = "Voiced velar affricate.ogg"
},
{
name = "Voiceless pre-uvular affricate",
symbols = { "q˖χ˖", "qχ˖", "q̟χ̟", "qχ̟", "k̠x̠", "kx̠" },
},
{
name = "Voiceless uvular affricate",
symbols = { "qχ" },
audio = "Voiceless uvular affricate.ogg"
},
{
name = "Voiced uvular affricate",
symbols = { "ɢʁ" },
audio = "Voiced uvular affricate.ogg"
},
{
name = "Voiceless pharyngeal affricate",
symbols = { "ʡħ" },
},
{
name = "Voiceless epiglottal affricate",
symbols = { "ʡʜ" },
audio = "Voiceless epiglottal affricate.ogg"
},
{
name = "Voiced epiglottal affricate",
symbols = { "ʡʢ" },
audio = "Voiced epiglottal affricate.ogg"
},
{
name = "Voiceless glottal affricate",
symbols = { "ʔh" },
audio = "Voiceless glottal affricate.ogg"
},
-- Fricatives
{
name = "Voiceless bilabial fricative",
symbols = { "ɸ", "β̞̊", "β̥˕" },
audio = "Voiceless bilabial fricative.ogg"
},
{
name = "Voiced bilabial fricative",
symbols = { "β" },
audio = "Voiced bilabial fricative.ogg"
},
{
name = "Voiceless labiodental fricative",
symbols = { "f", "ʋ̥", "f̞" },
audio = "Voiceless labio-dental fricative.ogg"
},
{
name = "Voiced labiodental fricative",
symbols = { "v" },
audio = "Voiced labio-dental fricative.ogg"
},
{
name = "Voiceless linguolabial fricative",
symbols = { "θ̼" },
audio = "Voiceless linguolabial fricative.ogg"
},
{
name = "Voiced linguolabial fricative",
symbols = { "ð̼" },
},
{
name = "Voiceless dental fricative",
symbols = { "θ", "θ̞" },
audio = "Voiceless dental fricative.ogg"
},
{
name = "Voiced dental fricative",
symbols = { "ð" },
audio = "Voiced dental fricative.ogg"
},
{
name = "Voiceless dental sibilant fricative",
symbols = { "s̪" },
},
{
name = "Voiced dental sibilant fricative",
symbols = { "z̪" },
},
{
name = "Voiceless denti-alveolar fricative",
symbols = { "s̻̪", "s̪̻", "s̻͆", "s̟" },
},
{
name = "Voiceless alveolar fricative",
symbols = { "s" },
audio = "Voiceless alveolar sibilant.ogg"
},
{
name = "Voiced alveolar fricative",
symbols = { "z" },
audio = "Voiced alveolar sibilant.ogg"
},
{
name = "Voiceless apico-alveolar fricative",
symbols = { "s̺" },
},
{
name = "Voiced apico-alveolar fricative",
symbols = { "z̺" },
},
{
name = "Voiceless alveolar retracted fricative",
symbols = { "s̠" },
audio = "Voiceless alveolar retracted sibilant.ogg"
},
{
name = "Voiced alveolar retracted fricative",
symbols = { "z̠" },
},
{
name = "Voiceless alveolar non-sibilant fricative",
symbols = { "θ̠", "θ͇", "ɹ̝̊", "ɹ̥" },
audio = "Voiceless alveolar non-sibilant fricative.ogg"
},
{
name = "Voiced alveolar non-sibilant fricative",
symbols = { "ð̠", "ð͇", "ɹ̝" },
audio = "Voiced alveolar non-sibilant fricative.ogg"
},
{
name = "Voiceless alveolar tapped fricative",
symbols = { "ɾ̞̊" },
},
{
name = "Voiced alveolar tapped fricative",
symbols = { "ɾ̞" },
audio = "Voiced alveolar tapped fricative.ogg"
},
{
name = "Voiceless postalveolar fricative",
symbols = { "ʃ" },
audio = "Voiceless palato-alveolar sibilant.ogg"
},
{
name = "Voiced postalveolar fricative",
symbols = { "ʒ" },
audio = "Voiced palato-alveolar sibilant.ogg"
},
{
name = "Voiceless postalveolar non-sibilant fricative",
symbols = { "ɹ̠̊˔", "ɹ̝̊˗" },
audio = "Voiceless postalveolar non-sibilant fricative.ogg"
},
{
name = "Voiced postalveolar non-sibilant fricative",
symbols = { "ɹ̠˔", "ɹ̝˗" },
audio = "Voiced postalveolar non-sibilant fricative.ogg"
},
{
name = "Voiceless retroflex fricative",
symbols = { "ʂ" },
audio = "Voiceless retroflex sibilant.ogg"
},
{
name = "Voiced retroflex fricative",
symbols = { "ʐ" },
audio = "Voiced retroflex sibilant.ogg"
},
{
name = "Voiced retroflex non-sibilant fricative",
symbols = { "ɻ̝", "ɻ˔", "ɻ̊" },
},
{
name = "Voiceless alveolo-palatal fricative",
symbols = { "ɕ" },
audio = "Voiceless alveolo-palatal sibilant.ogg"
},
{
name = "Voiced alveolo-palatal fricative",
symbols = { "ʑ" },
audio = "Voiced alveolo-palatal sibilant.ogg"
},
{
name = "Voiceless palatal fricative",
symbols = { "ç" },
audio = "Voiceless palatal fricative.ogg"
},
{
name = "Voiced palatal fricative",
symbols = { "ʝ", "j̊" },
audio = "Voiced palatal fricative.ogg"
},
{
name = "Voiceless post-palatal fricative",
symbols = { "ç˗", "ç̠", "x̟" },
},
{
name = "Voiced post-palatal fricative",
symbols = { "ʝ˗", "ʝ̠", "ɣ˖", "ɣ̟" },
},
{
name = "Voiceless velar fricative",
symbols = { "x", "ɰ̊", "x̞", "ɣ̊˕", "ɣ̞̊" },
audio = "Voiceless velar fricative.ogg"
},
{
name = "Voiced velar fricative",
symbols = { "ɣ" },
audio = "Voiced velar fricative.ogg"
},
{
name = "Voiceless pre-uvular fricative",
symbols = { "χ˖", "χ̟", "x̠" },
},
{
name = "Voiced pre-uvular fricative",
symbols = { "ʁ̟", "ɣ˗", "ɣ̠" },
},
{
name = "Voiceless uvular fricative",
symbols = { "χ" },
audio = "Voiceless uvular fricative.ogg"
},
{
name = "Voiced uvular fricative",
symbols = { "ʁ" },
audio = "Voiced uvular fricative.ogg"
},
{
name = "Voiceless pharyngeal fricative",
symbols = { "ħ" },
audio = "Voiceless pharyngeal fricative.ogg"
},
{
name = "Voiced pharyngeal fricative",
symbols = { "ʕ" },
audio = "Voiced pharyngeal fricative.ogg"
},
{
name = "Voiceless glottal fricative",
symbols = { "h" },
audio = "Voiceless glottal fricative.ogg"
},
{
name = "Voiced glottal fricative",
symbols = { "ɦ" },
audio = "Voiced glottal fricative.ogg"
},
{
name = "Voiceless bidental fricative",
symbols = { "h̪͆" },
},
-- Approximants
{
name = "Voiced bilabial approximant",
symbols = { "β̞" },
audio = "Bilabial approximant.ogg"
},
{
name = "Voiced labiodental approximant",
symbols = { "ʋ" },
audio = "Labiodental approximant.ogg"
},
{
name = "Voiced dental approximant",
symbols = { "ð̞" },
audio = "Voiced dental approximant.ogg"
},
{
name = "Voiced alveolar approximant",
symbols = { "ɹ" },
audio = "Alveolar approximant.ogg"
},
{
name = "Voiced postalveolar approximant",
symbols = { "ɹ̠" },
audio = "Postalveolar approximant.ogg"
},
{
name = "Voiced retroflex approximant",
symbols = { "ɻ" },
audio = "Retroflex Approximant2.oga"
},
{
name = "Voiced palatal approximant",
symbols = { "j", "ʝ˕", "ʝ̞" },
audio = "Palatal approximant.ogg"
},
{
name = "Voiced post-palatal approximant",
symbols = { "j˗", "j̠", "ɰ̟", "ɰ˖", "ʝ˕˗", "ʝ˗˕", "ʝ̞˗", "ɣ˕˖", "ɣ˖˕", "ɣ̞˖" },
audio = "Post-palatal approximant.ogg"
},
{
name = "Voiced velar approximant",
symbols = { "ɰ", "ɣ˕", "ɣ̞" },
audio = "Voiced velar approximant.ogg"
},
{
name = "Voiced uvular approximant",
symbols = { "ʁ̞" },
audio = "Voiced Uvular Approximant.ogg"
},
{
name = "Voiced pharyngeal approximant",
symbols = { "ʕ̞" },
},
{
name = "Voiced epiglottal approximant",
symbols = { "ʢ̞" },
},
{
name = "Creaky-voiced glottal approximant",
symbols = { "ʔ̞", "ʔ̰" },
},
-- Taps/flaps
{
name = "Voiced bilabial flap",
symbols = { "ⱱ̟", "b̆" },
},
{
name = "Voiced labiodental flap",
symbols = { "ⱱ" },
audio = "Labiodental flap.ogg"
},
{
name = "Voiced linguolabial tap",
symbols = { "ɾ̼" },
},
{
name = "Voiced dental tap or flap",
symbols = { "ɾ̪" },
article = "Dental tap",
},
{
name = "Voiceless alveolar tap or flap",
symbols = { "ɾ̥" },
article = "Voiceless alveolar tap",
},
{
name = "Voiced alveolar tap or flap",
symbols = { "ɾ" },
article = "Voiced dental and alveolar taps and flaps",
audio = "Alveolar tap.ogg"
},
{
name = "Voiced postalveolar flap",
symbols = { "ɾ̠" },
},
{
name = "Voiced alveolar nasal tap or flap",
symbols = { "ɾ̃", "n̆" },
article = "Alveolar nasal tap",
},
{
name = "Voiceless retroflex flap",
symbols = { "ɽ̊" },
},
{
name = "Voiced retroflex flap",
symbols = { "ɽ" },
audio = "Retroflex flap.ogg"
},
{
name = "Voiced velar tap",
symbols = { "ɡ̆" },
},
{
name = "Voiced uvular tap or flap",
symbols = { "ɢ̆", "ʀ̆" },
article = "Voiced uvular tap and flap",
},
{
name = "Voiced epiglottal tap",
symbols = { "ʡ̆", "ʢ̆" },
audio = "Epiglottal flap.oga"
},
-- Trills
{
name = "Voiceless bilabial trill",
symbols = { "ʙ̥" },
audio = "Voiceless bilabial trill with aspiration.ogg"
},
{
name = "Voiced bilabial trill",
symbols = { "ʙ" },
audio = "Bilabial trill.ogg"
},
{
name = "Voiced linguolabial trill",
symbols = { "r̼" },
audio = "Linguolabial trill.ogg"
},
{
name = "Voiced dental trill",
symbols = { "r̪" },
},
{
name = "Voiceless alveolar trill",
symbols = { "r̥" },
audio = "Voiceless alveolar trill.ogg"
},
{
name = "Voiced alveolar trill",
symbols = { "r" },
audio = "Alveolar trill.ogg"
},
{
name = "Voiceless alveolar fricative trill",
symbols = { "r̝̊" },
},
{
name = "Voiced alveolar fricative trill",
symbols = { "r̝" },
audio = "Raised alveolar non-sonorant trill.ogg"
},
{
name = "Voiced postalveolar trill",
symbols = { "r̠" },
audio = "Voiced postalveolar trill.ogg"
},
{
name = "Voiceless retroflex trill",
symbols = { "ɽ̊r̥", "ɽr̥" },
},
{
name = "Voiced retroflex trill",
symbols = { "ɽr" },
audio = "Voiced retroflex trill.ogg"
},
{
name = "Voiceless pre-uvular fricative trill",
symbols = { "ʀ̝̊˖", "ʀ̟̊˔" },
},
{
name = "Voiced pre-uvular fricative trill",
symbols = { "ʀ̝˖", "ʀ̟˔" },
},
{
name = "Voiceless uvular trill",
symbols = { "ʀ̥" },
audio = "Voiceless uvular trill.ogg"
},
{
name = "Voiced uvular trill",
symbols = { "ʀ" },
audio = "Uvular trill.ogg"
},
{
name = "Voiceless uvular fricative trill",
symbols = { "ʀ̝̊" },
},
{
name = "Voiced uvular fricative trill",
symbols = { "ʀ̝" },
},
{
name = "Voiceless epiglottal trill",
symbols = { "ʜ" },
audio = "Voiceless epiglottal trill.ogg"
},
{
name = "Voiced epiglottal trill",
symbols = { "ʢ" },
audio = "Voiced epiglottal trill 2.ogg"
},
-- Lateral affricates
{
name = "Voiceless alveolar lateral affricate",
symbols = { "tɬ", "ƛ" },
audio = "Voiceless alveolar lateral affricate.ogg"
},
{
name = "Voiced alveolar lateral affricate",
symbols = { "dɮ" },
audio = "Voiced alveolar lateral affricate.ogg"
},
{
name = "Voiceless retroflex lateral affricate",
symbols = { "ʈɭ̊˔","ʈɭ̊", "tꞎ", "ʈꞎ" },
},
{
name = "Voiced retroflex lateral affricate",
symbols = { "ɖɭ˔","ɖɭ", "d𝼅", "ɖ𝼅" },
},
{
name = "Voiceless palatal lateral affricate",
symbols = { "cʎ̝̊", "cʎ̥", "c𝼆", "t𝼆" },
audio = "Voiceless palatal lateral affricate.ogg"
},
{
name = "Voiced palatal lateral affricate",
symbols = { "ɟʎ̝", "ɟʎ", "ɟ𝼆̬", "d𝼆̬" },
},
{
name = "Voiceless velar lateral affricate",
symbols = { "kʟ̝̊", "kʟ̥", "k𝼄" },
audio = "Voiceless velar lateral affricate.ogg"
},
{
name = "Voiced velar lateral affricate",
symbols = { "ɡʟ̝", "ɡʟ", "ɡ𝼄̬" },
audio = "Voiced velar lateral affricate.ogg"
},
-- Lateral fricatives
{
name = "Voiceless dental lateral fricative",
symbols = { "ɬ̪" },
},
{
name = "Voiced dental lateral fricative",
symbols = { "ɮ̪", "ɮ͆" },
},
{
name = "Voiceless alveolar lateral fricative",
symbols = { "ɬ", "l̥" },
audio = "Voiceless alveolar lateral fricative.ogg"
},
{
name = "Voiced alveolar lateral fricative",
symbols = { "ɮ" },
audio = "Voiced alveolar lateral fricative.ogg"
},
{
name = "Voiceless retroflex lateral fricative",
symbols = { "ɭ̊˔", "ꞎ", "ɭ̊" },
audio = "Voiceless retroflex lateral fricative.ogg"
},
{
name = "Voiced retroflex lateral fricative",
symbols = { "ɭ˔", "𝼅" },
},
{
name = "Voiceless alveolo-palatal lateral fricative",
symbols = { "ɬ̠ʲ", "ʎ̝̊˖", "ȴ̊˔", "l̠̊ʲ", "ʎ̟̊", "ȴ̊" },
},
{
name = "Voiceless palatal lateral fricative",
symbols = { "ʎ̝̊", "ʎ̥", "𝼆" },
audio = "Voiceless palatal lateral fricative.ogg"
},
{
name = "Voiced palatal lateral fricative",
symbols = { "ʎ̝", "𝼆̬" },
},
{
name = "Voiceless velar lateral fricative",
symbols = { "ʟ̝̊", "ʟ̥", "𝼄" },
audio = "Voiceless velar lateral fricative.ogg"
},
{
name = "Voiced velar lateral fricative",
symbols = { "ʟ̝", "𝼄̬" },
audio = "Voiced velar lateral fricative.ogg"
},
-- Lateral approximants
{
name = "Voiced dental lateral approximant",
symbols = { "l̪" },
audio = "Voiced dental lateral approximant.ogg"
},
{
name = "Voiced alveolar lateral approximant",
symbols = { "l" },
audio = "Alveolar lateral approximant.ogg"
},
{
name = "Voiced postalveolar lateral approximant",
symbols = { "l̠" },
audio = "Voiced postalveolar lateral approximant.ogg"
},
{
name = "Voiced retroflex lateral approximant",
symbols = { "ɭ" },
audio = "Retroflex lateral approximant.ogg"
},
{
name = "Voiced alveolo-palatal lateral approximant",
symbols = { "l̠ʲ", "ʎ̟", "ȴ" },
},
{
name = "Voiced palatal lateral approximant",
symbols = { "ʎ" },
audio = "Palatal lateral approximant.ogg"
},
{
name = "Voiced velar lateral approximant",
symbols = { "ʟ" },
audio = "Velar lateral approximant.ogg"
},
{
name = "Voiced uvular lateral approximant",
symbols = { "ʟ̠" },
audio = "Uvular lateral approximant.ogg"
},
-- Lateral taps/flaps
{
name = "Voiceless alveolar lateral flap",
symbols = { "ɺ̥" },
},
{
name = "Voiced alveolar lateral flap",
symbols = { "ɺ" },
},
{
name = "Voiceless retroflex lateral flap",
symbols = { "ɭ̥̆", "𝼈̥" },
},
{
name = "Voiced retroflex lateral flap",
symbols = { "ɭ̆", "𝼈" },
},
{
name = "Voiced palatal lateral flap",
symbols = { "ʎ̆" },
},
{
name = "Voiced velar lateral tap",
symbols = { "ʟ̆" },
},
-- NON-PULMONIC CONSONANTS
-- Ejective stops
{
name = "Bilabial ejective stop",
symbols = { "pʼ" },
audio = "Bilabial ejective plosive.ogg"
},
{
name = "Dental ejective stop",
symbols = { "t̪ʼ" },
},
{
name = "Alveolar ejective stop",
symbols = { "tʼ" },
audio = "Alveolar ejective plosive.ogg"
},
{
name = "Retroflex ejective stop",
symbols = { "ʈʼ" },
audio = "Retroflex ejective.ogg"
},
{
name = "Palatal ejective stop",
symbols = { "cʼ" },
audio = "Palatal ejective.ogg"
},
{
name = "Velar ejective stop",
symbols = { "kʼ" },
audio = "Velar ejective plosive.ogg"
},
{
name = "Uvular ejective stop",
symbols = { "qʼ" },
audio = "Uvular ejective plosive.ogg"
},
{
name = "Epiglottal ejective",
symbols = { "ʡʼ" },
audio = "Epiglottal ejective.ogg"
},
-- Ejective affricates
{
name = "Dental ejective affricate",
symbols = { "t̪θʼ", "t̟θʼ", "tθʼ" },
audio = "Dental ejective affricate.ogg"
},
{
name = "Alveolar ejective affricate",
symbols = { "tsʼ" },
audio = "Alveolar ejective affricate.ogg"
},
{
name = "Palato-alveolar ejective affricate",
symbols = { "t̠ʃʼ", "tʃʼ" },
audio = "Palato-alveolar ejective affricate.ogg"
},
{
name = "Retroflex ejective affricate",
symbols = { "ʈʂʼ", "tʂʼ" },
audio = "Retroflex ejective affricate.ogg"
},
{
name = "Alveolo-palatal ejective affricate",
symbols = { "t̠ɕʼ", "tɕʼ", "cɕʼ" },
},
{
name = "Palatal ejective affricate",
symbols = { "cçʼ" },
audio = "Palatal ejective affricate.ogg"
},
{
name = "Velar ejective affricate",
symbols = { "kxʼ" },
audio = "Velar ejective affricate.ogg"
},
{
name = "Uvular ejective affricate",
symbols = { "qχʼ" },
audio = "Uvular ejective affricate.ogg"
},
-- Ejective fricatives
{
name = "Bilabial ejective fricative",
symbols = { "ɸʼ" },
},
{
name = "Labiodental ejective fricative",
symbols = { "fʼ" },
audio = "Labiodental ejective fricative.ogg"
},
{
name = "Dental ejective fricative",
symbols = { "θʼ" },
audio = "Dental ejective fricative.ogg"
},
{
name = "Alveolar ejective fricative",
symbols = { "sʼ" },
audio = "Alveolar ejective fricative.ogg"
},
{
name = "Palato-alveolar ejective fricative",
symbols = { "ʃʼ" },
audio = "Palato-alveolar ejective fricative.ogg"
},
{
name = "Retroflex ejective fricative",
symbols = { "ʂʼ" },
audio = "Retroflex ejective fricative.ogg"
},
{
name = "Alveolo-palatal ejective fricative",
symbols = { "ɕʼ" },
audio = "Alveolo-palatal ejective fricative.ogg"
},
{
name = "Palatal ejective fricative",
symbols = { "çʼ" },
audio = "Palatal ejective fricative.ogg"
},
{
name = "Velar ejective fricative",
symbols = { "xʼ" },
audio = "Velar ejective fricative.ogg"
},
{
name = "Uvular ejective fricative",
symbols = { "χʼ" },
audio = "Uvular ejective fricative.ogg"
},
-- Lateral ejective affricates
{
name = "Alveolar lateral ejective affricate",
symbols = { "tɬʼ", "ƛʼ" },
audio = "Alveolar lateral ejective affricate.ogg"
},
{
name = "Palatal lateral ejective affricate",
symbols = { "cʎ̝̊ʼ", "cʎ̥ʼ" },
audio = "Palatal lateral ejective affricate.ogg"
},
{
name = "Velar lateral ejective affricate",
symbols = { "kʟ̝̊ʼ", "kʟ̥ʼ" },
audio = "Velar lateral ejective affricate.ogg"
},
-- Lateral ejective fricatives
{
name = "Alveolar lateral ejective fricative",
symbols = { "ɬʼ" },
audio = "Alveolar lateral ejective fricative.ogg"
},
-- Tenuis clicks
{
name = "Tenuis bilabial click",
symbols = { "ʘ", "kʘ" },
audio = "Clic bilabial sourd.ogg"
},
{
name = "Tenuis dental click",
symbols = { "ǀ", "kǀ" },
audio = "Dental click.ogg"
},
{
name = "Tenuis alveolar click",
symbols = { "ǃ", "kǃ" },
audio = "Postalveolar click.ogg"
},
{
name = "Tenuis palatal click",
symbols = { "ǂ", "kǂ" },
audio = "Palatoalveolar click.ogg"
},
{
name = "Back-released velar click",
symbols = { "ʞ" },
},
-- Voiced clicks
{
name = "Voiced bilabial click",
symbols = { "ʘ̬", "ɡʘ" },
},
{
name = "Voiced dental click",
symbols = { "ǀ̬", "ɡǀ" },
},
{
name = "Voiced alveolar click",
symbols = { "ǃ̬", "ɡǃ" },
},
{
name = "Tenuis retroflex click",
symbols = { "‼", "𝼊" },
},
{
name = "Voiced palatal click",
symbols = { "ǂ̬", "ɡǂ" },
},
{
name = "Voiced retroflex click",
symbols = { "‼̬", "ɡ‼", "ɡ𝼊" },
},
-- Nasal clicks
{
name = "Bilabial nasal click",
symbols = { "ʘ̃", "ŋʘ" },
audio = "Bilabial nasal click.ogg"
},
{
name = "Dental nasal click",
symbols = { "ǀ̃", "ŋǀ" },
},
{
name = "Alveolar nasal click",
symbols = { "ǃ̃", "ŋǃ" },
audio = "Intervocalic nasal alveolar clicks.ogg"
},
{
name = "Palatal nasal click",
symbols = { "ǂ̃", "ŋǂ" },
},
{
name = "Retroflex nasal click",
symbols = { "‼̃", "ŋ‼", "ŋ𝼊" },
},
-- Lateral clicks
{
name = "Tenuis alveolar lateral click",
symbols = { "ǁ", "kǁ" },
audio = "Alveolar lateral click.ogg"
},
{
name = "Voiced alveolar lateral click",
symbols = { "ǁ̬", "ɡǁ" },
},
-- Lateral nasal clicks
{
name = "Alveolar lateral nasal click",
symbols = { "ǁ̃", "ŋǁ" },
},
-- Glottalized clicks
{
name = "Glottalized bilabial nasal click",
symbols = { "ʘ̃ˀ", "ʘˀ", "ŋ̊ʘˀ", "ŋʘˀ" },
},
{
name = "Glottalized dental nasal click",
symbols = { "ǀ̃ˀ", "ǀˀ", "ŋ̊ǀˀ", "ŋǀˀ" },
},
{
name = "Glottalized alveolar nasal click",
symbols = { "ǃ̃ˀ", "ǃˀ", "ŋ̊ǃˀ", "ŋǃˀ" },
},
{
name = "Glottalized retroflex nasal click",
symbols = { "‼̃ˀ", "‼ˀ", "ŋ‼ˀ", "ŋ̊‼ˀ" },
},
{
name = "Glottalized palatal nasal click",
symbols = { "ǂ̃ˀ", "ǂˀ", "ŋ̊ǂˀ", "ŋǂˀ" },
},
{
name = "Glottalized alveolar lateral nasal click",
symbols = { "ǁ̃ˀ", "ǁˀ", "ŋ̊ǁˀ", "ŋǁˀ" },
},
-- Implosives
{
name = "Voiceless bilabial implosive",
symbols = { "ɓ̥", "ƥ" },
},
{
name = "Voiced bilabial implosive",
symbols = { "ɓ" },
audio = "Voiced bilabial implosive.ogg"
},
{
name = "Voiceless alveolar implosive",
symbols = { "ɗ̥", "ƭ" },
},
{
name = "Voiced alveolar implosive",
symbols = { "ɗ" },
audio = "Voiced alveolar implosive.ogg"
},
{
name = "Voiceless retroflex implosive",
symbols = { "ᶑ̊", "ᶑ̥", "𝼉" },
},
{
name = "Voiced retroflex implosive",
symbols = { "ᶑ" },
},
{
name = "Voiceless palatal implosive",
symbols = { "ʄ̊", "ʄ̥", "ƈ" },
},
{
name = "Voiced palatal implosive",
symbols = { "ʄ" },
audio = "Voiced palatal implosive.ogg"
},
{
name = "Voiceless velar implosive",
symbols = { "ɠ̊", "ƙ" },
},
{
name = "Voiced velar implosive",
symbols = { "ɠ" },
audio = "Voiced velar implosive.ogg"
},
{
name = "Voiceless uvular implosive",
symbols = { "ʛ̥", "ʠ" },
},
{
name = "Voiced uvular implosive",
symbols = { "ʛ" },
audio = "Voiced uvular implosive.ogg"
},
-- CO-ARTICULATED CONSONANTS
-- Co-articulated nasals
{
name = "Voiced labial–alveolar nasal",
symbols = { "nm" },
article = "Labial–coronal consonant",
},
{
name = "Voiced labial–velar nasal",
symbols = { "ŋm" },
audio = "Labial-velar nasal stop.ogg"
},
-- Co-articulated plosives
{
name = "Voiceless labial–alveolar plosive",
symbols = { "tp" },
article = "Labial–coronal consonant",
},
{
name = "Voiced labial–alveolar plosive",
symbols = { "db" },
article = "Labial–coronal consonant",
},
{
name = "Voiceless labial–velar plosive",
symbols = { "kp" },
audio = "Voiceless labial-velar plosive.ogg"
},
{
name = "Voiced labial–velar plosive",
symbols = { "ɡb" },
audio = "Voiced labial-velar plosive.ogg"
},
{
name = "Voiceless uvular–epiglottal plosive",
symbols = { "qʡ" },
},
-- Co-articulated continuants
{
name = "Voiceless labial–palatal fricative",
symbols = { "ɥ̊" },
},
{
name = "Voiced labial–palatal approximant",
symbols = { "ɥ" },
audio = "LL-Q150 (fra)-WikiLucas00-IPA ɥ.wav"
},
{
name = "Voiceless labial–velar fricative",
symbols = { "ʍ", "w̥", "hw" },
audio = "Voiceless labio-velar fricative.ogg"
},
{
name = "Voiced labial–velar approximant",
symbols = { "w" },
audio = "Voiced labio-velar approximant.ogg"
},
{
name = "Compressed voiced labial–velar approximant",
symbols = { "wᵝ", "ɰᵝ" },
article = "Voiced labial–velar approximant",
},
{
name = "Sj-sound",
symbols = { "ɧ" },
audio = "Voiceless dorso-palatal velar fricative.ogg"
},
-- Co-articulated lateral approximants
{
name = "Velarized dental lateral approximant",
symbols = { "ɫ̪", "l̪ˠ" },
},
{
name = "Velarized alveolar lateral approximant",
symbols = { "ɫ", "lˠ" },
audio = "Velarized alveolar lateral approximant.ogg"
},
-- Nasal approximants
{
name = "Nasal palatal approximant",
symbols = { "j̃" },
},
{
name = "Nasal labial–velar approximant",
symbols = { "w̃" },
},
{
name = "Voiceless nasal glottal approximant",
symbols = { "h̃" },
},
-- VOWELS
-- Close vowels
{
name = "Close front unrounded vowel",
symbols = { "i" },
audio = "Close front unrounded vowel.ogg"
},
{
name = "Close front rounded vowel",
symbols = { "y" },
audio = "Close front rounded vowel.ogg"
},
{
name = "Close front compressed vowel",
symbols = { "y͍", "iᵝ" },
audio = "Close front rounded vowel.ogg"
},
{
name = "Close front protruded vowel",
symbols = { "y̫", "yʷ", "iʷ" },
},
{
name = "Close central unrounded vowel",
symbols = { "ɨ", "ï" },
audio = "Close central unrounded vowel.ogg"
},
{
name = "Close central rounded vowel",
symbols = { "ʉ", "ü" },
audio = "Close central rounded vowel.ogg"
},
{
name = "Close central protruded vowel",
symbols = { "ʉ̫", "ʉʷ", "ɨʷ" },
audio = "Close central rounded vowel.ogg"
},
{
name = "Close central compressed vowel",
symbols = { "ÿ", "ɨᵝ" },
},
{
name = "Close back unrounded vowel",
symbols = { "ɯ" },
audio = "Close back unrounded vowel.ogg"
},
{
name = "Close back rounded vowel",
symbols = { "u" },
audio = "Close back rounded vowel.ogg"
},
{
name = "Close back protruded vowel",
symbols = { "u̫", "uʷ", "ɯʷ" },
audio = "Close back rounded vowel.ogg"
},
{
name = "Close back compressed vowel",
symbols = { "u͍", "ɯᵝ" },
audio = "Ja-U.oga"
},
-- Near-close vowels
{
name = "Near-close near-front unrounded vowel",
symbols = { "ɪ", "ɪ̟", "i̞", "e̝" },
audio = "Near-close near-front unrounded vowel.ogg"
},
{
name = "Near-close near-front rounded vowel",
symbols = { "ʏ", "y̞", "y˕", "ø̝" },
audio = "Near-close near-front rounded vowel.ogg"
},
{
name = "Near-close near-front compressed vowel",
symbols = { "ʏ͍", "ɪᵝ" },
audio = "Near-close near-front rounded vowel.ogg"
},
{
name = "Near-close near-front protruded vowel",
symbols = { "ʏ̫", "ʏʷ", "ɪʷ" },
},
{
name = "Near-close central unrounded vowel",
symbols = { "ɪ̈", "ɨ̞", "ɘ̝" },
audio = "Near-close central unrounded vowel.ogg"
},
{
name = "Near-close central rounded vowel",
symbols = { "ʊ̈", "ʊ̟", "ʉ̞", "ɵ̝" },
},
{
name = "Near-close central protruded vowel",
symbols = { "ʊ̫̈", "ʉ̫˕", "ʊ̈ʷ", "ʉ̞ʷ", "ɪ̈ʷ", "ɨ̞ʷ" },
},
{
name = "Near-close central compressed vowel",
symbols = { "ʏ̈", "ɨ̞ᵝ" },
},
{
name = "Near-close near-back unrounded vowel",
symbols = { "ɯ̞", "ɯ̽" },
audio = "Near-close near-back unrounded vowel.ogg"
},
{
name = "Near-close near-back rounded vowel",
symbols = { "ʊ", "u̞", "o̝" },
audio = "Near-close near-back rounded vowel.ogg"
},
{
name = "Near-close near-back protruded vowel",
symbols = { "ʊ̫", "ʊʷ", "ɯ̽ʷ", "ɤ̝̈ʷ", "u̫˕", "u̞ʷ", "ɯ̞ʷ", "ɤ̝ʷ" },
audio = "Near-close near-back rounded vowel.ogg"
},
{
name = "Near-close near-back compressed vowel",
symbols = { "ʊ͍", "ɯ̽ᵝ", "ɯ̞̈ᵝ", "ɯ̞ᵝ" },
},
-- Close-mid vowels
{
name = "Close-mid front unrounded vowel",
symbols = { "e" },
audio = "Close-mid front unrounded vowel.ogg"
},
{
name = "Close-mid front rounded vowel",
symbols = { "ø" },
audio = "Close-mid front rounded vowel.ogg"
},
{
name = "Close-mid front compressed vowel",
symbols = { "ø͍", "eᵝ" },
audio = "Close-mid front rounded vowel.ogg"
},
{
name = "Close-mid front protruded vowel",
symbols = { "ø̫", "øʷ", "eʷ" },
},
{
name = "Close-mid central unrounded vowel",
symbols = { "ɘ", "ë", "ɤ̈" },
audio = "Close-mid central unrounded vowel.ogg"
},
{
name = "Close-mid central rounded vowel",
symbols = { "ɵ", "ö" },
audio = "Close-mid central rounded vowel.ogg"
},
{
name = "Close-mid central protruded vowel",
symbols = { "ɵ̫", "ɵʷ", "ɘʷ" },
audio = "Close-mid central rounded vowel.ogg"
},
{
name = "Close-mid central compressed vowel",
symbols = { "ø̈", "ɘᵝ" },
},
{
name = "Close-mid back unrounded vowel",
symbols = { "ɤ" },
audio = "Close-mid back unrounded vowel.ogg"
},
{
name = "Close-mid back rounded vowel",
symbols = { "o" },
audio = "Close-mid back rounded vowel.ogg"
},
{
name = "Close-mid back protruded vowel",
symbols = { "o̫", "oʷ", "ɤʷ" },
audio = "Close-mid back rounded vowel.ogg"
},
{
name = "Close-mid back compressed vowel",
symbols = { "o͍", "ɤᵝ" },
},
-- Mid vowels
{
name = "Mid front unrounded vowel",
symbols = { "e̞", "ɛ̝" },
audio = "Mid front unrounded vowel.ogg"
},
{
name = "Mid front rounded vowel",
symbols = { "ø̞", "œ̝" },
audio = "Mid front rounded vowel.ogg"
},
{
name = "Mid front compressed vowel",
symbols = { "ø͍˕", "œ͍˔", "e̞ᵝ", "ɛ̝ᵝ" },
},
{
name = "Mid front protruded vowel",
symbols = { "ø̫˕", "œ̫˔", "ø̞ʷ", "œ̝ʷ", "e̞ʷ", "ɛ̝ʷ" },
},
{
name = "Mid central vowel",
symbols = { "ə" },
audio = "Mid-central vowel.ogg"
},
{
name = "Mid central unrounded vowel",
symbols = { "ə̜", "ɘ̞", "ɜ̝" },
audio = "Mid-central vowel.ogg"
},
{
name = "Mid central rounded vowel",
symbols = { "ə̹", "ɵ̞", "ɞ̝" },
audio = "Mid central rounded vowel.ogg"
},
{
name = "Mid back unrounded vowel",
symbols = { "ɤ̞", "ʌ̝" },
},
{
name = "Mid back rounded vowel",
symbols = { "o̞", "ɔ̝" },
audio = "Mid back rounded vowel.ogg"
},
-- Open-mid vowels
{
name = "Open-mid front unrounded vowel",
symbols = { "ɛ" },
audio = "Open-mid front unrounded vowel.ogg"
},
{
name = "Open-mid front rounded vowel",
symbols = { "œ" },
audio = "Open-mid front rounded vowel.ogg"
},
{
name = "Open-mid front compressed vowel",
symbols = { "œ͍", "ɛᵝ" },
audio = "Open-mid front rounded vowel.ogg"
},
{
name = "Open-mid front protruded vowel",
symbols = { "œ̫", "œʷ", "ɛʷ" },
},
{
name = "Open-mid central unrounded vowel",
symbols = { "ɜ", "ɛ̈", "ʌ̈" },
audio = "Open-mid central unrounded vowel.ogg"
},
{
name = "Open-mid central rounded vowel",
symbols = { "ɞ" },
audio = "Open-mid central rounded vowel.ogg"
},
{
name = "Open-mid back unrounded vowel",
symbols = { "ʌ" },
audio = "PR-open-mid back unrounded vowel2.ogg"
},
{
name = "Open-mid back rounded vowel",
symbols = { "ɔ" },
audio = "PR-open-mid back rounded vowel.ogg"
},
-- Near-open vowels
{
name = "Near-open front unrounded vowel",
symbols = { "æ" },
audio = "Near-open front unrounded vowel.ogg"
},
{
name = "Near-open central vowel",
symbols = { "ɐ" },
audio = "Near-open central unrounded vowel.ogg"
},
{
name = "Near-open central unrounded vowel",
symbols = { "ɐ̜", "ɜ̞" },
audio = "PR-near-open central unrounded vowel.ogg"
},
{
name = "Near-open central rounded vowel",
symbols = { "ɐ̹", "ɞ̞" },
},
-- Open vowels
{
name = "Open front unrounded vowel",
symbols = { "a", "æ̞" },
audio = "PR-open front unrounded vowel.ogg"
},
{
name = "Open front rounded vowel",
symbols = { "ɶ" },
audio = "Open front rounded vowel.ogg"
},
{
name = "Open central unrounded vowel",
symbols = { "ä", "ɑ̈", "ɐ̞" },
audio = "Open central unrounded vowel.ogg"
},
{
name = "Open central rounded vowel",
symbols = { "ɒ̈", "ɶ̈" },
audio = "Open central rounded vowel.ogg"
},
{
name = "Open back unrounded vowel",
symbols = { "ɑ" },
audio = "Open back unrounded vowel.ogg"
},
{
name = "Open back rounded vowel",
symbols = { "ɒ" },
audio = "PR-open back rounded vowel.ogg"
},
{
name = "R-colored vowel",
symbols = { "ɚ", "ɝ", "ɹ̩", "ɻ̍" },
audio = "En-us-er.ogg"
},
-- SUPRASEGMENTALS
{
name = "Primary stress",
symbols = { "ˈ" },
article = "Stress (linguistics)",
},
{
name = "Secondary stress",
symbols = { "ˌ" },
},
{
name = "Minor (foot) group",
symbols = { "|" },
article = "Prosodic unit",
},
{
name = "Major (intonation) group",
symbols = { "‖" },
article = "Prosodic unit",
},
{
name = "Syllable break",
symbols = { "." },
article = "Syllable",
},
{
name = "Linking (absence of a break)",
symbols = { "‿" },
article = "Connected speech",
},
-- TONES AND WORD ACCENTS
{
name = "Downstep",
symbols = { "ꜜ" },
},
{
name = "Upstep",
symbols = { "ꜛ" },
},
{
name = "Global rise",
symbols = { "↗" },
article = "Intonation (linguistics)",
},
{
name = "Global fall",
symbols = { "↘" },
article = "Intonation (linguistics)",
},
-- EXTENDED IPA (extIPA)
{
name = "Bilabial percussive",
symbols = { "ʬ" },
},
{
name = "Bidental percussive",
symbols = { "ʭ" },
},
{
name = "Velopharyngeal fricative",
symbols = { "ʩ" },
},
{
name = "Voiceless alveolar lateral–median fricative",
symbols = { "ʪ" },
article = "Lateral release (phonetics)",
},
{
name = "Voiced alveolar lateral–median fricative",
symbols = { "ʫ" },
article = "Lateral release (phonetics)",
},
{
name = "Ingressive airflow",
symbols = { "↓" },
article = "Ingressive sound",
},
{
name = "Egressive airflow",
symbols = { "↑" },
article = "Egressive sound",
},
{
name = "Apical r",
symbols = { "ɹ̺" },
article = "Pronunciation of English /r/",
},
{
name = "Bunched r",
symbols = { "ɹ̈" },
article = "Pronunciation of English /r/",
},
{
name = "Sublaminal lower alveolar percussive",
symbols = { "¡" },
article = "Percussive consonant",
},
{
name = "Percussive alveolar click",
symbols = { "ǃ¡" },
},
{
name = "Buccal interdental trill",
symbols = { "ↀr̪͆" },
article = "Blowing a raspberry",
},
-- NON-IPA
{
name = "Morphological boundary",
symbols = { "#" },
article = "Word stem",
},
{
name = "Zero",
symbols = { "∅" },
article = "Zero (linguistics)",
},
},
diacritics = {
-- DIACRITICS
{
name = "Voiceless",
symbols = { "̥", "̊", "ḁ", "å", "ů", "ẘ", "ẙ" },
},
{
name = "Voiced",
symbols = { "̬" },
article = "Voice (phonetics)",
},
{
name = "Aspirated",
symbols = { "ʰ" },
article = "Aspirated consonant",
},
{
name = "More rounded",
symbols = { "̹", "͗", "˒" },
article = "Roundedness",
},
{
name = "Less rounded",
symbols = { "̜", "͑", "˓", "͍" },
article = "Roundedness",
},
{
name = "Advanced",
symbols = { "̟", "˖" },
article = "Relative articulation#Advanced and retracted",
},
{
name = "Retracted",
symbols = { "̠", "˗" },
article = "Relative articulation#Advanced and retracted",
},
{
name = "Centralized",
symbols = { "̈" },
article = "Relative articulation#Centralized vowels",
},
{
name = "Mid-centralized",
symbols = { "̽" },
article = "Relative articulation#Mid-centralized vowel",
},
{
name = "Syllabic",
symbols = { "̩", "̍" },
article = "Syllabic consonant",
},
{
name = "Non-syllabic",
symbols = { "̯", "̑" },
article = "Semivowel",
},
{
name = "Rhoticity",
symbols = { "˞" },
article = "R-colored vowel",
audio = "En-us-er.ogg"
},
{
name = "Breathy voiced",
symbols = { "̤", "ṳ", "ʱ" },
article = "Breathy voice",
},
{
name = "Creaky voiced",
symbols = { "̰", "ḛ", "ḭ", "ṵ" },
article = "Creaky voice",
},
{
name = "Linguolabial",
symbols = { "̼" },
article = "Linguolabial consonant",
},
{
name = "Labialized",
symbols = { "ʷ", "̫" },
article = "Labialization",
},
{
name = "Palatalized",
symbols = { "ʲ" },
article = "Palatalization (phonetics)",
},
{
name = "Velarized",
symbols = { "ˠ" },
article = "Velarization",
},
{
name = "Pharyngealized",
symbols = { "ˤ" },
article = "Pharyngealization",
},
{
name = "Velarized or pharyngealized",
symbols = { "̴", "ᵯ", "ᵰ", "ᵱ", "ᵬ", "ᵮ", "ᵵ", "ᵭ", "ᵴ", "ᵶ", "ᵳ", "ᵲ" },
article = "Pharyngealization",
},
{
name = "Raised",
symbols = { "̝", "˔" },
article = "Relative articulation#Raised and lowered",
},
{
name = "Lowered",
symbols = { "̞", "˕" },
article = "Relative articulation#Raised and lowered",
},
{
name = "Advanced tongue root",
symbols = { "̘" },
},
{
name = "Retracted tongue root",
symbols = { "̙" },
},
{
name = "Dental",
symbols = { "̪", "͆" },
article = "Dental consonant",
},
{
name = "Apical",
symbols = { "̺" },
article = "Apical consonant",
},
{
name = "Laminal",
symbols = { "̻" },
article = "Laminal consonant",
},
{
name = "Nasalized",
symbols = { "̃", "ṽ" },
article = "Nasalization",
},
{
name = "Nasal vowel",
symbols = { "ĩ", "ỹ", "ɨ̃", "ʉ̃", "ɯ̃", "ũ", "ɪ̃", "ʏ̃", "ʊ̃", "ẽ", "ø̃", "ɘ̃", "ɵ̃", "ɤ̃", "õ", "ə̃", "ɛ̃", "œ̃", "ɜ̃", "ɞ̃", "ʌ̃", "ɔ̃", "æ̃", "ɐ̃", "ã", "ɶ̃", "ä̃", "ɑ̃", "ɒ̃" },
},
{
name = "Nasal release",
symbols = { "ⁿ" },
},
{
name = "Lateral release",
symbols = { "ˡ" },
article = "Lateral release (phonetics)",
},
{
name = "No audible release",
symbols = { "̚" },
},
{
name = "Ejective",
symbols = { "ʼ" },
article = "Ejective consonant",
},
{
name = "Glottalized",
symbols = { "ˀ" },
article = "Glottalization",
},
{
name = "Labio-palatalized",
symbols = { "ᶣ" },
article = "Labio-palatalization",
},
-- SUPRASEGMENTALS
{
name = "Long",
symbols = { "ː" },
article = "Length (phonetics)",
},
{
name = "Half-long",
symbols = { "ˑ" },
article = "Length (phonetics)",
},
{
name = "Extra-short",
symbols = { "̆" },
article = "Extra-shortness",
},
-- TONES AND WORD ACCENTS
{
name = "Accent",
symbols = { "̋", "ű", "ӳ", "ő", "́", "í", "ý", "ú", "é", "ó", "á", "̄", "ī", "ȳ", "ū", "ē", "ō", "ǣ", "ā", "̀", "ì", "ỳ", "ù", "è", "ò", "à", "̏", "ȉ", "ȕ", "ȅ", "ȍ", "ȁ" },
article = "Pitch-accent language",
},
{
name = "Tone",
symbols = { "̌", "̂", "᷄", "᷅", "᷇", "᷆", "᷈", "᷉", "˥", "˦", "˧", "˨", "˩" },
article = "Tone (linguistics)",
},
-- EXTENDED IPA (extIPA)
{
name = "Alveolar",
symbols = { "͇" },
article = "Alveolar consonant",
},
{
name = "Strong articulation",
symbols = { "͈", "̎" },
article = "Fortis and lenis",
},
{
name = "Weak articulation",
symbols = { "͉", "᷂" },
article = "Fortis and lenis",
},
{
name = "Denasalized",
symbols = { "͊" },
article = "Denasalization",
},
{
name = "Velopharyngeal friction",
symbols = { "͌" },
article = "Velopharyngeal consonant",
},
{
name = "Whistled articulation",
symbols = { "͎" },
article = "Whistled sibilant",
},
{
name = "Unaspirated",
symbols = { "˭" },
article = "Tenuis consonant",
},
{
name = "Pre-aspiration",
symbols = { "ʰp", "ʰt", "ʰʈ", "ʰc", "ʰk", "ʰq", "ʰn" },
article = "Preaspiration",
},
-- NON-IPA
{
name = "Retroflex",
symbols = { "̣", "̢" },
article = "Retroflex consonant",
},
{
name = "Prenasalized consonant",
symbols = { "ᵐ", "ᶬ", "ⁿt", "ⁿd", "ⁿθ", "ⁿð", "ⁿs", "ⁿz", "ⁿʃ", "ⁿʒ", "ⁿɕ", "ⁿʑ", "ⁿr", "ⁿɬ", "ⁿɮ", "ⁿl", "ᶯ", "ᶮ", "ᵑ", "ᶰ" },
},
{
name = "Pre-stopped consonant",
symbols = { "ᵖ", "ᵇ", "ᵗ", "ᵈ", "ᶜ", "ᶡ", "ᵏ", "ᶢ", "ᴳ" },
},
{
name = "Post-stopped nasal",
symbols = { "mᵇ", "nᵈ", "ɲᶡ", "ŋᶢ", "ɴᴳ" },
},
}
}
for k, group in pairs(rawData) do
for _, v in ipairs(group) do
local t = {
name = v.name,
symbol = v.symbols[1],
article = v.article or v.name,
audio = v.audio or ""
}
for _, s in ipairs(v.symbols) do
data[k][s] = t
end
end
end
return { data = data, rawData = rawData }
2513954eju01domsinlrckehziy7vlf
2022
0
42509
392287
391169
2022-08-18T22:07:39Z
Lam-ang
3622
+[[Fidel V. Ramos]]
wikitext
text/x-wiki
Ti tawen ti '''2022''' (MMXXII) ket [[kadawyan a tawen]] a [[Kadawyan a tawen a mangrugi iti Sabado|mangrugi iti Sabado]] iti [[kalendario a Gregoriano]] ([[dominikal a letra]] B), ti maika-2022 a tawen kadagiti panangikeddeng ti [[Kadawyan a Panawen]] (CE) ken [[Anno Domini]] (AD), ti maika-22 a tawen ti [[maika-3 a milenio]], ti maika-22 a tawen iti [[maika-21 a siglo]], ken ti maika-3 a tawen iti dekada ti [[tawtawen ti 2020]].
== Pimmusay ==
=== Enero ===
[[Papeles:Sidney Poitier-NPS.jpg|thumb|140px|[[Sidney Poitier]]]]
[[Papeles:F. SIONIL JOSE (2017).jpg|thumb|140px|[[Francisco Sionil José]]]]
* [[Enero 5]] – [[Robert Blust]], Amerikano a lingguista (naipasngay [[1940]])
* [[Enero 6]]
** [[Sidney Poitier]], Aprikano-Amerikano nga aktor (naipasngay [[1927]])
** [[Francisco Sionil José]], Filipino a mannurat (naipasngay [[1924]])
=== Marso ===
* [[Marso 13]] – [[William Hurt]], Amerikano nga aktor (naipasngay [[1950]])
=== Hulio ===
[[Papeles:Ramos Pentagon.jpg|thumb|140px|[[Fidel V. Ramos]]]]
* [[Hulio 31]] – [[Fidel V. Ramos]], maika-12 a [[Presidente ti Filipinas]] (naipasngay [[1928]])
== Dagiti akinruar a silpo ==
{{Commonscat-inline}}
{{Tawen-pungol}}
{{DEFAULTSORT:2022}}
[[Kategoria:2022| ]]
sh63c85017ofh2pxze1fockynuksuae
Modulo:Webarchive
828
55500
392280
390504
2022-08-18T21:45:17Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1103443944|Module:Webarchive/1103443944]]
Scribunto
text/plain
--[[ ----------------------------------
Lua module implementing the {{webarchive}} template.
A merger of the functionality of three templates: {{wayback}}, {{webcite}} and {{cite archives}}
]]
--[[--------------------------< D E P E N D E N C I E S >------------------------------------------------------
]]
require('Modulo:No globals');
local getArgs = require ('Modulo:Dagiti argumento').getArgs;
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local categories = {}; -- category names
local config = {}; -- global configuration settings
local digits = {}; -- for i18n; table that translates local-wiki digits to western digits
local err_warn_msgs = {}; -- error and warning messages
local excepted_pages = {};
local month_num = {}; -- for i18n; table that translates local-wiki month names to western digits
local prefixes = {}; -- service provider tail string prefixes
local services = {}; -- archive service provider data from
local s_text = {}; -- table of static text strings used to build final rendering
local uncategorized_namespaces = {}; -- list of namespaces that we should not categorize
local uncategorized_subpages = {}; -- list of subpages that should not be categorized
--[[--------------------------< P A G E S C O P E I D E N T I F I E R S >----------------------------------
]]
local non_western_digits; -- boolean flag set true when data.digits.enable is true
local this_page = mw.title.getCurrentTitle();
local track = {}; -- Associative array to hold tracking categories
local ulx = {}; -- Associative array to hold template data
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Populates numbered arguments in a message string using an argument table.
]]
local function substitute (msg, args)
return args and mw.message.newRawMessage (msg, args):plain() or msg;
end
--[[--------------------------< tableLength >-----------------------
Given a 1-D table, return number of elements
]]
local function tableLength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display, no_link)
if nil == no_link then
if link and ('' ~= link) then
if display and ('' ~= display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
end
return display or ''; -- link not set so return the display text
else -- no_link
if display and ('' ~= display) then -- if there is display text
return display; -- return that
else
return link or ''; -- return the target article name or empty string
end
end
end
--[[--------------------------< createTracking >-----------------------
Return data in track[] ie. tracking categories
]]
local function createTracking()
if not excepted_pages[this_page.fullText] then -- namespace:title/fragment is allowed to be categorized (typically this module's / template's testcases page(s))
if uncategorized_namespaces[this_page.nsText] then
return ''; -- this page not to be categorized so return empty string
end
for _,v in ipairs (uncategorized_subpages) do -- cycle through page name patterns
if this_page.text:match (v) then -- test page name against each pattern
return ''; -- this subpage type not to be categorized so return empty string
end
end
end
local out = {};
if tableLength(track) > 0 then
for key, _ in pairs(track) do -- loop through table
table.insert (out, make_wikilink (key)); -- and convert category names to links
end
end
return table.concat (out); -- concat into one big string; empty string if table is empty
end
--[[--------------------------< inlineError >-----------------------
Critical error. Render output completely in red. Add to tracking category.
This function called as the last thing before abandoning this module
]]
local function inlineError (msg, args)
track[categories.error] = 1
return table.concat ({
'<span style="font-size:100%" class="error citation-comment">Biddut iti ', -- open the error message span
config.tname, -- insert the local language template name
' plantilia: ',
substitute (msg, args), -- insert the formatted error message
'.</span>', -- close the span
createTracking() -- add the category
})
end
--[[--------------------------< inlineRed >-----------------------
Render a text fragment in red, such as a warning as part of the final output.
Add tracking category.
]]
local function inlineRed(msg, trackmsg)
if trackmsg == "warning" then
track[categories.warning] = 1;
elseif trackmsg == "error" then
track[categories.error] = 1;
end
return '<span style="font-size:100%" class="error citation-comment">' .. msg .. '</span>'
end
--[[--------------------------< base62 >-----------------------
Convert base-62 to base-10
Credit: https://de.wikipedia.org/wiki/Modul:Expr
]]
local function base62( value )
local r = 1 -- default return value is input value is malformed
if value:match ('%W') then -- value must only be in the set [0-9a-zA-Z]
return; -- nil return when value contains extraneous characters
end
local n = #value -- number of characters in value
local k = 1
local c
r = 0
for i = n, 1, -1 do -- loop through all characters in value from ls digit to ms digit
c = value:byte( i, i )
if c >= 48 and c <= 57 then -- character is digit 0-9
c = c - 48
elseif c >= 65 and c <= 90 then -- character is ascii a-z
c = c - 55
else -- must be ascii A-Z
c = c - 61
end
r = r + c * k -- accumulate this base62 character's value
k = k * 62 -- bump for next
end -- for i
return r
end
--[[--------------------------< D E C O D E _ D A T E >--------------------------------------------------------
Given a date string, return it in iso format along with an indicator of the date's format. Except that month names
must be recognizable as legitimate month names with proper capitalization, and that the date string must match one
of the recognized date formats, no error checking is done here; return nil else
]]
local function decode_date (date_str)
local patterns = {
['dmy'] = {'^(%d%d?) +([^%s%d]+) +(%d%d%d%d)$', 'd', 'm', 'y'}, -- %a does not recognize unicode combining characters used by some languages
['mdy'] = {'^([^%s%d]+) (%d%d?), +(%d%d%d%d)$', 'm', 'd', 'y'},
['ymd'] = {'^(%d%d%d%d) +([^%s%d]+) (%d%d?)$', 'y', 'm', 'd'}, -- not mos compliant at en.wiki but may be acceptible at other wikis
};
local t = {};
if non_western_digits then -- this wiki uses non-western digits?
date_str = mw.ustring.gsub (date_str, '%d', digits); -- convert this wiki's non-western digits to western digits
end
if date_str:match ('^%d%d%d%d%-%d%d%-%d%d$') then -- already an iso format date, return western digits form
return date_str, 'iso';
end
for k, v in pairs (patterns) do
local c1, c2, c3 = mw.ustring.match (date_str, patterns[k][1]); -- c1 .. c3 are captured but we don't know what they hold
if c1 then -- set on match
t = { -- translate unspecified captures to y, m, and d
[patterns[k][2]] = c1, -- fill the table of captures with the captures
[patterns[k][3]] = c2, -- take index names from src_pattern table and assign sequential captures
[patterns[k][4]] = c3,
};
if month_num[t.m] then -- when month not already a number
t.m = month_num[t.m]; -- replace valid month name with a number
else
return nil, 'iso'; -- not a valid date form because month not valid
end
return mw.ustring.format ('%.4d-%.2d-%.2d', t.y, t.m, t.d), k; -- return date in iso format
end
end
return nil, 'iso'; -- date could not be decoded; return nil and default iso date
end
--[[--------------------------< makeDate >-----------------------
Given year, month, day numbers, (zero-padded or not) return a full date in df format
where df may be one of:
mdy, dmy, iso, ymd
on entry, year, month, day are presumed to be correct for the date that they represent; all are required
in this module, makeDate() is sometimes given an iso-format date in year:
makeDate (2018-09-20, nil, nil, df)
this works because table.concat() sees only one table member
]]
local function makeDate (year, month, day, df)
local format = {
['dmy'] = 'j F Y',
['mdy'] = 'F j, Y',
['ymd'] = 'Y F j',
['iso'] = 'Y-m-d',
};
local date = table.concat ({year, month, day}, '-'); -- assemble year-initial numeric-format date (zero padding not required here)
if non_western_digits then -- this wiki uses non-western digits?
date = mw.ustring.gsub (date, '%d', digits); -- convert this wiki's non-western digits to western digits
end
return mw.getContentLanguage():formatDate (format[df], date);
end
--[[--------------------------< I S _ V A L I D _ D A T E >----------------------------------------------------
Returns true if date is after 31 December 1899 (why is 1900 the min year? shouldn't the internet's date-of-birth
be min year?), not after today's date, and represents a valid date (29 February 2017 is not a valid date). Applies
Gregorian leapyear rules.
all arguments are required
]]
local function is_valid_date (year, month, day)
local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
local month_length;
local y, m, d;
local today = os.date ('*t'); -- fetch a table of current date parts
if not year or '' == year or not month or '' == month or not day or '' == day then
return false; -- something missing
end
y = tonumber (year);
m = tonumber (month);
d = tonumber (day);
if 1900 > y or today.year < y or 1 > m or 12 < m then -- year and month are within bounds TODO: 1900?
return false;
end
if (2==m) then -- if February
month_length = 28; -- then 28 days unless
if (0==(y%4) and (0~=(y%100) or 0==(y%400))) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
else
month_length=days_in_month[m];
end
if 1 > d or month_length < d then -- day is within bounds
return false;
end
-- here when date parts represent a valid date
return os.time({['year']=y, ['month']=m, ['day']=d, ['hour']=0}) <= os.time(); -- date at midnight must be less than or equal to current date/time
end
--[[--------------------------< decodeWebciteDate >-----------------------
Given a URI-path to Webcite (eg. /67xHmVFWP) return the encoded date in df format
returns date string in df format - webcite date is a unix timestamp encoded as bae62
or the string 'query'
]]
local function decodeWebciteDate(path, df)
local dt = {};
local decode;
dt = mw.text.split(path, "/")
-- valid URL formats that are not base62
-- http://www.webcitation.org/query?id=1138911916587475
-- http://www.webcitation.org/query?url=http..&date=2012-06-01+21:40:03
-- http://www.webcitation.org/1138911916587475
-- http://www.webcitation.org/cache/73e53dd1f16cf8c5da298418d2a6e452870cf50e
-- http://www.webcitation.org/getfile.php?fileid=1c46e791d68e89e12d0c2532cc3cf629b8bc8c8e
if dt[2]:find ('query', 1, true) or
dt[2]:find ('cache', 1, true) or
dt[2]:find ('getfile', 1, true) or
tonumber(dt[2]) then
return 'query';
end
decode = base62(dt[2]); -- base62 string -> exponential number
if not decode then
return nil; -- nil return when dt[2] contains characters not in %w
end
dt = os.date('*t', string.format("%d", decode):sub(1,10)) -- exponential number -> text -> first 10 characters (a unix timestamp) -> a table of date parts
decode = makeDate (dt.year, dt.month, dt.day, 'iso'); -- date comparisons are all done in iso format with western digits
if non_western_digits then -- this wiki uses non-western digits?
decode = mw.ustring.gsub (decode, '%d', digits); -- convert this wiki's non-western digits to western digits
end
return decode;
end
--[[--------------------------< decodeWaybackDate >-----------------------
Given a URI-path to Wayback (eg. /web/20160901010101/http://example.com )
or Library of Congress Web Archives (eg. /all/20160901010101/http://example.com)
or UK Government Web Archive (eg. /ukgwa/20160901010101/http://example.com or /tna/20160901010101/http://example.com)
return the formatted date eg. "September 1, 2016" in df format
Handle non-digits in snapshot ID such as "re_" and "-" and "*"
returns two values:
first value is one of these:
valid date string in df format - wayback date is valid (including the text string 'index' when date is '/*/')
empty string - wayback date is malformed (less than 8 digits, not a valid date)
nil - wayback date is '/save/' or otherwise not a number
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeWaybackDate(path, df)
local msg, snapdate;
snapdate = path:gsub ('^/web/', ''):gsub ('^/all/', ''):gsub ('^/ukgwa/', ''):gsub ('^/tna/', ''):gsub ('^/', ''); -- remove leading /web/, /all/, /ukgwa/, /tna/, or /
snapdate = snapdate:match ('^[^/]+'); -- get timestamp
if snapdate == "*" then -- eg. /web/*/http.., etc.
return 'index'; -- return indicator that this url has an index date
end
snapdate = snapdate:gsub ('%a%a_%d?$', ''):gsub ('%-', ''); -- from date, remove any trailing "re_", dashes
msg = '';
if snapdate:match ('%*$') then -- a trailing '*' causes calendar display at archive .org
snapdate = snapdate:gsub ('%*$', ''); -- remove so not part of length calc later
msg = inlineRed (err_warn_msgs.ts_cal, 'warning'); -- make a message
end
if not tonumber(snapdate) then
return nil, 'ts_nan'; -- return nil (fatal error flag) and message selector
end
local dlen = snapdate:len();
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate, msg; -- return date with message if any
else
return snapdate, msg .. inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message(s)
end
end
--[[--------------------------< decodeArchiveisDate >-----------------------
Given an Archive.is "long link" URI-path (e.g. /2016.08.28-144552/http://example.com)
return the date in df format (e.g. if df = dmy, return 28 August 2016)
Handles "." and "-" in snapshot date, so 2016.08.28-144552 is same as 20160828144552
returns two values:
first value is one of these:
valid date string in df format - archive.is date is valid (including the text string 'short link' when url is the short form)
empty string - wayback date is malformed (not a number, less than 8 digits, not a valid date)
nil - wayback date is '/save/'
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeArchiveisDate(path, df)
local snapdate
if path:match ('^/%w+$') then -- short form url path is '/' followed by some number of base 62 digits and nothing else
return "short link" -- e.g. http://archive.is/hD1qz
end
snapdate = mw.text.split (path, '/')[2]:gsub('[%.%-]', ''); -- get snapshot date, e.g. 2016.08.28-144552; remove periods and hyphens
local dlen = string.len(snapdate)
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate; -- return date
else
return snapdate, inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message
end
end
--[[--------------------------< serviceName >-----------------------
Given a domain extracted by mw.uri.new() (eg. web.archive.org) set tail string and service ID
]]
local function serviceName(host, no_link)
local tracking;
local index;
host = host:lower():gsub ('^web%.(.+)', '%1'):gsub ('^www%.(.+)', '%1'); -- lowercase, remove web. and www. subdomains
if services[host] then
index = host;
else
for k, _ in pairs (services) do
if host:find ('%f[%a]'..k:gsub ('([%.%-])', '%%%1')) then
index = k;
break;
end
end
end
if index then
local out = {''}; -- empty string in [1] so that concatenated result has leading single space
ulx.url1.service = services[index][4] or 'other';
tracking = services[index][5] or categories.other;
-- build tail string
if false == services[index][1] then -- select prefix
table.insert (out, prefixes.at);
elseif true == services[index][1] then
table.insert (out, prefixes.atthe);
else
table.insert (out, services[index][1]);
end
table.insert (out, make_wikilink (services[index][2], services[index][3], no_link)); -- add article wikilink
if services[index][6] then -- add tail postfix if it exists
table.insert (out, services[index][6]);
end
ulx.url1.tail = table.concat (out, ' '); -- put it all together; result has leading space character
else -- here when unknown archive
ulx.url1.service = 'other';
tracking = categories.unknown;
ulx.url1.tail = table.concat ({'', prefixes.at, host, inlineRed (err_warn_msgs.unknown_url, error)}, ' ');
end
track[tracking] = 1
end
--[[--------------------------< parseExtraArgs >-----------------------
Parse numbered arguments starting at 2, such as url2..url10, date2..date10, title2..title10
For example: {{webarchive |url=.. |url4=.. |url7=..}}
Three url arguments not in numeric sequence (1..4..7).
Function only processes arguments numbered 2 or greater (in this case 4 and 7)
It creates numeric sequenced table entries like:
urlx.url2.url = <argument value for url4>
urlx.url3.url = <argument value for url7>
Returns the number of URL arguments found numbered 2 or greater (in this case returns "2")
]]
local function parseExtraArgs(args)
local i, j, argurl, argurl2, argdate, argtitle
j = 2
for i = 2, config.maxurls do
argurl = "url" .. i
if args[argurl] then
argurl2 = "url" .. j
ulx[argurl2] = {}
ulx[argurl2]["url"] = args[argurl]
argdate = "date" .. i
if args[argdate] then
ulx[argurl2]["date"] = args[argdate]
else
ulx[argurl2]["date"] = inlineRed (err_warn_msgs.date_miss, 'warning');
end
argtitle = "title" .. i
if args[argtitle] then
ulx[argurl2]["title"] = args[argtitle]
else
ulx[argurl2]["title"] = nil
end
j = j + 1
end
end
if j == 2 then
return 0
else
return j - 2
end
end
--[[--------------------------< comma >-----------------------
Given a date string, return "," if it's MDY
]]
local function comma(date)
return (date and date:match ('%a+ +%d%d?(,) +%d%d%d%d')) or '';
end
--[[--------------------------< createRendering >-----------------------
Return a rendering of the data in ulx[][]
]]
local function createRendering()
local displayfield
local out = {};
local index_date, msg = ulx.url1.date:match ('(index)(.*)'); -- when ulx.url1.date extract 'index' text and message text (if there is a message)
ulx.url1.date = ulx.url1.date:gsub ('index.*', 'index'); -- remove message
if 'none' == ulx.url1.format then -- For {{wayback}}, {{webcite}}
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx.url1.url); -- add url
if ulx.url1.title then
table.insert (out, ' ') -- the required space
table.insert (out, ulx.url1.title) -- the title
table.insert (out, ']'); -- close extlink markup
table.insert (out, ulx.url1.tail); -- tail text
if ulx.url1.date then
table.insert (out, ' ('); -- open date text; TODO: why the html entity? replace with regular space?
table.insert (out, 'index' == ulx.url1.date and s_text.archive or s_text.archived); -- add text
table.insert (out, ' '); -- insert a space
table.insert (out, ulx.url1.date); -- add date
table.insert (out, ')'); -- close date text
end
else -- no title
if index_date then -- when url date is 'index'
table.insert (out, table.concat ({' ', s_text.Archive_index, ']'})); -- add the index link label
table.insert (out, msg or ''); -- add date mismatch message when url date is /*/ and |date= has valid date
else
table.insert (out, table.concat ({' ', s_text.Archived, '] '})); -- add link label for url has timestamp date (will include mismatch message if there is one)
end
if ulx.url1.date then
if 'index' ~= ulx.url1.date then
table.insert (out, ulx.url1.date); -- add date when data is not 'index'
end
table.insert (out, comma(ulx.url1.date)); -- add ',' if date format is mdy
table.insert (out, ulx.url1.tail); -- add tail text
else -- no date
table.insert (out, ulx.url1.tail); -- add tail text
end
end
if 0 < ulx.url1.extraurls then -- For multiple archive URLs
local tot = ulx.url1.extraurls + 1
table.insert (out, '.') -- terminate first url
table.insert (out, table.concat ({' ', s_text.addlarchives, ': '})); -- add header text
for i=2, tot do -- loop through the additionals
local index = table.concat ({'url', i}); -- make an index
displayfield = ulx[index]['title'] and 'title' or 'date'; -- choose display text
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx[index]['url']); -- add the url
table.insert (out, ' '); -- the required space
table.insert (out, ulx[index][displayfield]); -- add the label
table.insert (out, ']'); -- close extlink markup
table.insert (out, i==tot and '.' or ', '); -- add terminator
end
end
return table.concat (out); -- make a big string and done
else -- For {{cite archives}}
if 'addlarchives' == ulx.url1.format then -- Multiple archive services
table.insert (out, table.concat ({s_text.addlarchives, ': '})); -- add header text
else -- Multiple pages from the same archive
table.insert (out, table.concat ({s_text.addlpages, ' '})); -- add header text
table.insert (out, ulx.url1.date); -- add date to header text
table.insert (out, ': '); -- close header text
end
local tot = ulx.url1.extraurls + 1;
for i=1, tot do -- loop through the additionals
local index = table.concat ({'url', i}); -- make an index
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx[index]['url']); -- add url
table.insert (out, ' '); -- add required space
displayfield = ulx[index]['title'];
if 'addlarchives' == ulx.url1.format then
if not displayfield then
displayfield = ulx[index]['date']
end
else -- must be addlpages
if not displayfield then
displayfield = table.concat ({s_text.Page, ' ', i});
end
end
table.insert (out, displayfield); -- add title, date, page label text
table.insert (out, ']'); -- close extlink markup
table.insert (out, (i==tot and '.' or ', ')); -- add terminator
end
return table.concat (out); -- make a big string and done
end
end
--[[--------------------------< P A R A M E T E R _ N A M E _ X L A T E >--------------------------------------
for internaltionalization, translate local-language parameter names to their English equivalents
TODO: return error message if multiple aliases of the same canonical parameter name are found?
returns two tables:
new_args - holds canonical form parameters and their values either from translation or because the parameter was already in canonical form
origin - maps canonical-form parameter names to their untranslated (local language) form for error messaging in the local language
unrecognized parameters are ignored
]]
local function parameter_name_xlate (args, params, enum_params)
local name; -- holds modifiable name of the parameter name during evaluation
local enum; -- for enumerated parameters, holds the enumerator during evaluation
local found = false; -- flag used to break out of nested for loops
local new_args = {}; -- a table that holds canonical and translated parameter k/v pairs
local origin = {}; -- a table that maps original (local language) parameter names to their canonical name for local language error messaging
local unnamed_params; -- set true when unsupported positional parameters are detected
for k, v in pairs (args) do -- loop through all of the arguments in the args table
name = k; -- copy of original parameter name
if 'string' == type (k) then
if non_western_digits then -- true when non-western digits supported at this wiki
name = mw.ustring.gsub (name, '%d', digits); -- convert this wiki's non-western digits to western digits
end
enum = name:match ('%d+$'); -- get parameter enumerator if it exists; nil else
if not enum then -- no enumerator so looking for non-enumnerated parameters
-- TODO: insert shortcut here? if params[name] then name holds the canonical parameter name; no need to search further
for pname, aliases in pairs (params) do -- loop through each parameter the params table
for _, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
if name == alias then
new_args[pname] = v; -- create a new entry in the new_args table
origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
found = true; -- flag so that we can break out of these nested for loops
break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
end
end
if found then -- true when we found an alias that matched name
found = false; -- reset the flag
break; -- go do next args k/v pair
end
end
else -- enumerated parameters
name = name:gsub ('%d$', '#'); -- replace enumeration digits with place holder for table search
-- TODO: insert shortcut here? if num_params[name] then name holds the canonical parameter name; no need to search further
for pname, aliases in pairs (enum_params) do -- loop through each parameter the num_params table
for _, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
if name == alias then
pname = pname:gsub ('#$', enum); -- replace the '#' place holder with the actual enumerator
new_args[pname] = v; -- create a new entry in the new_args table
origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
found = true; -- flag so that we can break out of these nested for loops
break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
end
end
if found then -- true when we found an alias that matched name
found = false; -- reset the flag
break; -- go do next args k/v pair
end
end
end
else
unnamed_params = true; -- flag for unsupported positional parameters
end
end -- for k, v
return new_args, origin, unnamed_params;
end
--[[--------------------------< W E B A R C H I V E >----------------------------------------------------------
template entry point
]]
local function webarchive(frame)
local args = getArgs (frame);
local data = mw.loadData (table.concat ({ -- make a data module name; sandbox or live
'Modulo:Webarchive/data',
frame:getTitle():find('pagipadasan', 1, true) and '/pagipadasan' or '' -- this instance is ./sandbox then append /sandbox
}));
categories = data.categories; -- fill in the forward declarations
config = data.config;
if data.digits.enable then
digits = data.digits; -- for i18n; table of digits in the local wiki's language
non_western_digits = true; -- use_non_western_digits
end
err_warn_msgs = data.err_warn_msgs;
excepted_pages = data.excepted_pages;
month_num = data.month_num; -- for i18n; table of month names in the local wiki's language
prefixes = data.prefixes;
services = data.services;
s_text = data.s_text;
uncategorized_namespaces = data.uncategorized_namespaces;
uncategorized_subpages = data.uncategorized_subpages;
local origin = {}; -- holds a map of English to local language parameter names used in the current template; not currently used
local unnamed_params; -- boolean set to true when template call has unnamed parameters
args, origin, unnamed_params = parameter_name_xlate (args, data.params, data.enum_params); -- translate parameter names in args to English
local date, format, msg, udate, uri, url;
local ldf = 'iso'; -- when there is no |date= parameter, render url dates in iso format
if args.url and args.url1 then -- URL argument (first)
return inlineError (data.crit_err_msgs.conflicting, {origin.url, origin.url1});
end
url = args.url or args.url1;
if not url then
return inlineError (data.crit_err_msgs.empty);
end
-- these iabot bugs perportedly fixed; removing these causes lua script error
--[[ -- at Template:Webarchive/testcases/Production; resolve that before deleting these tests
if mw.ustring.find( url, "https://web.http", 1, true ) then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
track[categories.error] = 1;
return inlineError (data.crit_err_msgs.iabot1);
end
if url == "https://web.archive.org/http:/" then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
track[categories.error] = 1;
return inlineError (data.crit_err_msgs.iabot2);
end
]]
if not (url:lower():find ('^http') or url:find ('^//')) then
return inlineError (data.crit_err_msgs.invalid_url );
end
ulx.url1 = {}
ulx.url1.url = url
ulx.url1.extraurls = parseExtraArgs(args)
local good = false;
good, uri = pcall (mw.uri.new, ulx.url1.url); -- get a table of uri parts from this url; protected mode to prevent lua error when ulx.url1.url is malformed
if not good or nil == uri.host then -- abandon when ulx.url1.url is malformed
return inlineError (data.crit_err_msgs.invalid_url);
end
serviceName(uri.host, args.nolink)
if args.date and args.date1 then -- Date argument
return inlineError (data.crit_err_msgs.conflicting, {origin.date, origin.date1});
end
date = args.date or args.date1;
date = date and date:gsub (' +', ' '); -- replace multiple spaces with a single space
if date and config.verifydates then
if '*' == date then
date = 'index';
ldf = 'iso'; -- set to default format
elseif 'mdy' == date then
date = nil; -- if date extracted from URL,
ldf = 'mdy'; -- then |date=mdy overrides iso
elseif 'dmy' == date then
date = nil; -- if date extracted from URL,
ldf = 'dmy'; -- then |date=dmy overrides iso
elseif 'ymd' == date then
date = nil; -- if date extracted from URL,
ldf = 'ymd'; -- then |date=ymd overrides iso
else
date, ldf = decode_date (date); -- get an iso format date from date and get date's original format
end
end
if 'wayback' == ulx.url1.service or 'locwebarchives' == ulx.url1.service or 'ukgwa' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeWaybackDate (uri.path); -- get the url date in iso format and format of date in |date=; 'index' when wayback url date is *
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
else -- no |date=
udate, msg = decodeWaybackDate (uri.path);
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if '' == udate then
date = nil; -- unset
else
date = udate;
end
end
elseif 'webcite' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate = decodeWebciteDate (uri.path); -- get the url date in iso format
if 'query' ~= udate then -- skip if query
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'),
});
end
end
end
end
else
date = decodeWebciteDate( uri.path, "iso" )
if date == "query" then
date = nil; -- unset
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
elseif not date then -- invalid base62 string
date = inlineRed (err_warn_msgs.date1, 'error');
end
end
elseif 'archiveis' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeArchiveisDate (uri.path) -- get the url date in iso format
if 'short link' ~= udate then -- skip if short link
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
end
else -- no |date=
udate, msg = decodeArchiveisDate( uri.path, "iso" )
if udate == "short link" then
date = nil; -- unset
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
elseif '' == udate then
date = nil; -- unset
else
date = udate;
end
end
else -- some other service
if not date then
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
end
end
if 'index' == date then
ulx.url1.date = date .. (msg or ''); -- create index + message (if there is one)
elseif date then
ulx.url1.date = makeDate (date, nil, nil, ldf) .. (msg or ''); -- create a date in the wiki's local language + message (if there is one)
else
ulx.url1.date = msg;
end
format = args.format; -- Format argument
if not format then
format = "none"
else
for k, v in pairs (data.format_vals) do -- |format= accepts two specific values loop through a table of those values
local found; -- declare a nil flag
for _, p in ipairs (v) do -- loop through local language variants
if format == p then -- when |format= value matches
format = k; -- use name from table key
found = true; -- declare found so that we can break out of outer for loop
break; -- break out of inner for loop
end
end
if found then
break;
end
end
if format == "addlpages" then
if not ulx.url1.date then
format = "none"
end
elseif format == "addlarchives" then
format = "addlarchives"
else
format = "none"
end
end
ulx.url1.format = format
if args.title and args.title1 then -- Title argument
return inlineError (data.crit_err_msgs.conflicting, {origin.title, origin.title1});
end
ulx.url1.title = args.title or args.title1;
local rend = createRendering()
if not rend then
return inlineError (data.crit_err_msgs.unknown);
end
return rend .. ((unnamed_params and inlineRed (err_warn_msgs.unnamed_params, 'warning')) or '') .. createTracking();
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {webarchive = webarchive};
3qlm43ohd0y7ztv8wt9uo56m0wy1fhs
Modulo:Simbolo ti IPA/datos/pagipadasan
828
55640
392277
390306
2022-08-18T21:40:20Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1102576395|Module:IPA symbol/data/1102576395]]
Scribunto
text/plain
local data = {
sounds = {},
diacritics = {},
univPatterns = {
{
pat = "g", -- Latin Small Letter G
rep = "ɡ" -- Latin Small Letter Script G
},
{
pat = "ᵍ", -- Modifier Letter Small G
rep = "ᶢ" -- Modifier Letter Small Script G
},
{
pat = "l̴", -- 'l' + Combining Tilde Overlay
rep = "ɫ" -- Latin Small Letter L with Middle Tilde
},
{
pat = "ˁ", -- Modifier Letter Reversed Glottal Stop
rep = "ˤ" -- Modifier Letter Small Reversed Glottal Stop
},
{
pat = "’", -- Right Single Quotation Mark
rep = "ʼ" -- Modifier Letter Apostrophe
},
{
pat = "ȷ", -- Latin Small Letter Dotless J
rep = "j" -- Latin Small Letter J
},
{
pat = "ʇ", -- Latin Small Letter Turned T
rep = "ǀ" -- Latin Letter Dental Click
},
{
pat = "[!ʗ]", -- Exclamation Mark / Latin Letter Stretched C
rep = "ǃ" -- Latin Letter Retroflex Click
},
{
pat = "ǃǃ", -- Latin Letter Retroflex Click x 2
rep = "‼" -- Double Exclamation Mark
},
{
pat = "ʖ", -- Latin Letter Inverted Glottal Stop
rep = "ǁ" -- Latin Letter Lateral Click
},
},
keyPatterns = {
-- These do not affect the revese look for diacritics
{
pat = "[͜͡ːˑ◌]", -- Tie bars, length marks, dotted circle
rep = ""
},
{
pat = "ᵏ", -- Modifier Letter Small K
rep = "k" -- Latin Small Letter K
},
{
pat = "ᶢ", -- Modifier Letter Small Script G
rep = "ɡ" -- Latin Small Letter Script G
},
{
pat = "ᵑ", -- Modifier Letter Small Eng
rep = "ŋ" -- Latin Small Letter Eng
},
}
}
local rawData = {
sounds = {
-- PULMONIC CONSONANTS
-- Nasals
{
name = "Voiceless bilabial nasal",
symbols = { "m̥" },
},
{
name = "Voiced bilabial nasal",
symbols = { "m" },
audio = "Bilabial nasal.ogg"
},
{
name = "Voiced labiodental nasal",
symbols = { "ɱ" },
audio = "Labiodental nasal.ogg"
},
{
name = "Voiced linguolabial nasal",
symbols = { "n̼" },
audio = "Linguolabial nasal.ogg"
},
{
name = "Voiced dental nasal",
symbols = { "n̪" },
},
{
name = "Voiceless alveolar nasal",
symbols = { "n̥" },
},
{
name = "Voiced alveolar nasal",
symbols = { "n" },
audio = "Alveolar nasal.ogg"
},
{
name = "Voiced postalveolar nasal",
symbols = { "n̠" },
},
{
name = "Voiceless retroflex nasal",
symbols = { "ɳ̊", "ɳ̥" },
},
{
name = "Voiced retroflex nasal",
symbols = { "ɳ" },
audio = "Retroflex nasal.ogg"
},
{
name = "Voiceless alveolo-palatal nasal",
symbols = { "n̠̊ʲ", "ɲ̊˖", "ɲ̟̊", "ȵ̊" },
},
{
name = "Voiced alveolo-palatal nasal",
symbols = { "n̠ʲ", "ɲ˖", "ɲ̟", "ȵ" },
},
{
name = "Voiceless palatal nasal",
symbols = { "ɲ̊", "ɲ̥" },
},
{
name = "Voiced palatal nasal",
symbols = { "ɲ" },
audio = "Palatal nasal.ogg"
},
{
name = "Voiced post-palatal nasal",
symbols = { "ɲ˗", "ɲ̠", "ŋ˖", "ŋ̟" },
},
{
name = "Voiceless velar nasal",
symbols = { "ŋ̊", "ŋ̥" },
},
{
name = "Voiced velar nasal",
symbols = { "ŋ" },
audio = "Velar nasal.ogg"
},
{
name = "Voiced pre-uvular nasal",
symbols = { "ɴ̟", "ŋ˗", "ŋ̠" },
},
{
name = "Voiced uvular nasal",
symbols = { "ɴ" },
audio = "Uvular nasal.ogg"
},
-- Plosives
{
name = "Voiceless bilabial plosive",
symbols = { "p" },
audio = "Voiceless bilabial plosive.ogg"
},
{
name = "Voiced bilabial plosive",
symbols = { "b" },
audio = "Voiced bilabial plosive.ogg"
},
{
name = "Voiceless labiodental plosive",
symbols = { "p̪", "p͆" },
},
{
name = "Voiced labiodental plosive",
symbols = { "b̪" },
},
{
name = "Voiceless linguolabial plosive",
symbols = { "t̼" },
audio = "Voiceless linguolabial stop.ogg"
},
{
name = "Voiced linguolabial plosive",
symbols = { "d̼" },
audio = "Voiced linguolabial stop.ogg"
},
{
name = "Voiceless dental plosive",
symbols = { "t̪" },
audio = "Voiceless dental stop.ogg"
},
{
name = "Voiced dental plosive",
symbols = { "d̪" },
audio = "Voiced dental stop.ogg"
},
{
name = "Voiceless alveolar plosive",
symbols = { "t" },
audio = "Voiceless alveolar plosive.ogg"
},
{
name = "Voiced alveolar plosive",
symbols = { "d" },
audio = "Voiced alveolar plosive.ogg"
},
{
name = "Voiceless postalveolar plosive",
symbols = { "t̠" },
},
{
name = "Voiced postalveolar plosive",
symbols = { "d̠" },
},
{
name = "Voiceless retroflex plosive",
symbols = { "ʈ" },
audio = "Voiceless retroflex stop.oga"
},
{
name = "Voiced retroflex plosive",
symbols = { "ɖ" },
audio = "Voiced retroflex stop.oga"
},
{
name = "Voiceless alveolo-palatal plosive",
symbols = { "t̠ʲ", "c̟", "ȶ" },
},
{
name = "Voiced alveolo-palatal plosive",
symbols = { "d̠ʲ", "ɟ˖", "ɟ̟", "ȡ" },
},
{
name = "Voiceless palatal plosive",
symbols = { "c" },
audio = "Voiceless palatal plosive.ogg"
},
{
name = "Voiced palatal plosive",
symbols = { "ɟ" },
audio = "Voiced palatal plosive.ogg"
},
{
name = "Voiceless post-palatal plosive",
symbols = { "c̠", "k̟" },
},
{
name = "Voiced post-palatal plosive",
symbols = { "ɟ˗", "ɟ̠", "ɡ˖", "ɡ̟" },
},
{
name = "Voiceless velar plosive",
symbols = { "k" },
audio = "Voiceless velar plosive.ogg"
},
{
name = "Voiced velar plosive",
symbols = { "ɡ" },
audio = "Voiced velar plosive 02.ogg"
},
{
name = "Voiceless pre-uvular plosive",
symbols = { "q˖", "q̟", "k̠" },
},
{
name = "Voiced pre-uvular plosive",
symbols = { "ɢ̟", "ɡ˗", "ɡ̠" },
},
{
name = "Voiceless uvular plosive",
symbols = { "q" },
audio = "Voiceless uvular plosive.ogg"
},
{
name = "Voiced uvular plosive",
symbols = { "ɢ" },
audio = "Voiced uvular stop.oga"
},
{
name = "Epiglottal plosive",
symbols = { "ʡ" },
audio = "Epiglottal stop.ogg"
},
{
name = "Glottal stop",
symbols = { "ʔ" },
audio = "Glottal stop.ogg"
},
-- Affricates
{
name = "Voiceless bilabial affricate",
symbols = { "pɸ" },
audio = "Voiceless bilabial affricate.ogg"
},
{
name = "Voiced bilabial affricate",
symbols = { "bβ" },
},
{
name = "Voiceless labiodental affricate",
symbols = { "p̪f", "p͆f", "pf" },
audio = "Voiceless labiodental affricate.ogg"
},
{
name = "Voiced labiodental affricate",
symbols = { "b̪v", "bv" },
audio = "Voiced labiodental affricate.ogg"
},
{
name = "Voiceless dental affricate",
symbols = { "t̪s̪", "ts̪", "t̟s̟", "ts̟" },
audio = "Voiceless dental sibilant affricate.oga"
},
{
name = "Voiced dental affricate",
symbols = { "d̪z̪", "dz̪", "d̟z̟", "dz̟" },
audio = "Voiced dental sibilant affricate.oga"
},
{
name = "Voiceless dental non-sibilant affricate",
symbols = { "t̪θ", "t̟θ", "tθ" },
audio = "Voiceless dental non-sibilant affricate.oga"
},
{
name = "Voiced dental non-sibilant affricate",
symbols = { "d̪ð", "d̟ð", "dð" },
audio = "Voiced dental non-sibilant affricate.oga"
},
{
name = "Voiceless alveolar affricate",
symbols = { "ts", "ʦ" },
audio = "Voiceless alveolar sibilant affricate.oga"
},
{
name = "Voiced alveolar affricate",
symbols = { "dz", "ʣ" },
audio = "Voiced alveolar sibilant affricate.oga"
},
{
name = "Voiceless apico-alveolar affricate",
symbols = { "t̺s̺", "ts̺", "t̠s̠", "ts̠" },
},
{
name = "Voiced apico-alveolar affricate",
symbols = { "d̺z̺", "dz̺", "d̠z̠", "dz̠" },
},
{
name = "Voiceless alveolar non-sibilant affricate",
symbols = { "tɹ̝̊", "tɹ̥", "tθ̠", "tθ͇" },
},
{
name = "Voiced alveolar non-sibilant affricate",
symbols = { "dɹ̝", "dɹ", "dð̠", "dð͇" },
},
{
name = "Voiceless postalveolar affricate",
symbols = { "t̠ʃ", "tʃ", "ʧ" },
audio = "Voiceless palato-alveolar affricate.ogg"
},
{
name = "Voiced postalveolar affricate",
symbols = { "d̠ʒ", "dʒ", "ʤ" },
audio = "Voiced palato-alveolar affricate.ogg"
},
{
name = "Voiceless postalveolar non-sibilant affricate",
symbols = { "t̠ɹ̠̊˔", "tɹ̠̊˔", "tɹ̝̊˗", "t̠ɹ̝̊˗", "t̠ɹ̠̊", "tɹ̠̊" },
audio = "Voiceless postalveolar non-sibilant affricate.ogg"
},
{
name = "Voiced postalveolar non-sibilant affricate",
symbols = { "d̠ɹ̠˔", "dɹ̠˔", "dɹ̝˗", "d̠ɹ̝˗", "d̠ɹ̠", "dɹ̠" },
audio = "Voiced postalveolar non-sibilant affricate.ogg"
},
{
name = "Voiceless retroflex affricate",
symbols = { "ʈʂ", "tʂ" },
audio = "Voiceless retroflex affricate.ogg"
},
{
name = "Voiced retroflex affricate",
symbols = { "ɖʐ", "dʐ" },
audio = "Voiced retroflex affricate.ogg"
},
{
name = "Voiceless alveolo-palatal affricate",
symbols = { "tɕ", "cɕ", "ʨ" },
audio = "Voiceless alveolo-palatal affricate.ogg"
},
{
name = "Voiced alveolo-palatal affricate",
symbols = { "dʑ", "ɟʑ", "ʥ" },
audio = "Voiced alveolo-palatal affricate.ogg"
},
{
name = "Voiceless palatal affricate",
symbols = { "cç" },
audio = "Voiceless palatal affricate.ogg"
},
{
name = "Voiced palatal affricate",
symbols = { "ɟʝ" },
audio = "Voiced palatal affricate.ogg"
},
{
name = "Voiceless post-palatal affricate",
symbols = { "c̠ç˗", "cç˗", "c̠ç̠", "cç̠", "k̟x̟", "kx̟" },
},
{
name = "Voiced post-palatal affricate",
symbols = { "ɟ˗ʝ˗", "ɟʝ˗", "ɟ̠ʝ̠", "ɟʝ̠", "ɡ˖ɣ˖", "ɡɣ˖", "ɡ̟ɣ̟", "ɡɣ̟" },
},
{
name = "Voiceless velar affricate",
symbols = { "kx" },
audio = "Voiceless velar affricate.ogg"
},
{
name = "Voiced velar affricate",
symbols = { "ɡɣ" },
audio = "Voiced velar affricate.ogg"
},
{
name = "Voiceless pre-uvular affricate",
symbols = { "q˖χ˖", "qχ˖", "q̟χ̟", "qχ̟", "k̠x̠", "kx̠" },
},
{
name = "Voiceless uvular affricate",
symbols = { "qχ" },
audio = "Voiceless uvular affricate.ogg"
},
{
name = "Voiced uvular affricate",
symbols = { "ɢʁ" },
audio = "Voiced uvular affricate.ogg"
},
{
name = "Voiceless pharyngeal affricate",
symbols = { "ʡħ" },
},
{
name = "Voiceless epiglottal affricate",
symbols = { "ʡʜ" },
audio = "Voiceless epiglottal affricate.ogg"
},
{
name = "Voiced epiglottal affricate",
symbols = { "ʡʢ" },
audio = "Voiced epiglottal affricate.ogg"
},
{
name = "Voiceless glottal affricate",
symbols = { "ʔh" },
audio = "Voiceless glottal affricate.ogg"
},
-- Fricatives
{
name = "Voiceless bilabial fricative",
symbols = { "ɸ", "β̞̊", "β̥˕" },
audio = "Voiceless bilabial fricative.ogg"
},
{
name = "Voiced bilabial fricative",
symbols = { "β" },
audio = "Voiced bilabial fricative.ogg"
},
{
name = "Voiceless labiodental fricative",
symbols = { "f", "ʋ̥", "f̞" },
audio = "Voiceless labio-dental fricative.ogg"
},
{
name = "Voiced labiodental fricative",
symbols = { "v" },
audio = "Voiced labio-dental fricative.ogg"
},
{
name = "Voiceless linguolabial fricative",
symbols = { "θ̼" },
audio = "Voiceless linguolabial fricative.ogg"
},
{
name = "Voiced linguolabial fricative",
symbols = { "ð̼" },
},
{
name = "Voiceless dental fricative",
symbols = { "θ", "θ̞" },
audio = "Voiceless dental fricative.ogg"
},
{
name = "Voiced dental fricative",
symbols = { "ð" },
audio = "Voiced dental fricative.ogg"
},
{
name = "Voiceless dental sibilant fricative",
symbols = { "s̪" },
},
{
name = "Voiced dental sibilant fricative",
symbols = { "z̪" },
},
{
name = "Voiceless denti-alveolar fricative",
symbols = { "s̻̪", "s̪̻", "s̻͆", "s̟" },
},
{
name = "Voiceless alveolar fricative",
symbols = { "s" },
audio = "Voiceless alveolar sibilant.ogg"
},
{
name = "Voiced alveolar fricative",
symbols = { "z" },
audio = "Voiced alveolar sibilant.ogg"
},
{
name = "Voiceless apico-alveolar fricative",
symbols = { "s̺" },
},
{
name = "Voiced apico-alveolar fricative",
symbols = { "z̺" },
},
{
name = "Voiceless alveolar retracted fricative",
symbols = { "s̠" },
audio = "Voiceless alveolar retracted sibilant.ogg"
},
{
name = "Voiced alveolar retracted fricative",
symbols = { "z̠" },
},
{
name = "Voiceless alveolar non-sibilant fricative",
symbols = { "θ̠", "θ͇", "ɹ̝̊", "ɹ̥" },
audio = "Voiceless alveolar non-sibilant fricative.ogg"
},
{
name = "Voiced alveolar non-sibilant fricative",
symbols = { "ð̠", "ð͇", "ɹ̝" },
audio = "Voiced alveolar non-sibilant fricative.ogg"
},
{
name = "Voiceless alveolar tapped fricative",
symbols = { "ɾ̞̊" },
},
{
name = "Voiced alveolar tapped fricative",
symbols = { "ɾ̞" },
audio = "Voiced alveolar tapped fricative.ogg"
},
{
name = "Voiceless postalveolar fricative",
symbols = { "ʃ" },
audio = "Voiceless palato-alveolar sibilant.ogg"
},
{
name = "Voiced postalveolar fricative",
symbols = { "ʒ" },
audio = "Voiced palato-alveolar sibilant.ogg"
},
{
name = "Voiceless postalveolar non-sibilant fricative",
symbols = { "ɹ̠̊˔", "ɹ̝̊˗" },
audio = "Voiceless postalveolar non-sibilant fricative.ogg"
},
{
name = "Voiced postalveolar non-sibilant fricative",
symbols = { "ɹ̠˔", "ɹ̝˗" },
audio = "Voiced postalveolar non-sibilant fricative.ogg"
},
{
name = "Voiceless retroflex fricative",
symbols = { "ʂ" },
audio = "Voiceless retroflex sibilant.ogg"
},
{
name = "Voiced retroflex fricative",
symbols = { "ʐ" },
audio = "Voiced retroflex sibilant.ogg"
},
{
name = "Voiced retroflex non-sibilant fricative",
symbols = { "ɻ̝", "ɻ˔", "ɻ̊" },
},
{
name = "Voiceless alveolo-palatal fricative",
symbols = { "ɕ" },
audio = "Voiceless alveolo-palatal sibilant.ogg"
},
{
name = "Voiced alveolo-palatal fricative",
symbols = { "ʑ" },
audio = "Voiced alveolo-palatal sibilant.ogg"
},
{
name = "Voiceless palatal fricative",
symbols = { "ç" },
audio = "Voiceless palatal fricative.ogg"
},
{
name = "Voiced palatal fricative",
symbols = { "ʝ", "j̊" },
audio = "Voiced palatal fricative.ogg"
},
{
name = "Voiceless post-palatal fricative",
symbols = { "ç˗", "ç̠", "x̟" },
},
{
name = "Voiced post-palatal fricative",
symbols = { "ʝ˗", "ʝ̠", "ɣ˖", "ɣ̟" },
},
{
name = "Voiceless velar fricative",
symbols = { "x", "ɰ̊", "x̞", "ɣ̊˕", "ɣ̞̊" },
audio = "Voiceless velar fricative.ogg"
},
{
name = "Voiced velar fricative",
symbols = { "ɣ" },
audio = "Voiced velar fricative.ogg"
},
{
name = "Voiceless pre-uvular fricative",
symbols = { "χ˖", "χ̟", "x̠" },
},
{
name = "Voiced pre-uvular fricative",
symbols = { "ʁ̟", "ɣ˗", "ɣ̠" },
},
{
name = "Voiceless uvular fricative",
symbols = { "χ" },
audio = "Voiceless uvular fricative.ogg"
},
{
name = "Voiced uvular fricative",
symbols = { "ʁ" },
audio = "Voiced uvular fricative.ogg"
},
{
name = "Voiceless pharyngeal fricative",
symbols = { "ħ" },
audio = "Voiceless pharyngeal fricative.ogg"
},
{
name = "Voiced pharyngeal fricative",
symbols = { "ʕ" },
audio = "Voiced pharyngeal fricative.ogg"
},
{
name = "Voiceless glottal fricative",
symbols = { "h" },
audio = "Voiceless glottal fricative.ogg"
},
{
name = "Voiced glottal fricative",
symbols = { "ɦ" },
audio = "Voiced glottal fricative.ogg"
},
{
name = "Voiceless bidental fricative",
symbols = { "h̪͆" },
},
-- Approximants
{
name = "Voiced bilabial approximant",
symbols = { "β̞" },
audio = "Bilabial approximant.ogg"
},
{
name = "Voiced labiodental approximant",
symbols = { "ʋ" },
audio = "Labiodental approximant.ogg"
},
{
name = "Voiced dental approximant",
symbols = { "ð̞" },
audio = "Voiced dental approximant.ogg"
},
{
name = "Voiced alveolar approximant",
symbols = { "ɹ" },
audio = "Alveolar approximant.ogg"
},
{
name = "Voiced postalveolar approximant",
symbols = { "ɹ̠" },
audio = "Postalveolar approximant.ogg"
},
{
name = "Voiced retroflex approximant",
symbols = { "ɻ" },
audio = "Retroflex Approximant2.oga"
},
{
name = "Voiced palatal approximant",
symbols = { "j", "ʝ˕", "ʝ̞" },
audio = "Palatal approximant.ogg"
},
{
name = "Voiced post-palatal approximant",
symbols = { "j˗", "j̠", "ɰ̟", "ɰ˖", "ʝ˕˗", "ʝ˗˕", "ʝ̞˗", "ɣ˕˖", "ɣ˖˕", "ɣ̞˖" },
audio = "Post-palatal approximant.ogg"
},
{
name = "Voiced velar approximant",
symbols = { "ɰ", "ɣ˕", "ɣ̞" },
audio = "Voiced velar approximant.ogg"
},
{
name = "Voiced uvular approximant",
symbols = { "ʁ̞" },
audio = "Voiced Uvular Approximant.ogg"
},
{
name = "Voiced pharyngeal approximant",
symbols = { "ʕ̞" },
},
{
name = "Voiced epiglottal approximant",
symbols = { "ʢ̞" },
},
{
name = "Creaky-voiced glottal approximant",
symbols = { "ʔ̞", "ʔ̰" },
},
-- Taps/flaps
{
name = "Voiced bilabial flap",
symbols = { "ⱱ̟", "b̆" },
},
{
name = "Voiced labiodental flap",
symbols = { "ⱱ" },
audio = "Labiodental flap.ogg"
},
{
name = "Voiced linguolabial tap",
symbols = { "ɾ̼" },
},
{
name = "Voiced dental tap or flap",
symbols = { "ɾ̪" },
article = "Dental tap",
},
{
name = "Voiceless alveolar tap or flap",
symbols = { "ɾ̥" },
article = "Voiceless alveolar tap",
},
{
name = "Voiced alveolar tap or flap",
symbols = { "ɾ" },
article = "Voiced dental and alveolar taps and flaps",
audio = "Alveolar tap.ogg"
},
{
name = "Voiced postalveolar flap",
symbols = { "ɾ̠" },
},
{
name = "Voiced alveolar nasal tap or flap",
symbols = { "ɾ̃", "n̆" },
article = "Alveolar nasal tap",
},
{
name = "Voiceless retroflex flap",
symbols = { "ɽ̊" },
},
{
name = "Voiced retroflex flap",
symbols = { "ɽ" },
audio = "Retroflex flap.ogg"
},
{
name = "Voiced velar tap",
symbols = { "ɡ̆" },
},
{
name = "Voiced uvular tap or flap",
symbols = { "ɢ̆", "ʀ̆" },
article = "Voiced uvular tap and flap",
},
{
name = "Voiced epiglottal tap",
symbols = { "ʡ̆", "ʢ̆" },
audio = "Epiglottal flap.oga"
},
-- Trills
{
name = "Voiceless bilabial trill",
symbols = { "ʙ̥" },
audio = "Voiceless bilabial trill with aspiration.ogg"
},
{
name = "Voiced bilabial trill",
symbols = { "ʙ" },
audio = "Bilabial trill.ogg"
},
{
name = "Voiced linguolabial trill",
symbols = { "r̼" },
audio = "Linguolabial trill.ogg"
},
{
name = "Voiced dental trill",
symbols = { "r̪" },
},
{
name = "Voiceless alveolar trill",
symbols = { "r̥" },
audio = "Voiceless alveolar trill.ogg"
},
{
name = "Voiced alveolar trill",
symbols = { "r" },
audio = "Alveolar trill.ogg"
},
{
name = "Voiceless alveolar fricative trill",
symbols = { "r̝̊" },
},
{
name = "Voiced alveolar fricative trill",
symbols = { "r̝" },
audio = "Raised alveolar non-sonorant trill.ogg"
},
{
name = "Voiced postalveolar trill",
symbols = { "r̠" },
audio = "Voiced postalveolar trill.ogg"
},
{
name = "Voiceless retroflex trill",
symbols = { "ɽ̊r̥", "ɽr̥" },
},
{
name = "Voiced retroflex trill",
symbols = { "ɽr" },
audio = "Voiced retroflex trill.ogg"
},
{
name = "Voiceless pre-uvular fricative trill",
symbols = { "ʀ̝̊˖", "ʀ̟̊˔" },
},
{
name = "Voiced pre-uvular fricative trill",
symbols = { "ʀ̝˖", "ʀ̟˔" },
},
{
name = "Voiceless uvular trill",
symbols = { "ʀ̥" },
audio = "Voiceless uvular trill.ogg"
},
{
name = "Voiced uvular trill",
symbols = { "ʀ" },
audio = "Uvular trill.ogg"
},
{
name = "Voiceless uvular fricative trill",
symbols = { "ʀ̝̊" },
},
{
name = "Voiced uvular fricative trill",
symbols = { "ʀ̝" },
},
{
name = "Voiceless epiglottal trill",
symbols = { "ʜ" },
audio = "Voiceless epiglottal trill.ogg"
},
{
name = "Voiced epiglottal trill",
symbols = { "ʢ" },
audio = "Voiced epiglottal trill 2.ogg"
},
-- Lateral affricates
{
name = "Voiceless alveolar lateral affricate",
symbols = { "tɬ", "ƛ" },
audio = "Voiceless alveolar lateral affricate.ogg"
},
{
name = "Voiced alveolar lateral affricate",
symbols = { "dɮ" },
audio = "Voiced alveolar lateral affricate.ogg"
},
{
name = "Voiceless retroflex lateral affricate",
symbols = { "ʈɭ̊˔","ʈɭ̊", "tꞎ", "ʈꞎ" },
},
{
name = "Voiced retroflex lateral affricate",
symbols = { "ɖɭ˔","ɖɭ", "d𝼅", "ɖ𝼅" },
},
{
name = "Voiceless palatal lateral affricate",
symbols = { "cʎ̝̊", "cʎ̥", "c𝼆", "t𝼆" },
audio = "Voiceless palatal lateral affricate.ogg"
},
{
name = "Voiced palatal lateral affricate",
symbols = { "ɟʎ̝", "ɟʎ", "ɟ𝼆̬", "d𝼆̬" },
},
{
name = "Voiceless velar lateral affricate",
symbols = { "kʟ̝̊", "kʟ̥", "k𝼄" },
audio = "Voiceless velar lateral affricate.ogg"
},
{
name = "Voiced velar lateral affricate",
symbols = { "ɡʟ̝", "ɡʟ", "ɡ𝼄̬" },
audio = "Voiced velar lateral affricate.ogg"
},
-- Lateral fricatives
{
name = "Voiceless dental lateral fricative",
symbols = { "ɬ̪" },
},
{
name = "Voiced dental lateral fricative",
symbols = { "ɮ̪", "ɮ͆" },
},
{
name = "Voiceless alveolar lateral fricative",
symbols = { "ɬ", "l̥" },
audio = "Voiceless alveolar lateral fricative.ogg"
},
{
name = "Voiced alveolar lateral fricative",
symbols = { "ɮ" },
audio = "Voiced alveolar lateral fricative.ogg"
},
{
name = "Voiceless retroflex lateral fricative",
symbols = { "ɭ̊˔", "ꞎ", "ɭ̊" },
audio = "Voiceless retroflex lateral fricative.ogg"
},
{
name = "Voiced retroflex lateral fricative",
symbols = { "ɭ˔", "𝼅" },
},
{
name = "Voiceless alveolo-palatal lateral fricative",
symbols = { "ɬ̠ʲ", "ʎ̝̊˖", "ȴ̊˔", "l̠̊ʲ", "ʎ̟̊", "ȴ̊" },
},
{
name = "Voiceless palatal lateral fricative",
symbols = { "ʎ̝̊", "ʎ̥", "𝼆" },
audio = "Voiceless palatal lateral fricative.ogg"
},
{
name = "Voiced palatal lateral fricative",
symbols = { "ʎ̝", "𝼆̬" },
},
{
name = "Voiceless velar lateral fricative",
symbols = { "ʟ̝̊", "ʟ̥", "𝼄" },
audio = "Voiceless velar lateral fricative.ogg"
},
{
name = "Voiced velar lateral fricative",
symbols = { "ʟ̝", "𝼄̬" },
audio = "Voiced velar lateral fricative.ogg"
},
-- Lateral approximants
{
name = "Voiced dental lateral approximant",
symbols = { "l̪" },
audio = "Voiced dental lateral approximant.ogg"
},
{
name = "Voiced alveolar lateral approximant",
symbols = { "l" },
audio = "Alveolar lateral approximant.ogg"
},
{
name = "Voiced postalveolar lateral approximant",
symbols = { "l̠" },
audio = "Voiced postalveolar lateral approximant.ogg"
},
{
name = "Voiced retroflex lateral approximant",
symbols = { "ɭ" },
audio = "Retroflex lateral approximant.ogg"
},
{
name = "Voiced alveolo-palatal lateral approximant",
symbols = { "l̠ʲ", "ʎ̟", "ȴ" },
},
{
name = "Voiced palatal lateral approximant",
symbols = { "ʎ" },
audio = "Palatal lateral approximant.ogg"
},
{
name = "Voiced velar lateral approximant",
symbols = { "ʟ" },
audio = "Velar lateral approximant.ogg"
},
{
name = "Voiced uvular lateral approximant",
symbols = { "ʟ̠" },
audio = "Uvular lateral approximant.ogg"
},
-- Lateral taps/flaps
{
name = "Voiceless alveolar lateral flap",
symbols = { "ɺ̥" },
},
{
name = "Voiced alveolar lateral flap",
symbols = { "ɺ" },
},
{
name = "Voiceless retroflex lateral flap",
symbols = { "ɭ̥̆", "𝼈̥" },
},
{
name = "Voiced retroflex lateral flap",
symbols = { "ɭ̆", "𝼈" },
},
{
name = "Voiced palatal lateral flap",
symbols = { "ʎ̆" },
},
{
name = "Voiced velar lateral tap",
symbols = { "ʟ̆" },
},
-- NON-PULMONIC CONSONANTS
-- Ejective stops
{
name = "Bilabial ejective stop",
symbols = { "pʼ" },
audio = "Bilabial ejective plosive.ogg"
},
{
name = "Dental ejective stop",
symbols = { "t̪ʼ" },
},
{
name = "Alveolar ejective stop",
symbols = { "tʼ" },
audio = "Alveolar ejective plosive.ogg"
},
{
name = "Retroflex ejective stop",
symbols = { "ʈʼ" },
audio = "Retroflex ejective.ogg"
},
{
name = "Palatal ejective stop",
symbols = { "cʼ" },
audio = "Palatal ejective.ogg"
},
{
name = "Velar ejective stop",
symbols = { "kʼ" },
audio = "Velar ejective plosive.ogg"
},
{
name = "Uvular ejective stop",
symbols = { "qʼ" },
audio = "Uvular ejective plosive.ogg"
},
{
name = "Epiglottal ejective",
symbols = { "ʡʼ" },
audio = "Epiglottal ejective.ogg"
},
-- Ejective affricates
{
name = "Dental ejective affricate",
symbols = { "t̪θʼ", "t̟θʼ", "tθʼ" },
audio = "Dental ejective affricate.ogg"
},
{
name = "Alveolar ejective affricate",
symbols = { "tsʼ" },
audio = "Alveolar ejective affricate.ogg"
},
{
name = "Palato-alveolar ejective affricate",
symbols = { "t̠ʃʼ", "tʃʼ" },
audio = "Palato-alveolar ejective affricate.ogg"
},
{
name = "Retroflex ejective affricate",
symbols = { "ʈʂʼ", "tʂʼ" },
audio = "Retroflex ejective affricate.ogg"
},
{
name = "Alveolo-palatal ejective affricate",
symbols = { "t̠ɕʼ", "tɕʼ", "cɕʼ" },
},
{
name = "Palatal ejective affricate",
symbols = { "cçʼ" },
audio = "Palatal ejective affricate.ogg"
},
{
name = "Velar ejective affricate",
symbols = { "kxʼ" },
audio = "Velar ejective affricate.ogg"
},
{
name = "Uvular ejective affricate",
symbols = { "qχʼ" },
audio = "Uvular ejective affricate.ogg"
},
-- Ejective fricatives
{
name = "Bilabial ejective fricative",
symbols = { "ɸʼ" },
},
{
name = "Labiodental ejective fricative",
symbols = { "fʼ" },
audio = "Labiodental ejective fricative.ogg"
},
{
name = "Dental ejective fricative",
symbols = { "θʼ" },
audio = "Dental ejective fricative.ogg"
},
{
name = "Alveolar ejective fricative",
symbols = { "sʼ" },
audio = "Alveolar ejective fricative.ogg"
},
{
name = "Palato-alveolar ejective fricative",
symbols = { "ʃʼ" },
audio = "Palato-alveolar ejective fricative.ogg"
},
{
name = "Retroflex ejective fricative",
symbols = { "ʂʼ" },
audio = "Retroflex ejective fricative.ogg"
},
{
name = "Alveolo-palatal ejective fricative",
symbols = { "ɕʼ" },
audio = "Alveolo-palatal ejective fricative.ogg"
},
{
name = "Palatal ejective fricative",
symbols = { "çʼ" },
audio = "Palatal ejective fricative.ogg"
},
{
name = "Velar ejective fricative",
symbols = { "xʼ" },
audio = "Velar ejective fricative.ogg"
},
{
name = "Uvular ejective fricative",
symbols = { "χʼ" },
audio = "Uvular ejective fricative.ogg"
},
-- Lateral ejective affricates
{
name = "Alveolar lateral ejective affricate",
symbols = { "tɬʼ", "ƛʼ" },
audio = "Alveolar lateral ejective affricate.ogg"
},
{
name = "Palatal lateral ejective affricate",
symbols = { "cʎ̝̊ʼ", "cʎ̥ʼ" },
audio = "Palatal lateral ejective affricate.ogg"
},
{
name = "Velar lateral ejective affricate",
symbols = { "kʟ̝̊ʼ", "kʟ̥ʼ" },
audio = "Velar lateral ejective affricate.ogg"
},
-- Lateral ejective fricatives
{
name = "Alveolar lateral ejective fricative",
symbols = { "ɬʼ" },
audio = "Alveolar lateral ejective fricative.ogg"
},
-- Tenuis clicks
{
name = "Tenuis bilabial click",
symbols = { "ʘ", "kʘ" },
audio = "Clic bilabial sourd.ogg"
},
{
name = "Tenuis dental click",
symbols = { "ǀ", "kǀ" },
audio = "Dental click.ogg"
},
{
name = "Tenuis alveolar click",
symbols = { "ǃ", "kǃ" },
audio = "Postalveolar click.ogg"
},
{
name = "Tenuis palatal click",
symbols = { "ǂ", "kǂ" },
audio = "Palatoalveolar click.ogg"
},
{
name = "Back-released velar click",
symbols = { "ʞ" },
},
-- Voiced clicks
{
name = "Voiced bilabial click",
symbols = { "ʘ̬", "ɡʘ" },
},
{
name = "Voiced dental click",
symbols = { "ǀ̬", "ɡǀ" },
},
{
name = "Voiced alveolar click",
symbols = { "ǃ̬", "ɡǃ" },
},
{
name = "Tenuis retroflex click",
symbols = { "‼", "𝼊" },
},
{
name = "Voiced palatal click",
symbols = { "ǂ̬", "ɡǂ" },
},
{
name = "Voiced retroflex click",
symbols = { "‼̬", "ɡ‼", "ɡ𝼊" },
},
-- Nasal clicks
{
name = "Bilabial nasal click",
symbols = { "ʘ̃", "ŋʘ" },
audio = "Bilabial nasal click.ogg"
},
{
name = "Dental nasal click",
symbols = { "ǀ̃", "ŋǀ" },
},
{
name = "Alveolar nasal click",
symbols = { "ǃ̃", "ŋǃ" },
audio = "Intervocalic nasal alveolar clicks.ogg"
},
{
name = "Palatal nasal click",
symbols = { "ǂ̃", "ŋǂ" },
},
{
name = "Retroflex nasal click",
symbols = { "‼̃", "ŋ‼", "ŋ𝼊" },
},
-- Lateral clicks
{
name = "Tenuis alveolar lateral click",
symbols = { "ǁ", "kǁ" },
audio = "Alveolar lateral click.ogg"
},
{
name = "Voiced alveolar lateral click",
symbols = { "ǁ̬", "ɡǁ" },
},
-- Lateral nasal clicks
{
name = "Alveolar lateral nasal click",
symbols = { "ǁ̃", "ŋǁ" },
},
-- Glottalized clicks
{
name = "Glottalized bilabial nasal click",
symbols = { "ʘ̃ˀ", "ʘˀ", "ŋ̊ʘˀ", "ŋʘˀ" },
},
{
name = "Glottalized dental nasal click",
symbols = { "ǀ̃ˀ", "ǀˀ", "ŋ̊ǀˀ", "ŋǀˀ" },
},
{
name = "Glottalized alveolar nasal click",
symbols = { "ǃ̃ˀ", "ǃˀ", "ŋ̊ǃˀ", "ŋǃˀ" },
},
{
name = "Glottalized retroflex nasal click",
symbols = { "‼̃ˀ", "‼ˀ", "ŋ‼ˀ", "ŋ̊‼ˀ" },
},
{
name = "Glottalized palatal nasal click",
symbols = { "ǂ̃ˀ", "ǂˀ", "ŋ̊ǂˀ", "ŋǂˀ" },
},
{
name = "Glottalized alveolar lateral nasal click",
symbols = { "ǁ̃ˀ", "ǁˀ", "ŋ̊ǁˀ", "ŋǁˀ" },
},
-- Implosives
{
name = "Voiceless bilabial implosive",
symbols = { "ɓ̥", "ƥ" },
},
{
name = "Voiced bilabial implosive",
symbols = { "ɓ" },
audio = "Voiced bilabial implosive.ogg"
},
{
name = "Voiceless alveolar implosive",
symbols = { "ɗ̥", "ƭ" },
},
{
name = "Voiced alveolar implosive",
symbols = { "ɗ" },
audio = "Voiced alveolar implosive.ogg"
},
{
name = "Voiceless retroflex implosive",
symbols = { "ᶑ̊", "ᶑ̥", "𝼉" },
},
{
name = "Voiced retroflex implosive",
symbols = { "ᶑ" },
},
{
name = "Voiceless palatal implosive",
symbols = { "ʄ̊", "ʄ̥", "ƈ" },
},
{
name = "Voiced palatal implosive",
symbols = { "ʄ" },
audio = "Voiced palatal implosive.ogg"
},
{
name = "Voiceless velar implosive",
symbols = { "ɠ̊", "ƙ" },
},
{
name = "Voiced velar implosive",
symbols = { "ɠ" },
audio = "Voiced velar implosive.ogg"
},
{
name = "Voiceless uvular implosive",
symbols = { "ʛ̥", "ʠ" },
},
{
name = "Voiced uvular implosive",
symbols = { "ʛ" },
audio = "Voiced uvular implosive.ogg"
},
-- CO-ARTICULATED CONSONANTS
-- Co-articulated nasals
{
name = "Voiced labial–alveolar nasal",
symbols = { "nm" },
article = "Labial–coronal consonant",
},
{
name = "Voiced labial–velar nasal",
symbols = { "ŋm" },
audio = "Labial-velar nasal stop.ogg"
},
-- Co-articulated plosives
{
name = "Voiceless labial–alveolar plosive",
symbols = { "tp" },
article = "Labial–coronal consonant",
},
{
name = "Voiced labial–alveolar plosive",
symbols = { "db" },
article = "Labial–coronal consonant",
},
{
name = "Voiceless labial–velar plosive",
symbols = { "kp" },
audio = "Voiceless labial-velar plosive.ogg"
},
{
name = "Voiced labial–velar plosive",
symbols = { "ɡb" },
audio = "Voiced labial-velar plosive.ogg"
},
{
name = "Voiceless uvular–epiglottal plosive",
symbols = { "qʡ" },
},
-- Co-articulated continuants
{
name = "Voiceless labial–palatal fricative",
symbols = { "ɥ̊" },
},
{
name = "Voiced labial–palatal approximant",
symbols = { "ɥ" },
audio = "LL-Q150 (fra)-WikiLucas00-IPA ɥ.wav"
},
{
name = "Voiceless labial–velar fricative",
symbols = { "ʍ", "w̥", "hw" },
audio = "Voiceless labio-velar fricative.ogg"
},
{
name = "Voiced labial–velar approximant",
symbols = { "w" },
audio = "Voiced labio-velar approximant.ogg"
},
{
name = "Compressed voiced labial–velar approximant",
symbols = { "wᵝ", "ɰᵝ" },
article = "Voiced labial–velar approximant",
},
{
name = "Sj-sound",
symbols = { "ɧ" },
audio = "Voiceless dorso-palatal velar fricative.ogg"
},
-- Co-articulated lateral approximants
{
name = "Velarized dental lateral approximant",
symbols = { "ɫ̪", "l̪ˠ" },
},
{
name = "Velarized alveolar lateral approximant",
symbols = { "ɫ", "lˠ" },
audio = "Velarized alveolar lateral approximant.ogg"
},
-- Nasal approximants
{
name = "Nasal palatal approximant",
symbols = { "j̃" },
},
{
name = "Nasal labial–velar approximant",
symbols = { "w̃" },
},
{
name = "Voiceless nasal glottal approximant",
symbols = { "h̃" },
},
-- VOWELS
-- Close vowels
{
name = "Close front unrounded vowel",
symbols = { "i" },
audio = "Close front unrounded vowel.ogg"
},
{
name = "Close front rounded vowel",
symbols = { "y" },
audio = "Close front rounded vowel.ogg"
},
{
name = "Close front compressed vowel",
symbols = { "y͍", "iᵝ" },
audio = "Close front rounded vowel.ogg"
},
{
name = "Close front protruded vowel",
symbols = { "y̫", "yʷ", "iʷ" },
},
{
name = "Close central unrounded vowel",
symbols = { "ɨ", "ï" },
audio = "Close central unrounded vowel.ogg"
},
{
name = "Close central rounded vowel",
symbols = { "ʉ", "ü" },
audio = "Close central rounded vowel.ogg"
},
{
name = "Close central protruded vowel",
symbols = { "ʉ̫", "ʉʷ", "ɨʷ" },
audio = "Close central rounded vowel.ogg"
},
{
name = "Close central compressed vowel",
symbols = { "ÿ", "ɨᵝ" },
},
{
name = "Close back unrounded vowel",
symbols = { "ɯ" },
audio = "Close back unrounded vowel.ogg"
},
{
name = "Close back rounded vowel",
symbols = { "u" },
audio = "Close back rounded vowel.ogg"
},
{
name = "Close back protruded vowel",
symbols = { "u̫", "uʷ", "ɯʷ" },
audio = "Close back rounded vowel.ogg"
},
{
name = "Close back compressed vowel",
symbols = { "u͍", "ɯᵝ" },
audio = "Ja-U.oga"
},
-- Near-close vowels
{
name = "Near-close near-front unrounded vowel",
symbols = { "ɪ", "ɪ̟", "i̞", "e̝" },
audio = "Near-close near-front unrounded vowel.ogg"
},
{
name = "Near-close near-front rounded vowel",
symbols = { "ʏ", "y̞", "y˕", "ø̝" },
audio = "Near-close near-front rounded vowel.ogg"
},
{
name = "Near-close near-front compressed vowel",
symbols = { "ʏ͍", "ɪᵝ" },
audio = "Near-close near-front rounded vowel.ogg"
},
{
name = "Near-close near-front protruded vowel",
symbols = { "ʏ̫", "ʏʷ", "ɪʷ" },
},
{
name = "Near-close central unrounded vowel",
symbols = { "ɪ̈", "ɨ̞", "ɘ̝" },
audio = "Near-close central unrounded vowel.ogg"
},
{
name = "Near-close central rounded vowel",
symbols = { "ʊ̈", "ʊ̟", "ʉ̞", "ɵ̝" },
},
{
name = "Near-close central protruded vowel",
symbols = { "ʊ̫̈", "ʉ̫˕", "ʊ̈ʷ", "ʉ̞ʷ", "ɪ̈ʷ", "ɨ̞ʷ" },
},
{
name = "Near-close central compressed vowel",
symbols = { "ʏ̈", "ɨ̞ᵝ" },
},
{
name = "Near-close near-back unrounded vowel",
symbols = { "ɯ̞", "ɯ̽" },
audio = "Near-close near-back unrounded vowel.ogg"
},
{
name = "Near-close near-back rounded vowel",
symbols = { "ʊ", "u̞", "o̝" },
audio = "Near-close near-back rounded vowel.ogg"
},
{
name = "Near-close near-back protruded vowel",
symbols = { "ʊ̫", "ʊʷ", "ɯ̽ʷ", "ɤ̝̈ʷ", "u̫˕", "u̞ʷ", "ɯ̞ʷ", "ɤ̝ʷ" },
audio = "Near-close near-back rounded vowel.ogg"
},
{
name = "Near-close near-back compressed vowel",
symbols = { "ʊ͍", "ɯ̽ᵝ", "ɯ̞̈ᵝ", "ɯ̞ᵝ" },
},
-- Close-mid vowels
{
name = "Close-mid front unrounded vowel",
symbols = { "e" },
audio = "Close-mid front unrounded vowel.ogg"
},
{
name = "Close-mid front rounded vowel",
symbols = { "ø" },
audio = "Close-mid front rounded vowel.ogg"
},
{
name = "Close-mid front compressed vowel",
symbols = { "ø͍", "eᵝ" },
audio = "Close-mid front rounded vowel.ogg"
},
{
name = "Close-mid front protruded vowel",
symbols = { "ø̫", "øʷ", "eʷ" },
},
{
name = "Close-mid central unrounded vowel",
symbols = { "ɘ", "ë", "ɤ̈" },
audio = "Close-mid central unrounded vowel.ogg"
},
{
name = "Close-mid central rounded vowel",
symbols = { "ɵ", "ö" },
audio = "Close-mid central rounded vowel.ogg"
},
{
name = "Close-mid central protruded vowel",
symbols = { "ɵ̫", "ɵʷ", "ɘʷ" },
audio = "Close-mid central rounded vowel.ogg"
},
{
name = "Close-mid central compressed vowel",
symbols = { "ø̈", "ɘᵝ" },
},
{
name = "Close-mid back unrounded vowel",
symbols = { "ɤ" },
audio = "Close-mid back unrounded vowel.ogg"
},
{
name = "Close-mid back rounded vowel",
symbols = { "o" },
audio = "Close-mid back rounded vowel.ogg"
},
{
name = "Close-mid back protruded vowel",
symbols = { "o̫", "oʷ", "ɤʷ" },
audio = "Close-mid back rounded vowel.ogg"
},
{
name = "Close-mid back compressed vowel",
symbols = { "o͍", "ɤᵝ" },
},
-- Mid vowels
{
name = "Mid front unrounded vowel",
symbols = { "e̞", "ɛ̝" },
audio = "Mid front unrounded vowel.ogg"
},
{
name = "Mid front rounded vowel",
symbols = { "ø̞", "œ̝" },
audio = "Mid front rounded vowel.ogg"
},
{
name = "Mid front compressed vowel",
symbols = { "ø͍˕", "œ͍˔", "e̞ᵝ", "ɛ̝ᵝ" },
},
{
name = "Mid front protruded vowel",
symbols = { "ø̫˕", "œ̫˔", "ø̞ʷ", "œ̝ʷ", "e̞ʷ", "ɛ̝ʷ" },
},
{
name = "Mid central vowel",
symbols = { "ə" },
audio = "Mid-central vowel.ogg"
},
{
name = "Mid central unrounded vowel",
symbols = { "ə̜", "ɘ̞", "ɜ̝" },
audio = "Mid-central vowel.ogg"
},
{
name = "Mid central rounded vowel",
symbols = { "ə̹", "ɵ̞", "ɞ̝" },
audio = "Mid central rounded vowel.ogg"
},
{
name = "Mid back unrounded vowel",
symbols = { "ɤ̞", "ʌ̝" },
},
{
name = "Mid back rounded vowel",
symbols = { "o̞", "ɔ̝" },
audio = "Mid back rounded vowel.ogg"
},
-- Open-mid vowels
{
name = "Open-mid front unrounded vowel",
symbols = { "ɛ" },
audio = "Open-mid front unrounded vowel.ogg"
},
{
name = "Open-mid front rounded vowel",
symbols = { "œ" },
audio = "Open-mid front rounded vowel.ogg"
},
{
name = "Open-mid front compressed vowel",
symbols = { "œ͍", "ɛᵝ" },
audio = "Open-mid front rounded vowel.ogg"
},
{
name = "Open-mid front protruded vowel",
symbols = { "œ̫", "œʷ", "ɛʷ" },
},
{
name = "Open-mid central unrounded vowel",
symbols = { "ɜ", "ɛ̈", "ʌ̈" },
audio = "Open-mid central unrounded vowel.ogg"
},
{
name = "Open-mid central rounded vowel",
symbols = { "ɞ" },
audio = "Open-mid central rounded vowel.ogg"
},
{
name = "Open-mid back unrounded vowel",
symbols = { "ʌ" },
audio = "PR-open-mid back unrounded vowel2.ogg"
},
{
name = "Open-mid back rounded vowel",
symbols = { "ɔ" },
audio = "PR-open-mid back rounded vowel.ogg"
},
-- Near-open vowels
{
name = "Near-open front unrounded vowel",
symbols = { "æ" },
audio = "Near-open front unrounded vowel.ogg"
},
{
name = "Near-open central vowel",
symbols = { "ɐ" },
audio = "Near-open central unrounded vowel.ogg"
},
{
name = "Near-open central unrounded vowel",
symbols = { "ɐ̜", "ɜ̞" },
audio = "PR-near-open central unrounded vowel.ogg"
},
{
name = "Near-open central rounded vowel",
symbols = { "ɐ̹", "ɞ̞" },
},
-- Open vowels
{
name = "Open front unrounded vowel",
symbols = { "a", "æ̞" },
audio = "PR-open front unrounded vowel.ogg"
},
{
name = "Open front rounded vowel",
symbols = { "ɶ" },
audio = "Open front rounded vowel.ogg"
},
{
name = "Open central unrounded vowel",
symbols = { "ä", "ɑ̈", "ɐ̞" },
audio = "Open central unrounded vowel.ogg"
},
{
name = "Open central rounded vowel",
symbols = { "ɒ̈", "ɶ̈" },
audio = "Open central rounded vowel.ogg"
},
{
name = "Open back unrounded vowel",
symbols = { "ɑ" },
audio = "Open back unrounded vowel.ogg"
},
{
name = "Open back rounded vowel",
symbols = { "ɒ" },
audio = "PR-open back rounded vowel.ogg"
},
{
name = "R-colored vowel",
symbols = { "ɚ", "ɝ", "ɹ̩", "ɻ̍" },
audio = "En-us-er.ogg"
},
-- SUPRASEGMENTALS
{
name = "Primary stress",
symbols = { "ˈ" },
article = "Stress (linguistics)",
},
{
name = "Secondary stress",
symbols = { "ˌ" },
},
{
name = "Minor (foot) group",
symbols = { "|" },
article = "Prosodic unit",
},
{
name = "Major (intonation) group",
symbols = { "‖" },
article = "Prosodic unit",
},
{
name = "Syllable break",
symbols = { "." },
article = "Syllable",
},
{
name = "Linking (absence of a break)",
symbols = { "‿" },
article = "Connected speech",
},
-- TONES AND WORD ACCENTS
{
name = "Downstep",
symbols = { "ꜜ" },
},
{
name = "Upstep",
symbols = { "ꜛ" },
},
{
name = "Global rise",
symbols = { "↗" },
article = "Intonation (linguistics)",
},
{
name = "Global fall",
symbols = { "↘" },
article = "Intonation (linguistics)",
},
-- EXTENDED IPA (extIPA)
{
name = "Bilabial percussive",
symbols = { "ʬ" },
},
{
name = "Bidental percussive",
symbols = { "ʭ" },
},
{
name = "Velopharyngeal fricative",
symbols = { "ʩ" },
},
{
name = "Voiceless alveolar lateral–median fricative",
symbols = { "ʪ" },
article = "Lateral release (phonetics)",
},
{
name = "Voiced alveolar lateral–median fricative",
symbols = { "ʫ" },
article = "Lateral release (phonetics)",
},
{
name = "Ingressive airflow",
symbols = { "↓" },
article = "Ingressive sound",
},
{
name = "Egressive airflow",
symbols = { "↑" },
article = "Egressive sound",
},
{
name = "Apical r",
symbols = { "ɹ̺" },
article = "Pronunciation of English /r/",
},
{
name = "Bunched r",
symbols = { "ɹ̈" },
article = "Pronunciation of English /r/",
},
{
name = "Sublaminal lower alveolar percussive",
symbols = { "¡" },
article = "Percussive consonant",
},
{
name = "Percussive alveolar click",
symbols = { "ǃ¡" },
},
{
name = "Buccal interdental trill",
symbols = { "ↀr̪͆" },
article = "Blowing a raspberry",
},
-- NON-IPA
{
name = "Morphological boundary",
symbols = { "#" },
article = "Word stem",
},
{
name = "Zero",
symbols = { "∅" },
article = "Zero (linguistics)",
},
},
diacritics = {
-- DIACRITICS
{
name = "Voiceless",
symbols = { "̥", "̊", "ḁ", "å", "ů", "ẘ", "ẙ" },
},
{
name = "Voiced",
symbols = { "̬" },
article = "Voice (phonetics)",
},
{
name = "Aspirated",
symbols = { "ʰ" },
article = "Aspirated consonant",
},
{
name = "More rounded",
symbols = { "̹", "͗", "˒" },
article = "Roundedness",
},
{
name = "Less rounded",
symbols = { "̜", "͑", "˓", "͍" },
article = "Roundedness",
},
{
name = "Advanced",
symbols = { "̟", "˖" },
article = "Relative articulation#Advanced and retracted",
},
{
name = "Retracted",
symbols = { "̠", "˗" },
article = "Relative articulation#Advanced and retracted",
},
{
name = "Centralized",
symbols = { "̈" },
article = "Relative articulation#Centralized vowels",
},
{
name = "Mid-centralized",
symbols = { "̽" },
article = "Relative articulation#Mid-centralized vowel",
},
{
name = "Syllabic",
symbols = { "̩", "̍" },
article = "Syllabic consonant",
},
{
name = "Non-syllabic",
symbols = { "̯", "̑" },
article = "Semivowel",
},
{
name = "Rhoticity",
symbols = { "˞" },
article = "R-colored vowel",
audio = "En-us-er.ogg"
},
{
name = "Breathy voiced",
symbols = { "̤", "ṳ", "ʱ" },
article = "Breathy voice",
},
{
name = "Creaky voiced",
symbols = { "̰", "ḛ", "ḭ", "ṵ" },
article = "Creaky voice",
},
{
name = "Linguolabial",
symbols = { "̼" },
article = "Linguolabial consonant",
},
{
name = "Labialized",
symbols = { "ʷ", "̫" },
article = "Labialization",
},
{
name = "Palatalized",
symbols = { "ʲ" },
article = "Palatalization (phonetics)",
},
{
name = "Velarized",
symbols = { "ˠ" },
article = "Velarization",
},
{
name = "Pharyngealized",
symbols = { "ˤ" },
article = "Pharyngealization",
},
{
name = "Velarized or pharyngealized",
symbols = { "̴", "ᵯ", "ᵰ", "ᵱ", "ᵬ", "ᵮ", "ᵵ", "ᵭ", "ᵴ", "ᵶ", "ᵳ", "ᵲ" },
article = "Pharyngealization",
},
{
name = "Raised",
symbols = { "̝", "˔" },
article = "Relative articulation#Raised and lowered",
},
{
name = "Lowered",
symbols = { "̞", "˕" },
article = "Relative articulation#Raised and lowered",
},
{
name = "Advanced tongue root",
symbols = { "̘" },
},
{
name = "Retracted tongue root",
symbols = { "̙" },
},
{
name = "Dental",
symbols = { "̪", "͆" },
article = "Dental consonant",
},
{
name = "Apical",
symbols = { "̺" },
article = "Apical consonant",
},
{
name = "Laminal",
symbols = { "̻" },
article = "Laminal consonant",
},
{
name = "Nasalized",
symbols = { "̃", "ṽ" },
article = "Nasalization",
},
{
name = "Nasal vowel",
symbols = { "ĩ", "ỹ", "ɨ̃", "ʉ̃", "ɯ̃", "ũ", "ɪ̃", "ʏ̃", "ʊ̃", "ẽ", "ø̃", "ɘ̃", "ɵ̃", "ɤ̃", "õ", "ə̃", "ɛ̃", "œ̃", "ɜ̃", "ɞ̃", "ʌ̃", "ɔ̃", "æ̃", "ɐ̃", "ã", "ɶ̃", "ä̃", "ɑ̃", "ɒ̃" },
},
{
name = "Nasal release",
symbols = { "ⁿ" },
},
{
name = "Lateral release",
symbols = { "ˡ" },
article = "Lateral release (phonetics)",
},
{
name = "No audible release",
symbols = { "̚" },
},
{
name = "Ejective",
symbols = { "ʼ" },
article = "Ejective consonant",
},
{
name = "Glottalized",
symbols = { "ˀ" },
article = "Glottalization",
},
{
name = "Labio-palatalized",
symbols = { "ᶣ" },
article = "Labio-palatalization",
},
-- SUPRASEGMENTALS
{
name = "Long",
symbols = { "ː" },
article = "Length (phonetics)",
},
{
name = "Half-long",
symbols = { "ˑ" },
article = "Length (phonetics)",
},
{
name = "Extra-short",
symbols = { "̆" },
article = "Extra-shortness",
},
-- TONES AND WORD ACCENTS
{
name = "Accent",
symbols = { "̋", "ű", "ӳ", "ő", "́", "í", "ý", "ú", "é", "ó", "á", "̄", "ī", "ȳ", "ū", "ē", "ō", "ǣ", "ā", "̀", "ì", "ỳ", "ù", "è", "ò", "à", "̏", "ȉ", "ȕ", "ȅ", "ȍ", "ȁ" },
article = "Pitch-accent language",
},
{
name = "Tone",
symbols = { "̌", "̂", "᷄", "᷅", "᷇", "᷆", "᷈", "᷉", "˥", "˦", "˧", "˨", "˩" },
article = "Tone (linguistics)",
},
-- EXTENDED IPA (extIPA)
{
name = "Alveolar",
symbols = { "͇" },
article = "Alveolar consonant",
},
{
name = "Strong articulation",
symbols = { "͈", "̎" },
article = "Fortis and lenis",
},
{
name = "Weak articulation",
symbols = { "͉", "᷂" },
article = "Fortis and lenis",
},
{
name = "Denasalized",
symbols = { "͊" },
article = "Denasalization",
},
{
name = "Velopharyngeal friction",
symbols = { "͌" },
article = "Velopharyngeal consonant",
},
{
name = "Whistled articulation",
symbols = { "͎" },
article = "Whistled sibilant",
},
{
name = "Unaspirated",
symbols = { "˭" },
article = "Tenuis consonant",
},
{
name = "Pre-aspiration",
symbols = { "ʰp", "ʰt", "ʰʈ", "ʰc", "ʰk", "ʰq", "ʰn" },
article = "Preaspiration",
},
-- NON-IPA
{
name = "Retroflex",
symbols = { "̣", "̢" },
article = "Retroflex consonant",
},
{
name = "Prenasalized consonant",
symbols = { "ᵐ", "ᶬ", "ⁿt", "ⁿd", "ⁿθ", "ⁿð", "ⁿs", "ⁿz", "ⁿʃ", "ⁿʒ", "ⁿɕ", "ⁿʑ", "ⁿr", "ⁿɬ", "ⁿɮ", "ⁿl", "ᶯ", "ᶮ", "ᵑ", "ᶰ" },
},
{
name = "Pre-stopped consonant",
symbols = { "ᵖ", "ᵇ", "ᵗ", "ᵈ", "ᶜ", "ᶡ", "ᵏ", "ᶢ", "ᴳ" },
},
{
name = "Post-stopped nasal",
symbols = { "mᵇ", "nᵈ", "ɲᶡ", "ŋᶢ", "ɴᴳ" },
},
}
}
for k, group in pairs(rawData) do
for _, v in ipairs(group) do
local t = {
name = v.name,
symbol = v.symbols[1],
article = v.article or v.name,
audio = v.audio or ""
}
for _, s in ipairs(v.symbols) do
data[k][s] = t
end
end
end
return { data = data, rawData = rawData }
2513954eju01domsinlrckehziy7vlf
Modulo:Webarchive/pagipadasan
828
56372
392279
390503
2022-08-18T21:44:49Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1103443944|Module:Webarchive/1103443944]]
Scribunto
text/plain
--[[ ----------------------------------
Lua module implementing the {{webarchive}} template.
A merger of the functionality of three templates: {{wayback}}, {{webcite}} and {{cite archives}}
]]
--[[--------------------------< D E P E N D E N C I E S >------------------------------------------------------
]]
require('Modulo:No globals');
local getArgs = require ('Modulo:Dagiti argumento').getArgs;
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local categories = {}; -- category names
local config = {}; -- global configuration settings
local digits = {}; -- for i18n; table that translates local-wiki digits to western digits
local err_warn_msgs = {}; -- error and warning messages
local excepted_pages = {};
local month_num = {}; -- for i18n; table that translates local-wiki month names to western digits
local prefixes = {}; -- service provider tail string prefixes
local services = {}; -- archive service provider data from
local s_text = {}; -- table of static text strings used to build final rendering
local uncategorized_namespaces = {}; -- list of namespaces that we should not categorize
local uncategorized_subpages = {}; -- list of subpages that should not be categorized
--[[--------------------------< P A G E S C O P E I D E N T I F I E R S >----------------------------------
]]
local non_western_digits; -- boolean flag set true when data.digits.enable is true
local this_page = mw.title.getCurrentTitle();
local track = {}; -- Associative array to hold tracking categories
local ulx = {}; -- Associative array to hold template data
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Populates numbered arguments in a message string using an argument table.
]]
local function substitute (msg, args)
return args and mw.message.newRawMessage (msg, args):plain() or msg;
end
--[[--------------------------< tableLength >-----------------------
Given a 1-D table, return number of elements
]]
local function tableLength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display, no_link)
if nil == no_link then
if link and ('' ~= link) then
if display and ('' ~= display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
end
return display or ''; -- link not set so return the display text
else -- no_link
if display and ('' ~= display) then -- if there is display text
return display; -- return that
else
return link or ''; -- return the target article name or empty string
end
end
end
--[[--------------------------< createTracking >-----------------------
Return data in track[] ie. tracking categories
]]
local function createTracking()
if not excepted_pages[this_page.fullText] then -- namespace:title/fragment is allowed to be categorized (typically this module's / template's testcases page(s))
if uncategorized_namespaces[this_page.nsText] then
return ''; -- this page not to be categorized so return empty string
end
for _,v in ipairs (uncategorized_subpages) do -- cycle through page name patterns
if this_page.text:match (v) then -- test page name against each pattern
return ''; -- this subpage type not to be categorized so return empty string
end
end
end
local out = {};
if tableLength(track) > 0 then
for key, _ in pairs(track) do -- loop through table
table.insert (out, make_wikilink (key)); -- and convert category names to links
end
end
return table.concat (out); -- concat into one big string; empty string if table is empty
end
--[[--------------------------< inlineError >-----------------------
Critical error. Render output completely in red. Add to tracking category.
This function called as the last thing before abandoning this module
]]
local function inlineError (msg, args)
track[categories.error] = 1
return table.concat ({
'<span style="font-size:100%" class="error citation-comment">Biddut iti ', -- open the error message span
config.tname, -- insert the local language template name
' plantilia: ',
substitute (msg, args), -- insert the formatted error message
'.</span>', -- close the span
createTracking() -- add the category
})
end
--[[--------------------------< inlineRed >-----------------------
Render a text fragment in red, such as a warning as part of the final output.
Add tracking category.
]]
local function inlineRed(msg, trackmsg)
if trackmsg == "warning" then
track[categories.warning] = 1;
elseif trackmsg == "error" then
track[categories.error] = 1;
end
return '<span style="font-size:100%" class="error citation-comment">' .. msg .. '</span>'
end
--[[--------------------------< base62 >-----------------------
Convert base-62 to base-10
Credit: https://de.wikipedia.org/wiki/Modul:Expr
]]
local function base62( value )
local r = 1 -- default return value is input value is malformed
if value:match ('%W') then -- value must only be in the set [0-9a-zA-Z]
return; -- nil return when value contains extraneous characters
end
local n = #value -- number of characters in value
local k = 1
local c
r = 0
for i = n, 1, -1 do -- loop through all characters in value from ls digit to ms digit
c = value:byte( i, i )
if c >= 48 and c <= 57 then -- character is digit 0-9
c = c - 48
elseif c >= 65 and c <= 90 then -- character is ascii a-z
c = c - 55
else -- must be ascii A-Z
c = c - 61
end
r = r + c * k -- accumulate this base62 character's value
k = k * 62 -- bump for next
end -- for i
return r
end
--[[--------------------------< D E C O D E _ D A T E >--------------------------------------------------------
Given a date string, return it in iso format along with an indicator of the date's format. Except that month names
must be recognizable as legitimate month names with proper capitalization, and that the date string must match one
of the recognized date formats, no error checking is done here; return nil else
]]
local function decode_date (date_str)
local patterns = {
['dmy'] = {'^(%d%d?) +([^%s%d]+) +(%d%d%d%d)$', 'd', 'm', 'y'}, -- %a does not recognize unicode combining characters used by some languages
['mdy'] = {'^([^%s%d]+) (%d%d?), +(%d%d%d%d)$', 'm', 'd', 'y'},
['ymd'] = {'^(%d%d%d%d) +([^%s%d]+) (%d%d?)$', 'y', 'm', 'd'}, -- not mos compliant at en.wiki but may be acceptible at other wikis
};
local t = {};
if non_western_digits then -- this wiki uses non-western digits?
date_str = mw.ustring.gsub (date_str, '%d', digits); -- convert this wiki's non-western digits to western digits
end
if date_str:match ('^%d%d%d%d%-%d%d%-%d%d$') then -- already an iso format date, return western digits form
return date_str, 'iso';
end
for k, v in pairs (patterns) do
local c1, c2, c3 = mw.ustring.match (date_str, patterns[k][1]); -- c1 .. c3 are captured but we don't know what they hold
if c1 then -- set on match
t = { -- translate unspecified captures to y, m, and d
[patterns[k][2]] = c1, -- fill the table of captures with the captures
[patterns[k][3]] = c2, -- take index names from src_pattern table and assign sequential captures
[patterns[k][4]] = c3,
};
if month_num[t.m] then -- when month not already a number
t.m = month_num[t.m]; -- replace valid month name with a number
else
return nil, 'iso'; -- not a valid date form because month not valid
end
return mw.ustring.format ('%.4d-%.2d-%.2d', t.y, t.m, t.d), k; -- return date in iso format
end
end
return nil, 'iso'; -- date could not be decoded; return nil and default iso date
end
--[[--------------------------< makeDate >-----------------------
Given year, month, day numbers, (zero-padded or not) return a full date in df format
where df may be one of:
mdy, dmy, iso, ymd
on entry, year, month, day are presumed to be correct for the date that they represent; all are required
in this module, makeDate() is sometimes given an iso-format date in year:
makeDate (2018-09-20, nil, nil, df)
this works because table.concat() sees only one table member
]]
local function makeDate (year, month, day, df)
local format = {
['dmy'] = 'j F Y',
['mdy'] = 'F j, Y',
['ymd'] = 'Y F j',
['iso'] = 'Y-m-d',
};
local date = table.concat ({year, month, day}, '-'); -- assemble year-initial numeric-format date (zero padding not required here)
if non_western_digits then -- this wiki uses non-western digits?
date = mw.ustring.gsub (date, '%d', digits); -- convert this wiki's non-western digits to western digits
end
return mw.getContentLanguage():formatDate (format[df], date);
end
--[[--------------------------< I S _ V A L I D _ D A T E >----------------------------------------------------
Returns true if date is after 31 December 1899 (why is 1900 the min year? shouldn't the internet's date-of-birth
be min year?), not after today's date, and represents a valid date (29 February 2017 is not a valid date). Applies
Gregorian leapyear rules.
all arguments are required
]]
local function is_valid_date (year, month, day)
local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
local month_length;
local y, m, d;
local today = os.date ('*t'); -- fetch a table of current date parts
if not year or '' == year or not month or '' == month or not day or '' == day then
return false; -- something missing
end
y = tonumber (year);
m = tonumber (month);
d = tonumber (day);
if 1900 > y or today.year < y or 1 > m or 12 < m then -- year and month are within bounds TODO: 1900?
return false;
end
if (2==m) then -- if February
month_length = 28; -- then 28 days unless
if (0==(y%4) and (0~=(y%100) or 0==(y%400))) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
else
month_length=days_in_month[m];
end
if 1 > d or month_length < d then -- day is within bounds
return false;
end
-- here when date parts represent a valid date
return os.time({['year']=y, ['month']=m, ['day']=d, ['hour']=0}) <= os.time(); -- date at midnight must be less than or equal to current date/time
end
--[[--------------------------< decodeWebciteDate >-----------------------
Given a URI-path to Webcite (eg. /67xHmVFWP) return the encoded date in df format
returns date string in df format - webcite date is a unix timestamp encoded as bae62
or the string 'query'
]]
local function decodeWebciteDate(path, df)
local dt = {};
local decode;
dt = mw.text.split(path, "/")
-- valid URL formats that are not base62
-- http://www.webcitation.org/query?id=1138911916587475
-- http://www.webcitation.org/query?url=http..&date=2012-06-01+21:40:03
-- http://www.webcitation.org/1138911916587475
-- http://www.webcitation.org/cache/73e53dd1f16cf8c5da298418d2a6e452870cf50e
-- http://www.webcitation.org/getfile.php?fileid=1c46e791d68e89e12d0c2532cc3cf629b8bc8c8e
if dt[2]:find ('query', 1, true) or
dt[2]:find ('cache', 1, true) or
dt[2]:find ('getfile', 1, true) or
tonumber(dt[2]) then
return 'query';
end
decode = base62(dt[2]); -- base62 string -> exponential number
if not decode then
return nil; -- nil return when dt[2] contains characters not in %w
end
dt = os.date('*t', string.format("%d", decode):sub(1,10)) -- exponential number -> text -> first 10 characters (a unix timestamp) -> a table of date parts
decode = makeDate (dt.year, dt.month, dt.day, 'iso'); -- date comparisons are all done in iso format with western digits
if non_western_digits then -- this wiki uses non-western digits?
decode = mw.ustring.gsub (decode, '%d', digits); -- convert this wiki's non-western digits to western digits
end
return decode;
end
--[[--------------------------< decodeWaybackDate >-----------------------
Given a URI-path to Wayback (eg. /web/20160901010101/http://example.com )
or Library of Congress Web Archives (eg. /all/20160901010101/http://example.com)
or UK Government Web Archive (eg. /ukgwa/20160901010101/http://example.com or /tna/20160901010101/http://example.com)
return the formatted date eg. "September 1, 2016" in df format
Handle non-digits in snapshot ID such as "re_" and "-" and "*"
returns two values:
first value is one of these:
valid date string in df format - wayback date is valid (including the text string 'index' when date is '/*/')
empty string - wayback date is malformed (less than 8 digits, not a valid date)
nil - wayback date is '/save/' or otherwise not a number
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeWaybackDate(path, df)
local msg, snapdate;
snapdate = path:gsub ('^/web/', ''):gsub ('^/all/', ''):gsub ('^/ukgwa/', ''):gsub ('^/tna/', ''):gsub ('^/', ''); -- remove leading /web/, /all/, /ukgwa/, /tna/, or /
snapdate = snapdate:match ('^[^/]+'); -- get timestamp
if snapdate == "*" then -- eg. /web/*/http.., etc.
return 'index'; -- return indicator that this url has an index date
end
snapdate = snapdate:gsub ('%a%a_%d?$', ''):gsub ('%-', ''); -- from date, remove any trailing "re_", dashes
msg = '';
if snapdate:match ('%*$') then -- a trailing '*' causes calendar display at archive .org
snapdate = snapdate:gsub ('%*$', ''); -- remove so not part of length calc later
msg = inlineRed (err_warn_msgs.ts_cal, 'warning'); -- make a message
end
if not tonumber(snapdate) then
return nil, 'ts_nan'; -- return nil (fatal error flag) and message selector
end
local dlen = snapdate:len();
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate, msg; -- return date with message if any
else
return snapdate, msg .. inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message(s)
end
end
--[[--------------------------< decodeArchiveisDate >-----------------------
Given an Archive.is "long link" URI-path (e.g. /2016.08.28-144552/http://example.com)
return the date in df format (e.g. if df = dmy, return 28 August 2016)
Handles "." and "-" in snapshot date, so 2016.08.28-144552 is same as 20160828144552
returns two values:
first value is one of these:
valid date string in df format - archive.is date is valid (including the text string 'short link' when url is the short form)
empty string - wayback date is malformed (not a number, less than 8 digits, not a valid date)
nil - wayback date is '/save/'
second return value is an appropriate 'message' may or may not be formatted
]]
local function decodeArchiveisDate(path, df)
local snapdate
if path:match ('^/%w+$') then -- short form url path is '/' followed by some number of base 62 digits and nothing else
return "short link" -- e.g. http://archive.is/hD1qz
end
snapdate = mw.text.split (path, '/')[2]:gsub('[%.%-]', ''); -- get snapshot date, e.g. 2016.08.28-144552; remove periods and hyphens
local dlen = string.len(snapdate)
if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
return '', inlineRed (err_warn_msgs.ts_short, 'error'); -- return empty string and error message
end
local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here
if not is_valid_date (year, month, day) then
return '', inlineRed (err_warn_msgs.ts_date, 'error'); -- return empty string and error message
end
snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
if 14 == dlen then
return snapdate; -- return date
else
return snapdate, inlineRed (err_warn_msgs.ts_len, 'warning'); -- return date with warning message
end
end
--[[--------------------------< serviceName >-----------------------
Given a domain extracted by mw.uri.new() (eg. web.archive.org) set tail string and service ID
]]
local function serviceName(host, no_link)
local tracking;
local index;
host = host:lower():gsub ('^web%.(.+)', '%1'):gsub ('^www%.(.+)', '%1'); -- lowercase, remove web. and www. subdomains
if services[host] then
index = host;
else
for k, _ in pairs (services) do
if host:find ('%f[%a]'..k:gsub ('([%.%-])', '%%%1')) then
index = k;
break;
end
end
end
if index then
local out = {''}; -- empty string in [1] so that concatenated result has leading single space
ulx.url1.service = services[index][4] or 'other';
tracking = services[index][5] or categories.other;
-- build tail string
if false == services[index][1] then -- select prefix
table.insert (out, prefixes.at);
elseif true == services[index][1] then
table.insert (out, prefixes.atthe);
else
table.insert (out, services[index][1]);
end
table.insert (out, make_wikilink (services[index][2], services[index][3], no_link)); -- add article wikilink
if services[index][6] then -- add tail postfix if it exists
table.insert (out, services[index][6]);
end
ulx.url1.tail = table.concat (out, ' '); -- put it all together; result has leading space character
else -- here when unknown archive
ulx.url1.service = 'other';
tracking = categories.unknown;
ulx.url1.tail = table.concat ({'', prefixes.at, host, inlineRed (err_warn_msgs.unknown_url, error)}, ' ');
end
track[tracking] = 1
end
--[[--------------------------< parseExtraArgs >-----------------------
Parse numbered arguments starting at 2, such as url2..url10, date2..date10, title2..title10
For example: {{webarchive |url=.. |url4=.. |url7=..}}
Three url arguments not in numeric sequence (1..4..7).
Function only processes arguments numbered 2 or greater (in this case 4 and 7)
It creates numeric sequenced table entries like:
urlx.url2.url = <argument value for url4>
urlx.url3.url = <argument value for url7>
Returns the number of URL arguments found numbered 2 or greater (in this case returns "2")
]]
local function parseExtraArgs(args)
local i, j, argurl, argurl2, argdate, argtitle
j = 2
for i = 2, config.maxurls do
argurl = "url" .. i
if args[argurl] then
argurl2 = "url" .. j
ulx[argurl2] = {}
ulx[argurl2]["url"] = args[argurl]
argdate = "date" .. i
if args[argdate] then
ulx[argurl2]["date"] = args[argdate]
else
ulx[argurl2]["date"] = inlineRed (err_warn_msgs.date_miss, 'warning');
end
argtitle = "title" .. i
if args[argtitle] then
ulx[argurl2]["title"] = args[argtitle]
else
ulx[argurl2]["title"] = nil
end
j = j + 1
end
end
if j == 2 then
return 0
else
return j - 2
end
end
--[[--------------------------< comma >-----------------------
Given a date string, return "," if it's MDY
]]
local function comma(date)
return (date and date:match ('%a+ +%d%d?(,) +%d%d%d%d')) or '';
end
--[[--------------------------< createRendering >-----------------------
Return a rendering of the data in ulx[][]
]]
local function createRendering()
local displayfield
local out = {};
local index_date, msg = ulx.url1.date:match ('(index)(.*)'); -- when ulx.url1.date extract 'index' text and message text (if there is a message)
ulx.url1.date = ulx.url1.date:gsub ('index.*', 'index'); -- remove message
if 'none' == ulx.url1.format then -- For {{wayback}}, {{webcite}}
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx.url1.url); -- add url
if ulx.url1.title then
table.insert (out, ' ') -- the required space
table.insert (out, ulx.url1.title) -- the title
table.insert (out, ']'); -- close extlink markup
table.insert (out, ulx.url1.tail); -- tail text
if ulx.url1.date then
table.insert (out, ' ('); -- open date text; TODO: why the html entity? replace with regular space?
table.insert (out, 'index' == ulx.url1.date and s_text.archive or s_text.archived); -- add text
table.insert (out, ' '); -- insert a space
table.insert (out, ulx.url1.date); -- add date
table.insert (out, ')'); -- close date text
end
else -- no title
if index_date then -- when url date is 'index'
table.insert (out, table.concat ({' ', s_text.Archive_index, ']'})); -- add the index link label
table.insert (out, msg or ''); -- add date mismatch message when url date is /*/ and |date= has valid date
else
table.insert (out, table.concat ({' ', s_text.Archived, '] '})); -- add link label for url has timestamp date (will include mismatch message if there is one)
end
if ulx.url1.date then
if 'index' ~= ulx.url1.date then
table.insert (out, ulx.url1.date); -- add date when data is not 'index'
end
table.insert (out, comma(ulx.url1.date)); -- add ',' if date format is mdy
table.insert (out, ulx.url1.tail); -- add tail text
else -- no date
table.insert (out, ulx.url1.tail); -- add tail text
end
end
if 0 < ulx.url1.extraurls then -- For multiple archive URLs
local tot = ulx.url1.extraurls + 1
table.insert (out, '.') -- terminate first url
table.insert (out, table.concat ({' ', s_text.addlarchives, ': '})); -- add header text
for i=2, tot do -- loop through the additionals
local index = table.concat ({'url', i}); -- make an index
displayfield = ulx[index]['title'] and 'title' or 'date'; -- choose display text
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx[index]['url']); -- add the url
table.insert (out, ' '); -- the required space
table.insert (out, ulx[index][displayfield]); -- add the label
table.insert (out, ']'); -- close extlink markup
table.insert (out, i==tot and '.' or ', '); -- add terminator
end
end
return table.concat (out); -- make a big string and done
else -- For {{cite archives}}
if 'addlarchives' == ulx.url1.format then -- Multiple archive services
table.insert (out, table.concat ({s_text.addlarchives, ': '})); -- add header text
else -- Multiple pages from the same archive
table.insert (out, table.concat ({s_text.addlpages, ' '})); -- add header text
table.insert (out, ulx.url1.date); -- add date to header text
table.insert (out, ': '); -- close header text
end
local tot = ulx.url1.extraurls + 1;
for i=1, tot do -- loop through the additionals
local index = table.concat ({'url', i}); -- make an index
table.insert (out, '['); -- open extlink markup
table.insert (out, ulx[index]['url']); -- add url
table.insert (out, ' '); -- add required space
displayfield = ulx[index]['title'];
if 'addlarchives' == ulx.url1.format then
if not displayfield then
displayfield = ulx[index]['date']
end
else -- must be addlpages
if not displayfield then
displayfield = table.concat ({s_text.Page, ' ', i});
end
end
table.insert (out, displayfield); -- add title, date, page label text
table.insert (out, ']'); -- close extlink markup
table.insert (out, (i==tot and '.' or ', ')); -- add terminator
end
return table.concat (out); -- make a big string and done
end
end
--[[--------------------------< P A R A M E T E R _ N A M E _ X L A T E >--------------------------------------
for internaltionalization, translate local-language parameter names to their English equivalents
TODO: return error message if multiple aliases of the same canonical parameter name are found?
returns two tables:
new_args - holds canonical form parameters and their values either from translation or because the parameter was already in canonical form
origin - maps canonical-form parameter names to their untranslated (local language) form for error messaging in the local language
unrecognized parameters are ignored
]]
local function parameter_name_xlate (args, params, enum_params)
local name; -- holds modifiable name of the parameter name during evaluation
local enum; -- for enumerated parameters, holds the enumerator during evaluation
local found = false; -- flag used to break out of nested for loops
local new_args = {}; -- a table that holds canonical and translated parameter k/v pairs
local origin = {}; -- a table that maps original (local language) parameter names to their canonical name for local language error messaging
local unnamed_params; -- set true when unsupported positional parameters are detected
for k, v in pairs (args) do -- loop through all of the arguments in the args table
name = k; -- copy of original parameter name
if 'string' == type (k) then
if non_western_digits then -- true when non-western digits supported at this wiki
name = mw.ustring.gsub (name, '%d', digits); -- convert this wiki's non-western digits to western digits
end
enum = name:match ('%d+$'); -- get parameter enumerator if it exists; nil else
if not enum then -- no enumerator so looking for non-enumnerated parameters
-- TODO: insert shortcut here? if params[name] then name holds the canonical parameter name; no need to search further
for pname, aliases in pairs (params) do -- loop through each parameter the params table
for _, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
if name == alias then
new_args[pname] = v; -- create a new entry in the new_args table
origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
found = true; -- flag so that we can break out of these nested for loops
break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
end
end
if found then -- true when we found an alias that matched name
found = false; -- reset the flag
break; -- go do next args k/v pair
end
end
else -- enumerated parameters
name = name:gsub ('%d$', '#'); -- replace enumeration digits with place holder for table search
-- TODO: insert shortcut here? if num_params[name] then name holds the canonical parameter name; no need to search further
for pname, aliases in pairs (enum_params) do -- loop through each parameter the num_params table
for _, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
if name == alias then
pname = pname:gsub ('#$', enum); -- replace the '#' place holder with the actual enumerator
new_args[pname] = v; -- create a new entry in the new_args table
origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
found = true; -- flag so that we can break out of these nested for loops
break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
end
end
if found then -- true when we found an alias that matched name
found = false; -- reset the flag
break; -- go do next args k/v pair
end
end
end
else
unnamed_params = true; -- flag for unsupported positional parameters
end
end -- for k, v
return new_args, origin, unnamed_params;
end
--[[--------------------------< W E B A R C H I V E >----------------------------------------------------------
template entry point
]]
local function webarchive(frame)
local args = getArgs (frame);
local data = mw.loadData (table.concat ({ -- make a data module name; sandbox or live
'Modulo:Webarchive/data',
frame:getTitle():find('pagipadasan', 1, true) and '/pagipadasan' or '' -- this instance is ./sandbox then append /sandbox
}));
categories = data.categories; -- fill in the forward declarations
config = data.config;
if data.digits.enable then
digits = data.digits; -- for i18n; table of digits in the local wiki's language
non_western_digits = true; -- use_non_western_digits
end
err_warn_msgs = data.err_warn_msgs;
excepted_pages = data.excepted_pages;
month_num = data.month_num; -- for i18n; table of month names in the local wiki's language
prefixes = data.prefixes;
services = data.services;
s_text = data.s_text;
uncategorized_namespaces = data.uncategorized_namespaces;
uncategorized_subpages = data.uncategorized_subpages;
local origin = {}; -- holds a map of English to local language parameter names used in the current template; not currently used
local unnamed_params; -- boolean set to true when template call has unnamed parameters
args, origin, unnamed_params = parameter_name_xlate (args, data.params, data.enum_params); -- translate parameter names in args to English
local date, format, msg, udate, uri, url;
local ldf = 'iso'; -- when there is no |date= parameter, render url dates in iso format
if args.url and args.url1 then -- URL argument (first)
return inlineError (data.crit_err_msgs.conflicting, {origin.url, origin.url1});
end
url = args.url or args.url1;
if not url then
return inlineError (data.crit_err_msgs.empty);
end
-- these iabot bugs perportedly fixed; removing these causes lua script error
--[[ -- at Template:Webarchive/testcases/Production; resolve that before deleting these tests
if mw.ustring.find( url, "https://web.http", 1, true ) then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
track[categories.error] = 1;
return inlineError (data.crit_err_msgs.iabot1);
end
if url == "https://web.archive.org/http:/" then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
track[categories.error] = 1;
return inlineError (data.crit_err_msgs.iabot2);
end
]]
if not (url:lower():find ('^http') or url:find ('^//')) then
return inlineError (data.crit_err_msgs.invalid_url );
end
ulx.url1 = {}
ulx.url1.url = url
ulx.url1.extraurls = parseExtraArgs(args)
local good = false;
good, uri = pcall (mw.uri.new, ulx.url1.url); -- get a table of uri parts from this url; protected mode to prevent lua error when ulx.url1.url is malformed
if not good or nil == uri.host then -- abandon when ulx.url1.url is malformed
return inlineError (data.crit_err_msgs.invalid_url);
end
serviceName(uri.host, args.nolink)
if args.date and args.date1 then -- Date argument
return inlineError (data.crit_err_msgs.conflicting, {origin.date, origin.date1});
end
date = args.date or args.date1;
date = date and date:gsub (' +', ' '); -- replace multiple spaces with a single space
if date and config.verifydates then
if '*' == date then
date = 'index';
ldf = 'iso'; -- set to default format
elseif 'mdy' == date then
date = nil; -- if date extracted from URL,
ldf = 'mdy'; -- then |date=mdy overrides iso
elseif 'dmy' == date then
date = nil; -- if date extracted from URL,
ldf = 'dmy'; -- then |date=dmy overrides iso
elseif 'ymd' == date then
date = nil; -- if date extracted from URL,
ldf = 'ymd'; -- then |date=ymd overrides iso
else
date, ldf = decode_date (date); -- get an iso format date from date and get date's original format
end
end
if 'wayback' == ulx.url1.service or 'locwebarchives' == ulx.url1.service or 'ukgwa' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeWaybackDate (uri.path); -- get the url date in iso format and format of date in |date=; 'index' when wayback url date is *
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
else -- no |date=
udate, msg = decodeWaybackDate (uri.path);
if not udate then -- this is the only 'fatal' error return
return inlineError (data.crit_err_msgs[msg]);
end
if '' == udate then
date = nil; -- unset
else
date = udate;
end
end
elseif 'webcite' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate = decodeWebciteDate (uri.path); -- get the url date in iso format
if 'query' ~= udate then -- skip if query
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'),
});
end
end
end
end
else
date = decodeWebciteDate( uri.path, "iso" )
if date == "query" then
date = nil; -- unset
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
elseif not date then -- invalid base62 string
date = inlineRed (err_warn_msgs.date1, 'error');
end
end
elseif 'archiveis' == ulx.url1.service then
if date then
if config.verifydates then
if ldf then
udate, msg = decodeArchiveisDate (uri.path) -- get the url date in iso format
if 'short link' ~= udate then -- skip if short link
if udate ~= date then -- date comparison using iso format dates
date = udate;
msg = table.concat ({
inlineRed (err_warn_msgs.mismatch, 'warning'), -- add warning message
msg, -- add message if there is one
});
end
end
end
end
else -- no |date=
udate, msg = decodeArchiveisDate( uri.path, "iso" )
if udate == "short link" then
date = nil; -- unset
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
elseif '' == udate then
date = nil; -- unset
else
date = udate;
end
end
else -- some other service
if not date then
msg = inlineRed (err_warn_msgs.date_miss, 'warning');
end
end
if 'index' == date then
ulx.url1.date = date .. (msg or ''); -- create index + message (if there is one)
elseif date then
ulx.url1.date = makeDate (date, nil, nil, ldf) .. (msg or ''); -- create a date in the wiki's local language + message (if there is one)
else
ulx.url1.date = msg;
end
format = args.format; -- Format argument
if not format then
format = "none"
else
for k, v in pairs (data.format_vals) do -- |format= accepts two specific values loop through a table of those values
local found; -- declare a nil flag
for _, p in ipairs (v) do -- loop through local language variants
if format == p then -- when |format= value matches
format = k; -- use name from table key
found = true; -- declare found so that we can break out of outer for loop
break; -- break out of inner for loop
end
end
if found then
break;
end
end
if format == "addlpages" then
if not ulx.url1.date then
format = "none"
end
elseif format == "addlarchives" then
format = "addlarchives"
else
format = "none"
end
end
ulx.url1.format = format
if args.title and args.title1 then -- Title argument
return inlineError (data.crit_err_msgs.conflicting, {origin.title, origin.title1});
end
ulx.url1.title = args.title or args.title1;
local rend = createRendering()
if not rend then
return inlineError (data.crit_err_msgs.unknown);
end
return rend .. ((unnamed_params and inlineRed (err_warn_msgs.unnamed_params, 'warning')) or '') .. createTracking();
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {webarchive = webarchive};
3qlm43ohd0y7ztv8wt9uo56m0wy1fhs
Modulo:ISO 3166/datos/Nasional
828
56444
392276
392050
2022-08-18T21:37:14Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1100880103|Module:ISO 3166/data/National/1100880103]]
Scribunto
text/plain
return {
["AD"] = {alpha3="AND",numeric="020",name="Andorra"},
["AE"] = {alpha3="ARE",numeric="784",name="United Arab Emirates",altnames={"UAE"}},
["AF"] = {alpha3="AFG",numeric="004",name="Afghanistan"},
["AG"] = {alpha3="ATG",numeric="028",name="Antigua and Barbuda"},
["AI"] = {alpha3="AIA",numeric="660",name="Anguilla"},
["AL"] = {alpha3="ALB",numeric="008",name="Albania"},
["AM"] = {alpha3="ARM",numeric="051",name="Armenia"},
["AO"] = {alpha3="AGO",numeric="024",name="Angola"},
["AQ"] = {alpha3="ATA",numeric="010",name="Antarctica"},
["AR"] = {alpha3="ARG",numeric="032",name="Argentina"},
["AS"] = {alpha3="ASM",numeric="016",name="American Samoa"},
["AT"] = {alpha3="AUT",numeric="040",name="Austria"},
["AU"] = {alpha3="AUS",numeric="036",name="Australia"},
["AW"] = {alpha3="ABW",numeric="533",name="Aruba"},
["AX"] = {alpha3="ALA",numeric="248",name="Åland Islands",altnames={"Aland Islands","Åland","Aland"}},
["AZ"] = {alpha3="AZE",numeric="031",name="Azerbaijan"},
["BA"] = {alpha3="BIH",numeric="070",name="Bosnia and Herzegovina",altnames={"Bosnia"}},
["BB"] = {alpha3="BRB",numeric="052",name="Barbados"},
["BD"] = {alpha3="BGD",numeric="050",name="Bangladesh"},
["BE"] = {alpha3="BEL",numeric="056",name="Belgium"},
["BF"] = {alpha3="BFA",numeric="854",name="Burkina Faso"},
["BG"] = {alpha3="BGR",numeric="100",name="Bulgaria"},
["BH"] = {alpha3="BHR",numeric="048",name="Bahrain"},
["BI"] = {alpha3="BDI",numeric="108",name="Burundi"},
["BJ"] = {alpha3="BEN",numeric="204",name="Benin"},
["BL"] = {alpha3="BLM",numeric="652",name="Saint Barthélemy",altnames={"St Barthelemy"}},
["BM"] = {alpha3="BMU",numeric="060",name="Bermuda"},
["BN"] = {alpha3="BRN",numeric="096",name="Brunei",isoname="Brunei Darussalam"},
["BO"] = {alpha3="BOL",numeric="068",name="Bolivia",isoname="Bolivia (Plurinational State of)"},
["BQ"] = {alpha3="BES",numeric="535",name="Caribbean Netherlands",isoname="Bonaire, Sint Eustatius and Saba"},
["BR"] = {alpha3="BRA",numeric="076",name="Brasil"},
["BS"] = {alpha3="BHS",numeric="044",name="Bahamas"},
["BT"] = {alpha3="BTN",numeric="064",name="Bhutan"},
["BV"] = {alpha3="BVT",numeric="074",name="Bouvet Island"},
["BW"] = {alpha3="BWA",numeric="072",name="Botswana"},
["BY"] = {alpha3="BLR",numeric="112",name="Belarus"},
["BZ"] = {alpha3="BLZ",numeric="084",name="Belize"},
["CA"] = {alpha3="CAN",numeric="124",name="Canada"},
["CC"] = {alpha3="CCK",numeric="166",name="Cocos (Keeling) Islands",altnames={"Cocos Islands","Keeling Islands"}},
["CD"] = {alpha3="COD",numeric="180",name="Democratic Republic of the Congo",isoname="Congo, Democratic Republic of the",altnames={"Congo-Kinshasa","DRC","DR Congo"}},
["CF"] = {alpha3="CAF",numeric="140",name="Central African Republic",altnames={"CAR"}},
["CG"] = {alpha3="COG",numeric="178",name="Republic of the Congo",isoname="Congo",altnames={"Congo-Brazzaville"}},
["CH"] = {alpha3="CHE",numeric="756",name="Switzerland"},
["CI"] = {alpha3="CIV",numeric="384",name="Côte d'Ivoire",altnames={"Ivory Coast"}},
["CK"] = {alpha3="COK",numeric="184",name="Cook Islands"},
["CL"] = {alpha3="CHL",numeric="152",name="Chile"},
["CM"] = {alpha3="CMR",numeric="120",name="Cameroon"},
["CN"] = {alpha3="CHN",numeric="156",name="China",altnames={"People's Republic of China","PRC"}},
["CO"] = {alpha3="COL",numeric="170",name="Colombia"},
["CR"] = {alpha3="CRI",numeric="188",name="Costa Rica"},
["CU"] = {alpha3="CUB",numeric="192",name="Cuba"},
["CV"] = {alpha3="CPV",numeric="132",name="Cabo Verde",altnames={"Cape Verde"}},
["CW"] = {alpha3="CUW",numeric="531",name="Curaçao",altnames={"Curacao"}},
["CX"] = {alpha3="CXR",numeric="162",name="Christmas Island"},
["CY"] = {alpha3="CYP",numeric="196",name="Cyprus"},
["CZ"] = {alpha3="CZE",numeric="203",name="Czech Republic",isoname="Czechia"},
["DE"] = {alpha3="DEU",numeric="276",name="Germany"},
["DJ"] = {alpha3="DJI",numeric="262",name="Djibouti"},
["DK"] = {alpha3="DNK",numeric="208",name="Denmark"},
["DM"] = {alpha3="DMA",numeric="212",name="Dominica"},
["DO"] = {alpha3="DOM",numeric="214",name="Dominican Republic"},
["DZ"] = {alpha3="DZA",numeric="012",name="Algeria"},
["EC"] = {alpha3="ECU",numeric="218",name="Ecuador"},
["EE"] = {alpha3="EST",numeric="233",name="Estonia"},
["EG"] = {alpha3="EGY",numeric="818",name="Egypt"},
["EH"] = {alpha3="ESH",numeric="732",name="Western Sahara"},
["ER"] = {alpha3="ERI",numeric="232",name="Eritrea"},
["ES"] = {alpha3="ESP",numeric="724",name="Spain"},
["ET"] = {alpha3="ETH",numeric="231",name="Ethiopia"},
["FI"] = {alpha3="FIN",numeric="246",name="Finland"},
["FJ"] = {alpha3="FJI",numeric="242",name="Fiji"},
["FK"] = {alpha3="FLK",numeric="238",name="Falkland Islands",isoname="Falkland Islands (Malvinas)",altnames={"Falklands","Islas Malvinas","Malvinas","Malvinas Islands"}},
["FM"] = {alpha3="FSM",numeric="583",name="Federated States of Micronesia",isoname="Micronesia (Federated States of)",altnames={"Micronesia"}},
["FO"] = {alpha3="FRO",numeric="234",name="Faroe Islands",altnames={"Faroer","Faeroer"}},
["FR"] = {alpha3="FRA",numeric="250",name="France"},
["GA"] = {alpha3="GAB",numeric="266",name="Gabon"},
["GB"] = {alpha3="GBR",numeric="826",name="United Kingdom",isoname="United Kingdom of Great Britain and Northern Ireland",altnames={"UK","Great Britain"}},
["GB-ENG"] = {alpha3="ENG",numeric="000",name="England"}, --Considered to be a country
["GB-NIR"] = {alpha3="NIR",numeric="000",name="Northern Ireland"}, --Considered to be a country
["GB-SCT"] = {alpha3="SCT",numeric="000",name="Scotland"}, --Considered to be a country
["GB-WLS"] = {alpha3="WLS",numeric="000",name="Wales"}, --Considered to be a country
["GB-EAW"] = {alpha3="EAW",numeric="000",name="England and Wales"}, --Considered to be a country
["GD"] = {alpha3="GRD",numeric="308",name="Grenada"},
["GE"] = {alpha3="GEO",numeric="268",name="Georgia"},
["GF"] = {alpha3="GUF",numeric="254",name="French Guiana"},
["GG"] = {alpha3="GGY",numeric="831",name="Guernsey"},
["GH"] = {alpha3="GHA",numeric="288",name="Ghana"},
["GI"] = {alpha3="GIB",numeric="292",name="Gibraltar"},
["GL"] = {alpha3="GRL",numeric="304",name="Greenland"},
["GM"] = {alpha3="GMB",numeric="270",name="Gambia"},
["GN"] = {alpha3="GIN",numeric="324",name="Guinea"},
["GP"] = {alpha3="GLP",numeric="312",name="Guadeloupe"},
["GQ"] = {alpha3="GNQ",numeric="226",name="Equatorial Guinea"},
["GR"] = {alpha3="GRC",numeric="300",name="Greece"},
["GS"] = {alpha3="SGS",numeric="239",name="South Georgia and the South Sandwich Islands"},
["GT"] = {alpha3="GTM",numeric="320",name="Guatemala"},
["GU"] = {alpha3="GUM",numeric="316",name="Guam"},
["GW"] = {alpha3="GNB",numeric="624",name="Guinea-Bissau"},
["GY"] = {alpha3="GUY",numeric="328",name="Guyana"},
["HK"] = {alpha3="HKG",numeric="344",name="Hong Kong",altnames={"Hong Kong SAR","HKSAR"}},
["HM"] = {alpha3="HMD",numeric="334",name="Heard Island and McDonald Islands",altnames={"Heard and McDonald Islands"}},
["HN"] = {alpha3="HND",numeric="340",name="Honduras"},
["HR"] = {alpha3="HRV",numeric="191",name="Croatia"},
["HT"] = {alpha3="HTI",numeric="332",name="Haiti"},
["HU"] = {alpha3="HUN",numeric="348",name="Hungary"},
["ID"] = {alpha3="IDN",numeric="360",name="Indonesia"},
["IE"] = {alpha3="IRL",numeric="372",name="Ireland",altnames={"Republic of Ireland"}},
["IL"] = {alpha3="ISR",numeric="376",name="Israel"},
["IM"] = {alpha3="IMN",numeric="833",name="Isle of Man"},
["IN"] = {alpha3="IND",numeric="356",name="India"},
["IO"] = {alpha3="IOT",numeric="086",name="British Indian Ocean Territory"},
["IQ"] = {alpha3="IRQ",numeric="368",name="Iraq"},
["IR"] = {alpha3="IRN",numeric="364",name="Iran",isoname="Iran (Islamic Republic of)"},
["IS"] = {alpha3="ISL",numeric="352",name="Iceland"},
["IT"] = {alpha3="ITA",numeric="380",name="Italy"},
["JE"] = {alpha3="JEY",numeric="832",name="Jersey"},
["JM"] = {alpha3="JAM",numeric="388",name="Jamaica"},
["JO"] = {alpha3="JOR",numeric="400",name="Jordan"},
["JP"] = {alpha3="JPN",numeric="392",name="Japan"},
["KE"] = {alpha3="KEN",numeric="404",name="Kenya"},
["KG"] = {alpha3="KGZ",numeric="417",name="Kyrgyzstan"},
["KH"] = {alpha3="KHM",numeric="116",name="Cambodia"},
["KI"] = {alpha3="KIR",numeric="296",name="Kiribati"},
["KM"] = {alpha3="COM",numeric="174",name="Comoros"},
["KN"] = {alpha3="KNA",numeric="659",name="Saint Kitts and Nevis",altnames={"St Kitts and Nevis"}},
["KP"] = {alpha3="PRK",numeric="408",name="North Korea",isoname="Korea (Democratic People's Republic of)",altnames={"Democratic People's Republic of Korea"}},
["KR"] = {alpha3="KOR",numeric="410",name="South Korea",isoname="Korea, Republic of",altnames={"Republic of Korea"}},
["KW"] = {alpha3="KWT",numeric="414",name="Kuwait"},
["KY"] = {alpha3="CYM",numeric="136",name="Cayman Islands"},
["KZ"] = {alpha3="KAZ",numeric="398",name="Kazakhstan"},
["LA"] = {alpha3="LAO",numeric="418",name="Laos",isoname="Lao People's Democratic Republic"},
["LB"] = {alpha3="LBN",numeric="422",name="Lebanon"},
["LC"] = {alpha3="LCA",numeric="662",name="Saint Lucia",altnames={"St Lucia"}},
["LI"] = {alpha3="LIE",numeric="438",name="Liechtenstein"},
["LK"] = {alpha3="LKA",numeric="144",name="Sri Lanka"},
["LR"] = {alpha3="LBR",numeric="430",name="Liberia"},
["LS"] = {alpha3="LSO",numeric="426",name="Lesotho"},
["LT"] = {alpha3="LTU",numeric="440",name="Lithuania"},
["LU"] = {alpha3="LUX",numeric="442",name="Luxembourg"},
["LV"] = {alpha3="LVA",numeric="428",name="Latvia"},
["LY"] = {alpha3="LBY",numeric="434",name="Libya"},
["MA"] = {alpha3="MAR",numeric="504",name="Morocco"},
["MC"] = {alpha3="MCO",numeric="492",name="Monaco"},
["MD"] = {alpha3="MDA",numeric="498",name="Moldova",isoname="Moldova, Republic of"},
["ME"] = {alpha3="MNE",numeric="499",name="Montenegro"},
["MF"] = {alpha3="MAF",numeric="663",name="Saint-Martin",isoname="Saint Martin (French part)",altnames={"St Martin","St Martin (French part)","Collectivity of Saint Martin","Collectivity of St Martin"}},
["MG"] = {alpha3="MDG",numeric="450",name="Madagascar"},
["MH"] = {alpha3="MHL",numeric="584",name="Marshall Islands"},
["MK"] = {alpha3="MKD",numeric="807",name="North Macedonia",altnames={"Republic of North Macedonia","Macedonia","Republic of Macedonia","Macedonia, the former Yugoslav Republic of"}},
["ML"] = {alpha3="MLI",numeric="466",name="Mali"},
["MM"] = {alpha3="MMR",numeric="104",name="Myanmar",altnames={"Burma"}},
["MN"] = {alpha3="MNG",numeric="496",name="Mongolia"},
["MO"] = {alpha3="MAC",numeric="446",name="Macau",isoname="Macao",altnames={"Macau SAR","Macao SAR"}},
["MP"] = {alpha3="MNP",numeric="580",name="Northern Mariana Islands"},
["MQ"] = {alpha3="MTQ",numeric="474",name="Martinique"},
["MR"] = {alpha3="MRT",numeric="478",name="Mauritania"},
["MS"] = {alpha3="MSR",numeric="500",name="Montserrat"},
["MT"] = {alpha3="MLT",numeric="470",name="Malta"},
["MU"] = {alpha3="MUS",numeric="480",name="Mauritius"},
["MV"] = {alpha3="MDV",numeric="462",name="Maldives"},
["MW"] = {alpha3="MWI",numeric="454",name="Malawi"},
["MX"] = {alpha3="MEX",numeric="484",name="Mexico"},
["MY"] = {alpha3="MYS",numeric="458",name="Malaysia"},
["MZ"] = {alpha3="MOZ",numeric="508",name="Mozambique"},
["NA"] = {alpha3="NAM",numeric="516",name="Namibia"},
["NC"] = {alpha3="NCL",numeric="540",name="New Caledonia"},
["NE"] = {alpha3="NER",numeric="562",name="Niger"},
["NF"] = {alpha3="NFK",numeric="574",name="Norfolk Island"},
["NG"] = {alpha3="NGA",numeric="566",name="Nigeria"},
["NI"] = {alpha3="NIC",numeric="558",name="Nicaragua"},
["NL"] = {alpha3="NLD",numeric="528",name="Netherlands"},
["NO"] = {alpha3="NOR",numeric="578",name="Norway"},
["NP"] = {alpha3="NPL",numeric="524",name="Nepal"},
["NR"] = {alpha3="NRU",numeric="520",name="Nauru"},
["NU"] = {alpha3="NIU",numeric="570",name="Niue"},
["NZ"] = {alpha3="NZL",numeric="554",name="New Zealand",altnames={"Aotearoa"}},
["OM"] = {alpha3="OMN",numeric="512",name="Oman"},
["PA"] = {alpha3="PAN",numeric="591",name="Panama"},
["PE"] = {alpha3="PER",numeric="604",name="Peru"},
["PF"] = {alpha3="PYF",numeric="258",name="French Polynesia"},
["PG"] = {alpha3="PNG",numeric="598",name="Papua New Guinea"},
["PH"] = {alpha3="PHL",numeric="608",name="Filipinas"},
["PK"] = {alpha3="PAK",numeric="586",name="Pakistan"},
["PL"] = {alpha3="POL",numeric="616",name="Poland"},
["PM"] = {alpha3="SPM",numeric="666",name="Saint Pierre and Miquelon",altnames={"St Pierre and Miquelon"}},
["PN"] = {alpha3="PCN",numeric="612",name="Pitcairn"},
["PR"] = {alpha3="PRI",numeric="630",name="Puerto Rico"},
["PS"] = {alpha3="PSE",numeric="275",name="Palestine",isoname="Palestine, State of",altnames={"State of Palestine"}},
["PT"] = {alpha3="PRT",numeric="620",name="Portugal"},
["PW"] = {alpha3="PLW",numeric="585",name="Palau"},
["PY"] = {alpha3="PRY",numeric="600",name="Paraguay"},
["QA"] = {alpha3="QAT",numeric="634",name="Qatar"},
["RE"] = {alpha3="REU",numeric="638",name="Réunion"},
["RO"] = {alpha3="ROU",numeric="642",name="Romania"},
["RS"] = {alpha3="SRB",numeric="688",name="Serbia"},
["RU"] = {alpha3="RUS",numeric="643",name="Russia",isoname="Russian Federation"},
["RW"] = {alpha3="RWA",numeric="646",name="Rwanda"},
["SA"] = {alpha3="SAU",numeric="682",name="Saudi Arabia"},
["SB"] = {alpha3="SLB",numeric="090",name="Solomon Islands"},
["SC"] = {alpha3="SYC",numeric="690",name="Seychelles"},
["SD"] = {alpha3="SDN",numeric="729",name="Sudan"},
["SE"] = {alpha3="SWE",numeric="752",name="Sweden"},
["SG"] = {alpha3="SGP",numeric="702",name="Singapore"},
["SH"] = {alpha3="SHN",numeric="654",name="Saint Helena, Ascension and Tristan da Cunha"},
["SI"] = {alpha3="SVN",numeric="705",name="Slovenia"},
["SJ"] = {alpha3="SJM",numeric="744",name="Svalbard and Jan Mayen"},
["SK"] = {alpha3="SVK",numeric="703",name="Slovakia"},
["SL"] = {alpha3="SLE",numeric="694",name="Sierra Leone"},
["SM"] = {alpha3="SMR",numeric="674",name="San Marino"},
["SN"] = {alpha3="SEN",numeric="686",name="Senegal"},
["SO"] = {alpha3="SOM",numeric="706",name="Somalia"},
["SR"] = {alpha3="SUR",numeric="740",name="Suriname"},
["SS"] = {alpha3="SSD",numeric="728",name="South Sudan"},
["ST"] = {alpha3="STP",numeric="678",name="São Tomé and Príncipe",isoname="Sao Tome and Principe",altnames={"Democratic Republic of Sao Tome and Principe"}},
["SV"] = {alpha3="SLV",numeric="222",name="El Salvador"},
["SX"] = {alpha3="SXM",numeric="534",name="Sint Maarten",isoname="Sint Maarten (Dutch part)",altnames={"St Maarten","Saint Martin (Dutch part)","St Martin (Dutch part)"}},
["SY"] = {alpha3="SYR",numeric="760",name="Syria",isoname="Syrian Arab Republic"},
["SZ"] = {alpha3="SWZ",numeric="748",name="Eswatini",altnames={"Swaziland"}},
["TC"] = {alpha3="TCA",numeric="796",name="Turks and Caicos Islands"},
["TD"] = {alpha3="TCD",numeric="148",name="Chad"},
["TF"] = {alpha3="ATF",numeric="260",name="French Southern and Antarctic Lands",isoname="French Southern Territories"},
["TG"] = {alpha3="TGO",numeric="768",name="Togo"},
["TH"] = {alpha3="THA",numeric="764",name="Thailand"},
["TJ"] = {alpha3="TJK",numeric="762",name="Tajikistan"},
["TK"] = {alpha3="TKL",numeric="772",name="Tokelau"},
["TL"] = {alpha3="TLS",numeric="626",name="Timor-Leste",altnames={"East Timor"}},
["TM"] = {alpha3="TKM",numeric="795",name="Turkmenistan"},
["TN"] = {alpha3="TUN",numeric="788",name="Tunisia"},
["TO"] = {alpha3="TON",numeric="776",name="Tonga"},
["TR"] = {alpha3="TUR",numeric="792",name="Turkey",isoname="Türkiye"},
["TT"] = {alpha3="TTO",numeric="780",name="Trinidad and Tobago"},
["TV"] = {alpha3="TUV",numeric="798",name="Tuvalu"},
["TW"] = {alpha3="TWN",numeric="158",name="Taiwan",isoname="Taiwan, Province of China",altnames={"Republic of China"}},
["TZ"] = {alpha3="TZA",numeric="834",name="Tanzania",isoname="Tanzania, United Republic of"},
["UA"] = {alpha3="UKR",numeric="804",name="Ukraine"},
["UG"] = {alpha3="UGA",numeric="800",name="Uganda"},
["UM"] = {alpha3="UMI",numeric="581",name="United States Minor Outlying Islands"},
["US"] = {alpha3="USA",numeric="840",name="Estados Unidos",isoname="United States of America",altnames={"US","USA","U.S."}},
["UY"] = {alpha3="URY",numeric="858",name="Uruguay"},
["UZ"] = {alpha3="UZB",numeric="860",name="Uzbekistan"},
["VA"] = {alpha3="VAT",numeric="336",name="Vatican City",isoname="Holy See",altnames={"Holy See (Vatican City State)","Vatican City State"}},
["VC"] = {alpha3="VCT",numeric="670",name="Saint Vincent and the Grenadines",altnames={"St Vincent and the Grenadines"}},
["VE"] = {alpha3="VEN",numeric="862",name="Venezuela",isoname="Venezuela (Bolivarian Republic of)"},
["VG"] = {alpha3="VGB",numeric="092",name="British Virgin Islands",isoname="Virgin Islands (British)",altnames={"UK Virgin Islands","BVI"}},
["VI"] = {alpha3="VIR",numeric="850",name="United States Virgin Islands",isoname="Virgin Islands (U.S.)",altnames={"US Virgin Islands","USVI"}},
["VN"] = {alpha3="VNM",numeric="704",name="Vietnam",isoname="Viet Nam"},
["VU"] = {alpha3="VUT",numeric="548",name="Vanuatu"},
["WF"] = {alpha3="WLF",numeric="876",name="Wallis and Futuna"},
["WS"] = {alpha3="WSM",numeric="882",name="Samoa"},
["YE"] = {alpha3="YEM",numeric="887",name="Yemen"},
["YT"] = {alpha3="MYT",numeric="175",name="Mayotte"},
["ZA"] = {alpha3="ZAF",numeric="710",name="South Africa"},
["ZM"] = {alpha3="ZMB",numeric="894",name="Zambia"},
["ZW"] = {alpha3="ZWE",numeric="716",name="Zimbabwe"}
}
tic2ssxw5dw3lzwk34czl7uzm8hhior
Modulo:ISO 3166/datos/Nasional/pagipadasan
828
59053
392275
392049
2022-08-18T21:36:34Z
Lam-ang
3622
Pinabaro manipud iti [[:en:Special:PermanentLink/1100880103|Module:ISO 3166/data/National/1100880103]]
Scribunto
text/plain
return {
["AD"] = {alpha3="AND",numeric="020",name="Andorra"},
["AE"] = {alpha3="ARE",numeric="784",name="United Arab Emirates",altnames={"UAE"}},
["AF"] = {alpha3="AFG",numeric="004",name="Afghanistan"},
["AG"] = {alpha3="ATG",numeric="028",name="Antigua and Barbuda"},
["AI"] = {alpha3="AIA",numeric="660",name="Anguilla"},
["AL"] = {alpha3="ALB",numeric="008",name="Albania"},
["AM"] = {alpha3="ARM",numeric="051",name="Armenia"},
["AO"] = {alpha3="AGO",numeric="024",name="Angola"},
["AQ"] = {alpha3="ATA",numeric="010",name="Antarctica"},
["AR"] = {alpha3="ARG",numeric="032",name="Argentina"},
["AS"] = {alpha3="ASM",numeric="016",name="American Samoa"},
["AT"] = {alpha3="AUT",numeric="040",name="Austria"},
["AU"] = {alpha3="AUS",numeric="036",name="Australia"},
["AW"] = {alpha3="ABW",numeric="533",name="Aruba"},
["AX"] = {alpha3="ALA",numeric="248",name="Åland Islands",altnames={"Aland Islands","Åland","Aland"}},
["AZ"] = {alpha3="AZE",numeric="031",name="Azerbaijan"},
["BA"] = {alpha3="BIH",numeric="070",name="Bosnia and Herzegovina",altnames={"Bosnia"}},
["BB"] = {alpha3="BRB",numeric="052",name="Barbados"},
["BD"] = {alpha3="BGD",numeric="050",name="Bangladesh"},
["BE"] = {alpha3="BEL",numeric="056",name="Belgium"},
["BF"] = {alpha3="BFA",numeric="854",name="Burkina Faso"},
["BG"] = {alpha3="BGR",numeric="100",name="Bulgaria"},
["BH"] = {alpha3="BHR",numeric="048",name="Bahrain"},
["BI"] = {alpha3="BDI",numeric="108",name="Burundi"},
["BJ"] = {alpha3="BEN",numeric="204",name="Benin"},
["BL"] = {alpha3="BLM",numeric="652",name="Saint Barthélemy",altnames={"St Barthelemy"}},
["BM"] = {alpha3="BMU",numeric="060",name="Bermuda"},
["BN"] = {alpha3="BRN",numeric="096",name="Brunei",isoname="Brunei Darussalam"},
["BO"] = {alpha3="BOL",numeric="068",name="Bolivia",isoname="Bolivia (Plurinational State of)"},
["BQ"] = {alpha3="BES",numeric="535",name="Caribbean Netherlands",isoname="Bonaire, Sint Eustatius and Saba"},
["BR"] = {alpha3="BRA",numeric="076",name="Brasil"},
["BS"] = {alpha3="BHS",numeric="044",name="Bahamas"},
["BT"] = {alpha3="BTN",numeric="064",name="Bhutan"},
["BV"] = {alpha3="BVT",numeric="074",name="Bouvet Island"},
["BW"] = {alpha3="BWA",numeric="072",name="Botswana"},
["BY"] = {alpha3="BLR",numeric="112",name="Belarus"},
["BZ"] = {alpha3="BLZ",numeric="084",name="Belize"},
["CA"] = {alpha3="CAN",numeric="124",name="Canada"},
["CC"] = {alpha3="CCK",numeric="166",name="Cocos (Keeling) Islands",altnames={"Cocos Islands","Keeling Islands"}},
["CD"] = {alpha3="COD",numeric="180",name="Democratic Republic of the Congo",isoname="Congo, Democratic Republic of the",altnames={"Congo-Kinshasa","DRC","DR Congo"}},
["CF"] = {alpha3="CAF",numeric="140",name="Central African Republic",altnames={"CAR"}},
["CG"] = {alpha3="COG",numeric="178",name="Republic of the Congo",isoname="Congo",altnames={"Congo-Brazzaville"}},
["CH"] = {alpha3="CHE",numeric="756",name="Switzerland"},
["CI"] = {alpha3="CIV",numeric="384",name="Côte d'Ivoire",altnames={"Ivory Coast"}},
["CK"] = {alpha3="COK",numeric="184",name="Cook Islands"},
["CL"] = {alpha3="CHL",numeric="152",name="Chile"},
["CM"] = {alpha3="CMR",numeric="120",name="Cameroon"},
["CN"] = {alpha3="CHN",numeric="156",name="China",altnames={"People's Republic of China","PRC"}},
["CO"] = {alpha3="COL",numeric="170",name="Colombia"},
["CR"] = {alpha3="CRI",numeric="188",name="Costa Rica"},
["CU"] = {alpha3="CUB",numeric="192",name="Cuba"},
["CV"] = {alpha3="CPV",numeric="132",name="Cabo Verde",altnames={"Cape Verde"}},
["CW"] = {alpha3="CUW",numeric="531",name="Curaçao",altnames={"Curacao"}},
["CX"] = {alpha3="CXR",numeric="162",name="Christmas Island"},
["CY"] = {alpha3="CYP",numeric="196",name="Cyprus"},
["CZ"] = {alpha3="CZE",numeric="203",name="Czech Republic",isoname="Czechia"},
["DE"] = {alpha3="DEU",numeric="276",name="Germany"},
["DJ"] = {alpha3="DJI",numeric="262",name="Djibouti"},
["DK"] = {alpha3="DNK",numeric="208",name="Denmark"},
["DM"] = {alpha3="DMA",numeric="212",name="Dominica"},
["DO"] = {alpha3="DOM",numeric="214",name="Dominican Republic"},
["DZ"] = {alpha3="DZA",numeric="012",name="Algeria"},
["EC"] = {alpha3="ECU",numeric="218",name="Ecuador"},
["EE"] = {alpha3="EST",numeric="233",name="Estonia"},
["EG"] = {alpha3="EGY",numeric="818",name="Egypt"},
["EH"] = {alpha3="ESH",numeric="732",name="Western Sahara"},
["ER"] = {alpha3="ERI",numeric="232",name="Eritrea"},
["ES"] = {alpha3="ESP",numeric="724",name="Spain"},
["ET"] = {alpha3="ETH",numeric="231",name="Ethiopia"},
["FI"] = {alpha3="FIN",numeric="246",name="Finland"},
["FJ"] = {alpha3="FJI",numeric="242",name="Fiji"},
["FK"] = {alpha3="FLK",numeric="238",name="Falkland Islands",isoname="Falkland Islands (Malvinas)",altnames={"Falklands","Islas Malvinas","Malvinas","Malvinas Islands"}},
["FM"] = {alpha3="FSM",numeric="583",name="Federated States of Micronesia",isoname="Micronesia (Federated States of)",altnames={"Micronesia"}},
["FO"] = {alpha3="FRO",numeric="234",name="Faroe Islands",altnames={"Faroer","Faeroer"}},
["FR"] = {alpha3="FRA",numeric="250",name="France"},
["GA"] = {alpha3="GAB",numeric="266",name="Gabon"},
["GB"] = {alpha3="GBR",numeric="826",name="United Kingdom",isoname="United Kingdom of Great Britain and Northern Ireland",altnames={"UK","Great Britain"}},
["GB-ENG"] = {alpha3="ENG",numeric="000",name="England"}, --Considered to be a country
["GB-NIR"] = {alpha3="NIR",numeric="000",name="Northern Ireland"}, --Considered to be a country
["GB-SCT"] = {alpha3="SCT",numeric="000",name="Scotland"}, --Considered to be a country
["GB-WLS"] = {alpha3="WLS",numeric="000",name="Wales"}, --Considered to be a country
["GB-EAW"] = {alpha3="EAW",numeric="000",name="England and Wales"}, --Considered to be a country
["GD"] = {alpha3="GRD",numeric="308",name="Grenada"},
["GE"] = {alpha3="GEO",numeric="268",name="Georgia"},
["GF"] = {alpha3="GUF",numeric="254",name="French Guiana"},
["GG"] = {alpha3="GGY",numeric="831",name="Guernsey"},
["GH"] = {alpha3="GHA",numeric="288",name="Ghana"},
["GI"] = {alpha3="GIB",numeric="292",name="Gibraltar"},
["GL"] = {alpha3="GRL",numeric="304",name="Greenland"},
["GM"] = {alpha3="GMB",numeric="270",name="Gambia"},
["GN"] = {alpha3="GIN",numeric="324",name="Guinea"},
["GP"] = {alpha3="GLP",numeric="312",name="Guadeloupe"},
["GQ"] = {alpha3="GNQ",numeric="226",name="Equatorial Guinea"},
["GR"] = {alpha3="GRC",numeric="300",name="Greece"},
["GS"] = {alpha3="SGS",numeric="239",name="South Georgia and the South Sandwich Islands"},
["GT"] = {alpha3="GTM",numeric="320",name="Guatemala"},
["GU"] = {alpha3="GUM",numeric="316",name="Guam"},
["GW"] = {alpha3="GNB",numeric="624",name="Guinea-Bissau"},
["GY"] = {alpha3="GUY",numeric="328",name="Guyana"},
["HK"] = {alpha3="HKG",numeric="344",name="Hong Kong",altnames={"Hong Kong SAR","HKSAR"}},
["HM"] = {alpha3="HMD",numeric="334",name="Heard Island and McDonald Islands",altnames={"Heard and McDonald Islands"}},
["HN"] = {alpha3="HND",numeric="340",name="Honduras"},
["HR"] = {alpha3="HRV",numeric="191",name="Croatia"},
["HT"] = {alpha3="HTI",numeric="332",name="Haiti"},
["HU"] = {alpha3="HUN",numeric="348",name="Hungary"},
["ID"] = {alpha3="IDN",numeric="360",name="Indonesia"},
["IE"] = {alpha3="IRL",numeric="372",name="Ireland",altnames={"Republic of Ireland"}},
["IL"] = {alpha3="ISR",numeric="376",name="Israel"},
["IM"] = {alpha3="IMN",numeric="833",name="Isle of Man"},
["IN"] = {alpha3="IND",numeric="356",name="India"},
["IO"] = {alpha3="IOT",numeric="086",name="British Indian Ocean Territory"},
["IQ"] = {alpha3="IRQ",numeric="368",name="Iraq"},
["IR"] = {alpha3="IRN",numeric="364",name="Iran",isoname="Iran (Islamic Republic of)"},
["IS"] = {alpha3="ISL",numeric="352",name="Iceland"},
["IT"] = {alpha3="ITA",numeric="380",name="Italy"},
["JE"] = {alpha3="JEY",numeric="832",name="Jersey"},
["JM"] = {alpha3="JAM",numeric="388",name="Jamaica"},
["JO"] = {alpha3="JOR",numeric="400",name="Jordan"},
["JP"] = {alpha3="JPN",numeric="392",name="Japan"},
["KE"] = {alpha3="KEN",numeric="404",name="Kenya"},
["KG"] = {alpha3="KGZ",numeric="417",name="Kyrgyzstan"},
["KH"] = {alpha3="KHM",numeric="116",name="Cambodia"},
["KI"] = {alpha3="KIR",numeric="296",name="Kiribati"},
["KM"] = {alpha3="COM",numeric="174",name="Comoros"},
["KN"] = {alpha3="KNA",numeric="659",name="Saint Kitts and Nevis",altnames={"St Kitts and Nevis"}},
["KP"] = {alpha3="PRK",numeric="408",name="North Korea",isoname="Korea (Democratic People's Republic of)",altnames={"Democratic People's Republic of Korea"}},
["KR"] = {alpha3="KOR",numeric="410",name="South Korea",isoname="Korea, Republic of",altnames={"Republic of Korea"}},
["KW"] = {alpha3="KWT",numeric="414",name="Kuwait"},
["KY"] = {alpha3="CYM",numeric="136",name="Cayman Islands"},
["KZ"] = {alpha3="KAZ",numeric="398",name="Kazakhstan"},
["LA"] = {alpha3="LAO",numeric="418",name="Laos",isoname="Lao People's Democratic Republic"},
["LB"] = {alpha3="LBN",numeric="422",name="Lebanon"},
["LC"] = {alpha3="LCA",numeric="662",name="Saint Lucia",altnames={"St Lucia"}},
["LI"] = {alpha3="LIE",numeric="438",name="Liechtenstein"},
["LK"] = {alpha3="LKA",numeric="144",name="Sri Lanka"},
["LR"] = {alpha3="LBR",numeric="430",name="Liberia"},
["LS"] = {alpha3="LSO",numeric="426",name="Lesotho"},
["LT"] = {alpha3="LTU",numeric="440",name="Lithuania"},
["LU"] = {alpha3="LUX",numeric="442",name="Luxembourg"},
["LV"] = {alpha3="LVA",numeric="428",name="Latvia"},
["LY"] = {alpha3="LBY",numeric="434",name="Libya"},
["MA"] = {alpha3="MAR",numeric="504",name="Morocco"},
["MC"] = {alpha3="MCO",numeric="492",name="Monaco"},
["MD"] = {alpha3="MDA",numeric="498",name="Moldova",isoname="Moldova, Republic of"},
["ME"] = {alpha3="MNE",numeric="499",name="Montenegro"},
["MF"] = {alpha3="MAF",numeric="663",name="Saint-Martin",isoname="Saint Martin (French part)",altnames={"St Martin","St Martin (French part)","Collectivity of Saint Martin","Collectivity of St Martin"}},
["MG"] = {alpha3="MDG",numeric="450",name="Madagascar"},
["MH"] = {alpha3="MHL",numeric="584",name="Marshall Islands"},
["MK"] = {alpha3="MKD",numeric="807",name="North Macedonia",altnames={"Republic of North Macedonia","Macedonia","Republic of Macedonia","Macedonia, the former Yugoslav Republic of"}},
["ML"] = {alpha3="MLI",numeric="466",name="Mali"},
["MM"] = {alpha3="MMR",numeric="104",name="Myanmar",altnames={"Burma"}},
["MN"] = {alpha3="MNG",numeric="496",name="Mongolia"},
["MO"] = {alpha3="MAC",numeric="446",name="Macau",isoname="Macao",altnames={"Macau SAR","Macao SAR"}},
["MP"] = {alpha3="MNP",numeric="580",name="Northern Mariana Islands"},
["MQ"] = {alpha3="MTQ",numeric="474",name="Martinique"},
["MR"] = {alpha3="MRT",numeric="478",name="Mauritania"},
["MS"] = {alpha3="MSR",numeric="500",name="Montserrat"},
["MT"] = {alpha3="MLT",numeric="470",name="Malta"},
["MU"] = {alpha3="MUS",numeric="480",name="Mauritius"},
["MV"] = {alpha3="MDV",numeric="462",name="Maldives"},
["MW"] = {alpha3="MWI",numeric="454",name="Malawi"},
["MX"] = {alpha3="MEX",numeric="484",name="Mexico"},
["MY"] = {alpha3="MYS",numeric="458",name="Malaysia"},
["MZ"] = {alpha3="MOZ",numeric="508",name="Mozambique"},
["NA"] = {alpha3="NAM",numeric="516",name="Namibia"},
["NC"] = {alpha3="NCL",numeric="540",name="New Caledonia"},
["NE"] = {alpha3="NER",numeric="562",name="Niger"},
["NF"] = {alpha3="NFK",numeric="574",name="Norfolk Island"},
["NG"] = {alpha3="NGA",numeric="566",name="Nigeria"},
["NI"] = {alpha3="NIC",numeric="558",name="Nicaragua"},
["NL"] = {alpha3="NLD",numeric="528",name="Netherlands"},
["NO"] = {alpha3="NOR",numeric="578",name="Norway"},
["NP"] = {alpha3="NPL",numeric="524",name="Nepal"},
["NR"] = {alpha3="NRU",numeric="520",name="Nauru"},
["NU"] = {alpha3="NIU",numeric="570",name="Niue"},
["NZ"] = {alpha3="NZL",numeric="554",name="New Zealand",altnames={"Aotearoa"}},
["OM"] = {alpha3="OMN",numeric="512",name="Oman"},
["PA"] = {alpha3="PAN",numeric="591",name="Panama"},
["PE"] = {alpha3="PER",numeric="604",name="Peru"},
["PF"] = {alpha3="PYF",numeric="258",name="French Polynesia"},
["PG"] = {alpha3="PNG",numeric="598",name="Papua New Guinea"},
["PH"] = {alpha3="PHL",numeric="608",name="Filipinas"},
["PK"] = {alpha3="PAK",numeric="586",name="Pakistan"},
["PL"] = {alpha3="POL",numeric="616",name="Poland"},
["PM"] = {alpha3="SPM",numeric="666",name="Saint Pierre and Miquelon",altnames={"St Pierre and Miquelon"}},
["PN"] = {alpha3="PCN",numeric="612",name="Pitcairn"},
["PR"] = {alpha3="PRI",numeric="630",name="Puerto Rico"},
["PS"] = {alpha3="PSE",numeric="275",name="Palestine",isoname="Palestine, State of",altnames={"State of Palestine"}},
["PT"] = {alpha3="PRT",numeric="620",name="Portugal"},
["PW"] = {alpha3="PLW",numeric="585",name="Palau"},
["PY"] = {alpha3="PRY",numeric="600",name="Paraguay"},
["QA"] = {alpha3="QAT",numeric="634",name="Qatar"},
["RE"] = {alpha3="REU",numeric="638",name="Réunion"},
["RO"] = {alpha3="ROU",numeric="642",name="Romania"},
["RS"] = {alpha3="SRB",numeric="688",name="Serbia"},
["RU"] = {alpha3="RUS",numeric="643",name="Russia",isoname="Russian Federation"},
["RW"] = {alpha3="RWA",numeric="646",name="Rwanda"},
["SA"] = {alpha3="SAU",numeric="682",name="Saudi Arabia"},
["SB"] = {alpha3="SLB",numeric="090",name="Solomon Islands"},
["SC"] = {alpha3="SYC",numeric="690",name="Seychelles"},
["SD"] = {alpha3="SDN",numeric="729",name="Sudan"},
["SE"] = {alpha3="SWE",numeric="752",name="Sweden"},
["SG"] = {alpha3="SGP",numeric="702",name="Singapore"},
["SH"] = {alpha3="SHN",numeric="654",name="Saint Helena, Ascension and Tristan da Cunha"},
["SI"] = {alpha3="SVN",numeric="705",name="Slovenia"},
["SJ"] = {alpha3="SJM",numeric="744",name="Svalbard and Jan Mayen"},
["SK"] = {alpha3="SVK",numeric="703",name="Slovakia"},
["SL"] = {alpha3="SLE",numeric="694",name="Sierra Leone"},
["SM"] = {alpha3="SMR",numeric="674",name="San Marino"},
["SN"] = {alpha3="SEN",numeric="686",name="Senegal"},
["SO"] = {alpha3="SOM",numeric="706",name="Somalia"},
["SR"] = {alpha3="SUR",numeric="740",name="Suriname"},
["SS"] = {alpha3="SSD",numeric="728",name="South Sudan"},
["ST"] = {alpha3="STP",numeric="678",name="São Tomé and Príncipe",isoname="Sao Tome and Principe",altnames={"Democratic Republic of Sao Tome and Principe"}},
["SV"] = {alpha3="SLV",numeric="222",name="El Salvador"},
["SX"] = {alpha3="SXM",numeric="534",name="Sint Maarten",isoname="Sint Maarten (Dutch part)",altnames={"St Maarten","Saint Martin (Dutch part)","St Martin (Dutch part)"}},
["SY"] = {alpha3="SYR",numeric="760",name="Syria",isoname="Syrian Arab Republic"},
["SZ"] = {alpha3="SWZ",numeric="748",name="Eswatini",altnames={"Swaziland"}},
["TC"] = {alpha3="TCA",numeric="796",name="Turks and Caicos Islands"},
["TD"] = {alpha3="TCD",numeric="148",name="Chad"},
["TF"] = {alpha3="ATF",numeric="260",name="French Southern and Antarctic Lands",isoname="French Southern Territories"},
["TG"] = {alpha3="TGO",numeric="768",name="Togo"},
["TH"] = {alpha3="THA",numeric="764",name="Thailand"},
["TJ"] = {alpha3="TJK",numeric="762",name="Tajikistan"},
["TK"] = {alpha3="TKL",numeric="772",name="Tokelau"},
["TL"] = {alpha3="TLS",numeric="626",name="Timor-Leste",altnames={"East Timor"}},
["TM"] = {alpha3="TKM",numeric="795",name="Turkmenistan"},
["TN"] = {alpha3="TUN",numeric="788",name="Tunisia"},
["TO"] = {alpha3="TON",numeric="776",name="Tonga"},
["TR"] = {alpha3="TUR",numeric="792",name="Turkey",isoname="Türkiye"},
["TT"] = {alpha3="TTO",numeric="780",name="Trinidad and Tobago"},
["TV"] = {alpha3="TUV",numeric="798",name="Tuvalu"},
["TW"] = {alpha3="TWN",numeric="158",name="Taiwan",isoname="Taiwan, Province of China",altnames={"Republic of China"}},
["TZ"] = {alpha3="TZA",numeric="834",name="Tanzania",isoname="Tanzania, United Republic of"},
["UA"] = {alpha3="UKR",numeric="804",name="Ukraine"},
["UG"] = {alpha3="UGA",numeric="800",name="Uganda"},
["UM"] = {alpha3="UMI",numeric="581",name="United States Minor Outlying Islands"},
["US"] = {alpha3="USA",numeric="840",name="Estados Unidos",isoname="United States of America",altnames={"US","USA","U.S."}},
["UY"] = {alpha3="URY",numeric="858",name="Uruguay"},
["UZ"] = {alpha3="UZB",numeric="860",name="Uzbekistan"},
["VA"] = {alpha3="VAT",numeric="336",name="Vatican City",isoname="Holy See",altnames={"Holy See (Vatican City State)","Vatican City State"}},
["VC"] = {alpha3="VCT",numeric="670",name="Saint Vincent and the Grenadines",altnames={"St Vincent and the Grenadines"}},
["VE"] = {alpha3="VEN",numeric="862",name="Venezuela",isoname="Venezuela (Bolivarian Republic of)"},
["VG"] = {alpha3="VGB",numeric="092",name="British Virgin Islands",isoname="Virgin Islands (British)",altnames={"UK Virgin Islands","BVI"}},
["VI"] = {alpha3="VIR",numeric="850",name="United States Virgin Islands",isoname="Virgin Islands (U.S.)",altnames={"US Virgin Islands","USVI"}},
["VN"] = {alpha3="VNM",numeric="704",name="Vietnam",isoname="Viet Nam"},
["VU"] = {alpha3="VUT",numeric="548",name="Vanuatu"},
["WF"] = {alpha3="WLF",numeric="876",name="Wallis and Futuna"},
["WS"] = {alpha3="WSM",numeric="882",name="Samoa"},
["YE"] = {alpha3="YEM",numeric="887",name="Yemen"},
["YT"] = {alpha3="MYT",numeric="175",name="Mayotte"},
["ZA"] = {alpha3="ZAF",numeric="710",name="South Africa"},
["ZM"] = {alpha3="ZMB",numeric="894",name="Zambia"},
["ZW"] = {alpha3="ZWE",numeric="716",name="Zimbabwe"}
}
tic2ssxw5dw3lzwk34czl7uzm8hhior
Agar-aramat tungtungan:Velimir Ivanovic
3
81033
392272
392264
2022-08-18T21:24:07Z
Lam-ang
3622
-lint error
wikitext
text/x-wiki
== Global ban proposal notification ==
Apologies for writing in English. {{int:Please-translate}}
There is an on-going discussion about a proposal that you be globally banned from editing all Wikimedia projects. You are invited to participate at [[:m:Requests for comment/Global ban for Velimir Ivanovic|Requests for comment/Global ban for Velimir Ivanovic]] on Meta-Wiki. {{int:Feedback-thanks-title}} [[Agar-aramat:Liuxinyu970226|Liuxinyu970226]] ([[Agar-aramat tungtungan:Liuxinyu970226|tungtungan]]) 04:59, 11 Agosto 2022 (UTC)
edd38o6j4iwtyjnugz54ft56l0of6od
Agar-aramat tungtungan:Túrelio
3
81036
392273
2022-08-18T21:25:12Z
Lam-ang
3622
Naragsak nga isasangbay!
wikitext
text/x-wiki
<div class="kablaaw">
<strong>Kablaaw, Túrelio!</strong>
Naragsak nga isasangbay ditoy Ilokano Wikipedia, ken agyamankami kadagiti [[Espesial:Contributions/Túrelio|inar-aramidmo]]. Adda dita baba dagiti panid a mabalin a makatulong kenka:
{{Kablaaw/tulong}}
* For non-Ilokano speakers, '''Welcome''', if you need help you may seek assistance at [[Wikipedia:Help for non-Ilokano speakers]] or leave a message at my [[Agar-aramat tungtungan:Lam-ang|talk page]].
No adda dagiti ania man a saludsodmo, pangngaasi a damagem kaniak idiay [[Agar-aramat tungtungan:Lam-ang|tungtungan ti panidko]]. Sige, kablaaw manen, ken adda namnamak nga agnam-ayka ken agbalinka a nagaget nga agobra ditoy.--[[Agar-aramat:Lam-ang|Lam-ang]]<sup>([[Agar-aramat tungtungan:Lam-ang|Makipatang]])</sup> 21:25, 18 Agosto 2022 (UTC)
</div>
m4gelmbbrk4xpmn2e4j7daulmwz2ovm
Agar-aramat tungtungan:Liuxinyu970226
3
81037
392274
2022-08-18T21:25:37Z
Lam-ang
3622
Naragsak nga isasangbay!
wikitext
text/x-wiki
<div class="kablaaw">
<strong>Kablaaw, Liuxinyu970226!</strong>
Naragsak nga isasangbay ditoy Ilokano Wikipedia, ken agyamankami kadagiti [[Espesial:Contributions/Liuxinyu970226|inar-aramidmo]]. Adda dita baba dagiti panid a mabalin a makatulong kenka:
{{Kablaaw/tulong}}
* For non-Ilokano speakers, '''Welcome''', if you need help you may seek assistance at [[Wikipedia:Help for non-Ilokano speakers]] or leave a message at my [[Agar-aramat tungtungan:Lam-ang|talk page]].
No adda dagiti ania man a saludsodmo, pangngaasi a damagem kaniak idiay [[Agar-aramat tungtungan:Lam-ang|tungtungan ti panidko]]. Sige, kablaaw manen, ken adda namnamak nga agnam-ayka ken agbalinka a nagaget nga agobra ditoy.--[[Agar-aramat:Lam-ang|Lam-ang]]<sup>([[Agar-aramat tungtungan:Lam-ang|Makipatang]])</sup> 21:25, 18 Agosto 2022 (UTC)
</div>
m5pdl6ss9ly7d5h68yhl6aymld1630u
Teletubbies
0
81038
392289
2022-08-19T01:32:36Z
136.158.48.164
Pinartuat ti panid iti "Ti Teletubbies ket maysa a Britaniko a serye ti telebision [[Papeles:Teletubbies are still here 2011 (6592748045).jpg|thumb]] dagiti ubbing a pinartuat babaen da Anne Wood ken Andrew Davenport para iti BBC. Naipamaysa ti programa iti uppat a nagduduma ti kolorna a karakter a pagaammo kas Teletubbies, a napanaganan kadagiti iskrin ti telebision iti tianda. Nabigbigda iti intero a nalatak a kultura gapu iti naisangsangayan ti sukog nga antena a rumrummuar iti ulo ti..."
wikitext
text/x-wiki
Ti Teletubbies ket maysa a Britaniko a serye ti telebision
[[Papeles:Teletubbies are still here 2011 (6592748045).jpg|thumb]]
dagiti ubbing a pinartuat babaen da Anne Wood ken Andrew Davenport para iti BBC. Naipamaysa ti programa iti uppat a nagduduma ti kolorna a karakter a pagaammo kas Teletubbies, a napanaganan kadagiti iskrin ti telebision iti tianda. Nabigbigda iti intero a nalatak a kultura gapu iti naisangsangayan ti sukog nga antena a rumrummuar iti ulo ti tunggal karakter, dagiti Teletubbies ket makikomunikar babaen kadagiti gibberish ken nadisenioda a mangibaklay iti panagpada kadagiti ubbing a bassit.
5nfddavurrizk213ufon37lyrq8mia7