Wiksiyonaryo
tlwiktionary
https://tl.wiktionary.org/wiki/Wiksiyonaryo:Unang_Pahina
MediaWiki 1.46.0-wmf.24
case-sensitive
Midya
Natatangi
Usapan
Tagagamit
Usapang tagagamit
Wiksiyonaryo
Usapang Wiksiyonaryo
Talaksan
Usapang talaksan
MediaWiki
Usapang MediaWiki
Padron
Usapang padron
Tulong
Usapang tulong
Kategorya
Usapang kategorya
TimedText
TimedText talk
Module
Module talk
Event
Event talk
roba
0
5279
176650
176592
2026-04-25T16:25:18Z
Hiyuune
5522
176650
wikitext
text/x-wiki
{{also|robá|robà|robā|robă|robą|róba|róbà|rōba}}
=={{=ast=}}==
===Verb===
{{head|ast|verb form}}
# {{inflection of|ast|robar||3|s|pres|indc}}
# {{inflection of|ast|robar||2|s|impr}}
5pl4sz27c52dzxqulqj920ppuvces2c
176651
176650
2026-04-25T16:26:16Z
Hiyuune
5522
/* Asturyano */
176651
wikitext
text/x-wiki
{{also|robá|robà|robā|robă|robą|róba|róbà|rōba}}
=={{=ast=}}==
===Pandiwa===
{{head|ast|verb form}}
# {{inflection of|ast|robar||3|s|pres|indc}}
# {{inflection of|ast|robar||2|s|impr}}
18uo6oyu7aasmk8w2ng732x3vq7ewi5
176652
176651
2026-04-25T16:28:05Z
Hiyuune
5522
176652
wikitext
text/x-wiki
{{also|robá|robà|robā|robă|robą|róba|róbà|rōba}}
=={{=ast=}}==
===Pandiwa===
{{head|ast|verb form}}
# {{inflection of|ast|robar||3|s|pres|indc}}
# {{inflection of|ast|robar||2|s|impr}}
=={{=fr=}}==
===Pagbigkas===
* {{fr-IPA|pos=v}}
* {{homophones|fr|robas|robât}}
===Pandiwa===
{{head|fr|verb form}}
# {{inflection of|fr|rober||3|s|phis}}
gmr1olef4l13gth9lpzl6fofsk1q44p
176653
176652
2026-04-25T16:29:59Z
Hiyuune
5522
/* Franses */
176653
wikitext
text/x-wiki
{{also|robá|robà|robā|robă|robą|róba|róbà|rōba}}
=={{=ast=}}==
===Pandiwa===
{{head|ast|verb form}}
# {{inflection of|ast|robar||3|s|pres|indc}}
# {{inflection of|ast|robar||2|s|impr}}
=={{=fr=}}==
===Pagbigkas===
* {{fr-IPA|pos=v}}
* {{homophones|fr|robas|robât}}
===Pandiwa===
{{head|fr|verb form}}
# {{inflection of|fr|rober||3|s|phis}}
=={{=ja=}}==
===Romanisasyon===
{{ja-romaji}}
# {{ja-romanization of|ろば}}
# {{ja-romanization of|ロバ}}
meno2z7y628xadhmfn1u3m826llh1cb
176654
176653
2026-04-25T16:33:11Z
Hiyuune
5522
176654
wikitext
text/x-wiki
{{also|robá|robà|robā|robă|robą|róba|róbà|rōba}}
=={{=ast=}}==
===Pandiwa===
{{head|ast|verb form}}
# {{inflection of|ast|robar||3|s|pres|indc}}
# {{inflection of|ast|robar||2|s|impr}}
=={{=es=}}==
===Pandiwa===
{{head|es|verb form}}
# {{es-verb form of|robar}}
=={{=fr=}}==
===Pagbigkas===
* {{fr-IPA|pos=v}}
* {{homophones|fr|robas|robât}}
===Pandiwa===
{{head|fr|verb form}}
# {{inflection of|fr|rober||3|s|phis}}
=={{=ja=}}==
===Romanisasyon===
{{ja-romaji}}
# {{ja-romanization of|ろば}}
# {{ja-romanization of|ロバ}}
=={{=lv=}}==
===Pangngalan===
{{head|lv|noun form|g=m}}
# {{infl of|lv|robs||gen|s}}
kylhqr55twjwsfx9k1nhbp0ivlu5c3m
Module:languages/data/3/t/extra
828
33115
176663
174772
2026-04-26T11:56:51Z
Yivan000
4078
enwikt parity
176663
Scribunto
text/plain
local m = {}
m["taa"] = {
aliases = {"Tanana"}, -- Middle Tanana is a distinct language
}
m["tab"] = {
aliases = {"Tabassaran"},
}
m["tac"] = {
}
m["tad"] = {
varieties = {"Deirate", "Nuclear Tause", "Weirate"},
}
m["tae"] = {
}
m["taf"] = {
}
m["tag"] = {
}
m["taj"] = {
}
m["tak"] = {
}
m["tal"] = {
}
m["tan"] = {
}
m["tao"] = {
aliases = {"Tao"},
}
m["tap"] = {
}
m["tar"] = {
}
m["tas"] = {
aliases = {"Tay Boi Pidgin French", "Vietnamese Pidgin French"},
}
m["tau"] = {
aliases = {"Tabesna", "Nabesna"},
}
m["tav"] = {
}
m["taw"] = {
}
m["tax"] = {
}
m["tay"] = {
}
m["taz"] = {
}
m["tba"] = {
}
m["tbc"] = {
}
m["tbd"] = {
}
m["tbe"] = {
}
m["tbf"] = {
}
m["tbg"] = {
varieties = {"Aantantara", "Arau-Varosia", "Arokaara", "Saiqora"},
}
m["tbh"] = {
}
m["tbi"] = {
aliases = {"Ingessana", "Gaahmg"}, -- Ingessana is the ethnic group
}
m["tbj"] = {
}
m["tbk"] = {
}
m["tbl"] = {
aliases = {"Tagabili"},
}
m["tbm"] = {
}
m["tbn"] = {
}
m["tbo"] = {
}
m["tbp"] = {
aliases = {"Diebroud", "Dabra"},
}
m["tbr"] = {
}
m["tbs"] = {
}
m["tbt"] = {
aliases = {"Tembo"},
}
m["tbu"] = {
aliases = {"Tubare"},
}
m["tbv"] = {
}
m["tbw"] = {
}
m["tbx"] = {
}
m["tby"] = {
varieties = {"Adu", "Nyeku"},
}
m["tbz"] = {
}
m["tca"] = {
aliases = {"Tikuna"},
}
m["tcb"] = {
}
m["tcc"] = {
}
m["tcd"] = {
}
m["tce"] = {
}
m["tcf"] = {
}
m["tcg"] = {
}
m["tch"] = {
}
m["tci"] = {
aliases = {"Anta-Komnzo-Wára-Wérè-Kémä"}, -- oof, Glottolog's name
varieties = {"Anta", "Kémä", "Kómnjo", "Wára", "Wèré"},
}
m["tck"] = {
}
m["tcl"] = {
aliases = {"Taman", "Taman (Burma)"},
}
m["tcm"] = {
pseudo_families = "paa",
}
m["tco"] = {
}
m["tcp"] = {
aliases = {"Tawr"},
}
m["tcq"] = {
}
m["tcs"] = {
aliases = {"Big Thap", "Blaikman", "Brokan", "Broken", "Broken English", "Cape York Creole", "Lockhart Creole", "Papuan Pidgin English", "Torres Strait Brokan", "Torres Strait Broken", "Torres Strait Pidgin", "Yumplatok"},
}
m["tct"] = {
}
m["tcu"] = {
}
m["tcw"] = {
}
m["tcx"] = {
}
m["tcy"] = {
}
m["tcz"] = {
aliases = {"Thado"},
}
m["tda"] = {
}
m["tdb"] = {
}
m["tdc"] = {
}
m["tdd"] = {
aliases = {"Tai Nuea", "Dehong Dai", "Tai Dehong", "Tai Le", "Chinese Shan", "Chinese Tai"},
}
m["tde"] = {
}
m["tdf"] = {
other_names = {"Taliang", "Tariang", "Kasseng"},
}
m["tdg"] = {
}
m["tdh"] = {
}
m["tdi"] = {
}
m["tdj"] = {
}
m["tdk"] = {
}
m["tdl"] = {
other_names = {"Tapshin"},
}
m["tdm"] = {
other_names = {"Taruamá"},
}
m["tdn"] = {
}
m["tdo"] = {
}
m["tdq"] = {
}
m["tdr"] = {
}
m["tds"] = {
other_names = {"Taori"},
}
m["tdt"] = {
other_names = {"Tetum Dili", "Tetun Prasa", "Tétum Praça", "Tetun-Dili", "Tetun-Prasa"},
}
m["tdu"] = {
}
m["tdv"] = {
}
m["tdy"] = {
}
m["tea"] = {
}
m["teb"] = {
}
m["tec"] = {
}
m["ted"] = {
}
m["tee"] = {
}
m["tef"] = {
}
m["teg"] = {
}
m["teh"] = {
other_names = {"Patagón", "Chon", "Chon Patagón", "Chon Patagon", "Aoniken", "Aonikenk", "Inaquen", "Aonek'o 'ajen"},
}
m["tei"] = {
aliases = {"Aro-Mukweym-Orok"}, -- Glottolog's name
varieties = {"Aro", "Mukweym", {"Orok", "Orok (Torricelli)"}},
}
m["tek"] = {
}
m["tem"] = {
other_names = {"Timne", "Themne", "KaThemne"},
}
m["ten"] = {
other_names = {"Tama"},
}
m["teo"] = {
}
m["tep"] = {
}
m["teq"] = {
}
m["ter"] = {
}
m["tes"] = {
}
m["tet"] = {
other_names = {"Tetun"},
}
m["teu"] = {
}
m["tev"] = {
}
m["tew"] = {
other_names = {"Tano", "Santa Clara Tewa", "San Ildefonso Tewa", "Tesuque Tewa", "Nambe Tewa", "Ohkay Owingeh", "Pojoaque"},
}
m["tex"] = {
}
m["tey"] = {
}
m["tez"] = {
other_names = {"Tin Sert"},
}
m["tfi"] = {
}
m["tfn"] = {
other_names = {"Tanaina"},
}
m["tfo"] = {
}
m["tfr"] = {
}
m["tft"] = {
}
m["tga"] = {
}
m["tgb"] = {
}
m["tgc"] = {
}
m["tgd"] = {
}
m["tge"] = {
}
m["tgf"] = {
other_names = {"Chalikha", "Chalipkha", "Tshali", "Tshalingpa"},
}
m["tgh"] = {
}
m["tgi"] = {
}
m["tgn"] = {
}
m["tgo"] = {
}
m["tgp"] = {
}
m["tgq"] = {
}
m["tgr"] = {
}
m["tgs"] = {
}
m["tgt"] = {
}
m["tgu"] = {
}
m["tgv"] = {
}
m["tgw"] = {
}
m["tgx"] = {
}
m["tgy"] = {
}
m["thc"] = {
}
m["thd"] = {
other_names = {"Thaayorre", "Thayore"},
}
m["the"] = {
}
m["thf"] = {
}
m["thh"] = {
}
m["thi"] = {
}
m["thk"] = {
}
m["thl"] = {
}
m["thm"] = {
aliases = {"Aheu", "So (Thavung)"},
}
m["thn"] = {
}
m["thp"] = {
}
m["thq"] = {
}
m["thr"] = {
}
m["ths"] = {
}
m["tht"] = {
}
m["thu"] = {
}
m["thy"] = {
}
m["tic"] = {
}
m["tif"] = {
varieties = {"Asbalmin", "Nuclear Tifal"},
}
m["tig"] = {
}
m["tih"] = {
}
m["tii"] = {
}
m["tij"] = {
}
m["tik"] = {
}
m["til"] = {
}
m["tim"] = {
varieties = {"Central Timbe", "North Timbe", "South Timbe"},
}
m["tin"] = {
}
m["tio"] = {
}
m["tip"] = {
}
m["tiq"] = {
}
m["tis"] = {
}
m["tit"] = {
}
m["tiu"] = {
}
m["tiv"] = {
other_names = {"Tivi"},
}
m["tiw"] = {
}
m["tix"] = {
other_names = {"Isleta", "Isleta Tiwa", "Isleta Pueblo", "Sandia", "Sandia Tiwa", "Sandia Pueblo"},
}
m["tiy"] = {
aliases = {"Teduray"},
}
m["tiz"] = {
}
m["tja"] = {
}
m["tjg"] = {
}
m["tji"] = {
}
m["tjl"] = {
aliases = {"Red Tai (Myanmar)", "Red Shan", "Shan Bamar", "Shan Kalee", "Shan Ni", "Tai Laeng", "Tai Lai", "Tai Leng", "Tai Nai", "Tai Naing"},
}
m["tjm"] = {
}
m["tjn"] = {
}
m["tjs"] = {
}
m["tju"] = {
}
m["tjw"] = {
other_names = {"Djabwurrung", "Djab Wurrung", "Tjapwurrung"},
}
m["tka"] = {
}
m["tkb"] = {
}
m["tkd"] = {
}
m["tke"] = {
}
m["tkf"] = {
}
m["tkl"] = {
}
m["tkm"] = {
}
m["tkn"] = {
aliases = {"Toku-no-Shima", "Toku-No-Shima"},
}
m["tkp"] = {
}
m["tkq"] = {
}
m["tkr"] = {
other_names = {"Caxur", "Tsaxur"},
}
m["tks"] = {
other_names = {"Takestani"},
}
m["tkt"] = {
}
m["tku"] = {
}
m["tkv"] = {
other_names = {"Pano"},
}
m["tkw"] = {
}
m["tkx"] = {
}
m["tkz"] = {
}
m["tla"] = {
}
m["tlb"] = {
varieties = {"Boëng", "Dodinga", "Nuclear Tobelo"},
}
m["tlc"] = {
other_names = {"Yecuatla Totonac"},
}
m["tld"] = {
}
m["tlf"] = {
varieties = {"Feramin", "Nuclear Telefol"},
}
m["tlg"] = {
}
m["tlh"] = {
}
m["tli"] = {
}
m["tlj"] = {
}
m["tlk"] = {
}
m["tll"] = {
varieties = {"Indanga"},
}
m["tlm"] = {
}
m["tln"] = {
}
m["tlo"] = {
}
m["tlp"] = {
}
m["tlq"] = {
}
m["tlr"] = {
}
m["tls"] = {
}
m["tlt"] = {
other_names = {"Sou Nama"},
}
m["tlu"] = {
}
m["tlv"] = {
other_names = {"Soboyo"},
}
m["tlx"] = {
}
m["tly"] = {
aliases = {"Talyshi", "Talishi", "Taleshi", "Tolashi"},
}
m["tma"] = {
aliases = {"Tama"},
}
m["tmb"] = {
}
m["tmc"] = {
}
m["tmd"] = {
varieties = {"Central Waibuk", "North Waibuk", "South Waibuk"},
}
m["tme"] = {
}
m["tmf"] = {
}
m["tmg"] = {
}
m["tmh"] = {
aliases = {"Tamashek", "Tamahaq", "Tamajaq", "Tamasheq"},
}
m["tmi"] = {
}
m["tmj"] = {
}
m["tml"] = {
}
m["tmm"] = {
}
m["tmn"] = {
other_names = {"Taman"},
}
m["tmo"] = {
}
m["tmq"] = {
}
m["tms"] = {
}
m["tmt"] = {
}
m["tmu"] = {
varieties = {{"Foi", "Foi (Iau)"}, "Nuclear Iau", "Turu"},
}
m["tmv"] = {
other_names = {"Tembo"},
}
m["tmy"] = {
}
m["tmz"] = {
}
m["tna"] = {
}
m["tnb"] = {
}
m["tnc"] = {
}
m["tnd"] = {
}
m["tne"] = {
}
m["tng"] = {
}
m["tnh"] = {
}
m["tni"] = {
}
m["tnk"] = {
}
m["tnl"] = {
}
m["tnm"] = {
varieties = {"Tepera", "Yewena-Yongsu", "Yokari"},
}
m["tnn"] = {
}
m["tno"] = {
}
m["tnp"] = {
}
m["tnq"] = {
aliases = {"Taino"},
}
m["tnr"] = {
}
m["tns"] = {
}
m["tnt"] = {
}
m["tnu"] = {
}
m["tnv"] = {
aliases = {"Tangchangya", "Tonchongya", "Tongchongya"},
}
m["tnw"] = {
}
m["tnx"] = {
}
m["tny"] = {
}
m["tnz"] = {
other_names = {"Tonga"},
}
m["tob"] = {
other_names = {"Chaco Sur", "Namqom", "Qom", "Toba Qom"},
}
m["toc"] = {
}
m["tod"] = {
}
m["tof"] = {
varieties = {"Waidoro", "Western Gizra"},
}
m["tog"] = {
other_names = {"Kitonga", "Chitonga", "Siska", "Sisya", "Tonga", "Western Nyasa"},
}
m["toh"] = {
other_names = {"Gitonga", "Tonga"},
}
m["toi"] = {
other_names = {"Tonga", "Chitonga", "Plateau Tonga", "Zambezi"},
}
m["toj"] = {
}
m["tok"] = {
}
m["tol"] = {
other_names = {"Smith River", "Smith River Tolowa"},
}
m["tom"] = {
}
m["too"] = {
}
m["top"] = {
}
m["toq"] = {
}
m["tor"] = {
}
m["tos"] = {
}
m["tou"] = {
}
m["tov"] = {
}
m["tow"] = {
other_names = {"Towa"},
}
m["tox"] = {
}
m["toy"] = {
}
m["toz"] = {
}
m["tpa"] = {
}
m["tpc"] = {
}
m["tpe"] = {
}
m["tpf"] = {
}
m["tpg"] = {
aliases = {"Kula (Indonesia)"}, -- Glottolog's name
varieties = {"Arumaka", "Iramang", "Kulatela", "Kula Watena", "Larena", "Nuclear Kula", "Sumang", "Watena"},
}
m["tpi"] = {
aliases = {"Melanesian Pidgin English", "Neo-Melanesian", "New Guinea Pidgin"},
}
m["tpj"] = {
}
m["tpk"] = {
other_names = {"Coastal Tupi", "Tupiniquim"},
}
m["tpl"] = {
}
m["tpm"] = {
}
m["tpn"] = {
}
m["tpo"] = {
}
m["tpp"] = {
}
m["tpq"] = {
}
m["tpr"] = {
}
m["tpt"] = {
}
m["tpu"] = {
}
m["tpv"] = {
}
m["tpw"] = {
aliases = {"Classical Tupi"},
}
m["tpx"] = {
}
m["tpy"] = {
}
m["tpz"] = {
}
m["tqb"] = {
}
m["tql"] = {
}
m["tqm"] = {
}
m["tqn"] = {
}
m["tqo"] = {
varieties = {"Kaipi", "Nuclear Toaripi", "Sepoe"},
}
m["tqp"] = {
}
m["tqq"] = {
}
m["tqr"] = {
}
m["tqt"] = {
}
m["tqu"] = {
}
m["tqw"] = {
}
m["tra"] = {
}
m["trb"] = {
}
m["trc"] = {
}
m["trd"] = {
}
m["tre"] = {
}
m["trf"] = {
}
m["trg"] = {
}
m["trh"] = {
}
m["tri"] = {
other_names = {"Trio", "Tiriyó", "Tarano"},
}
m["trj"] = {
}
m["trl"] = {
}
m["trm"] = {
}
m["trn"] = {
other_names = {"Trinitario Moxos", "Moxo", "Moxos", "Mojo", "Moxa"},
}
m["tro"] = {
other_names = {"Tarao Naga", "Taraotrong", "Tarau"},
}
m["trp"] = {
}
m["trq"] = {
}
m["trr"] = {
}
m["trs"] = {
}
m["trt"] = {
}
m["tru"] = {
}
m["trv"] = {
other_names = {"Seediq"},
}
m["trw"] = {
}
m["trx"] = {
other_names = {"Tringus", "Tringgus-Sembaan Bidayuh"},
}
m["try"] = {
aliases = {"Tai Turung"},
}
m["trz"] = {
}
m["tsa"] = {
}
m["tsb"] = {
}
m["tsc"] = {
}
m["tsd"] = {
}
m["tse"] = {
}
m["tsg"] = {
aliases = {"Sūg"},
}
m["tsh"] = {
}
m["tsi"] = {
}
m["tsj"] = {
other_names = {"Sharchop"},
}
m["tsl"] = {
}
m["tsm"] = {
}
m["tsp"] = {
}
m["tsq"] = {
}
m["tsr"] = {
}
m["tss"] = {
}
m["tsu"] = {
}
m["tsv"] = {
}
m["tsw"] = {
}
m["tsx"] = {
}
m["tsy"] = {
}
m["tta"] = {
}
m["ttb"] = {
}
m["ttc"] = {
}
m["ttd"] = {
pseudo_families = "paa",
}
m["tte"] = {
other_names = {"Tubetube"},
}
m["ttf"] = {
}
m["ttg"] = {
}
m["tth"] = {
}
m["tti"] = {
}
m["ttj"] = {
aliases = {"Rutooro"},
}
m["ttk"] = {
aliases = {"Totoró"},
}
m["ttl"] = {
}
m["ttm"] = {
}
m["ttn"] = {
}
m["tto"] = {
}
m["ttp"] = {
}
m["ttr"] = {
}
m["tts"] = {
aliases = {"Isanese", "Isaan", "Issan", "Northeastern Thai"},
}
m["ttt"] = {
other_names = {"Caucasian Tat", "Muslim Tat", "Armeno-Tat"},
}
m["ttu"] = {
}
m["ttv"] = {
}
m["ttw"] = {
other_names = {"Tutoh"},
}
m["tty"] = {
}
m["ttz"] = {
}
m["tua"] = {
}
m["tub"] = {
}
m["tuc"] = {
}
m["tud"] = {
}
m["tue"] = {
}
m["tuf"] = {
}
m["tug"] = {
}
m["tuh"] = {
}
m["tui"] = {
}
m["tuj"] = {
varieties = {"Kusuri", "Teluk Lili"},
}
m["tul"] = {
}
m["tum"] = {
}
m["tun"] = {
}
m["tuo"] = {
}
m["tuq"] = {
other_names = {"Teda"},
}
m["tus"] = {
}
m["tuu"] = {
}
m["tuv"] = {
}
m["tux"] = {
}
m["tuy"] = {
}
m["tuz"] = {
}
m["tva"] = {
}
m["tvd"] = {
}
m["tve"] = {
}
m["tvk"] = {
}
m["tvl"] = {
}
m["tvm"] = {
}
m["tvn"] = {
}
m["tvo"] = {
}
m["tvs"] = {
}
m["tvt"] = {
}
m["tvu"] = {
other_names = {"Tunen-Aling'a"},
}
m["tvw"] = {
}
m["tvx"] = {
}
m["tvy"] = {
other_names = {"Bidau Creole Portuguese"},
}
m["twa"] = {
}
m["twb"] = {
}
m["twc"] = {
}
m["twe"] = {
aliases = {"Tewa"},
varieties = {"Deing", "Lebang", "Madar"},
}
m["twf"] = {
aliases = {"Northern Tiwa"},
}
m["twg"] = {
}
m["twh"] = {
aliases = {"Tai Khao", "White Tai"},
}
m["twm"] = {
}
m["twn"] = {
}
m["two"] = {
}
m["twp"] = {
}
m["twq"] = {
}
m["twr"] = {
}
m["twt"] = {
}
m["twu"] = {
}
m["tww"] = {
}
m["twy"] = {
other_names = {"Taboyan"},
}
m["txa"] = {
}
m["txb"] = {
other_names = {"West Tocharian", "Kuchean"},
}
m["txc"] = {
}
m["txe"] = {
}
m["txg"] = {
}
m["txj"] = {
}
m["txh"] = {
}
m["txi"] = {
}
m["txm"] = {
}
m["txn"] = {
}
m["txo"] = {
}
m["txq"] = {
}
m["txr"] = {
}
m["txs"] = {
}
m["txt"] = {
varieties = {"Bubis", "Esaun", "Komasma", "Pirabanak", "Senggo", "Tiau", "Vakam"},
}
m["txu"] = {
}
m["txx"] = {
}
m["tya"] = {
}
m["tye"] = {
}
m["tyh"] = {
}
m["tyi"] = {
}
m["tyj"] = {
aliases = {"Tai Yo", "Tai Mène", "Tai Maen", "Tai Quy Chau"},
}
m["tyl"] = {
}
m["tyn"] = {
varieties = {"Central Kombai", "Tayan"},
}
m["typ"] = {
other_names = {"Gugu Thaypan", "Thaypan", "Kuku Thaypan", "Agu Alaya", "Awu Alaya", "Alaya", "Gugu-Rarmul", "Koko-Rarmul", "Rarmul"},
}
m["tyr"] = {
aliases = {"Red Tai (Vietnam)"},
}
m["tys"] = {
aliases = {"Sa Pa", "Tày Sa Pa", "Tai Sapa"},
}
m["tyt"] = {
}
m["tyu"] = {
}
m["tyv"] = {
aliases = {"Tyvan"},
}
m["tyx"] = {
}
m["tyz"] = {
aliases = {"Tay", "Tho", "Bao Yen", "Cao Bang"}, -- Both Bao Lac and Trung Khanh are located in Cao Bang.
varieties = {"Central Tày", "Eastern Tày", "Northern Tày", "Southern Tày", "Tày Bao Lac", "Tày Trung Khanh"},
}
m["tza"] = {
}
m["tzh"] = {
}
m["tzj"] = {
aliases = {"Tzutujil"},
}
m["tzl"] = {
}
m["tzm"] = {
}
m["tzn"] = {
}
m["tzo"] = {
}
m["tzx"] = {
other_names = {"Karawari"},
}
return m
ekeg7nuvbc7lorc44voec43cbc8p7yf
Module:languages/data/3/s/extra
828
33117
176664
174771
2026-04-26T11:57:50Z
Yivan000
4078
enwikt parity
176664
Scribunto
text/plain
local m = {}
m["saa"] = {
}
m["sab"] = {
aliases = {"Bugle", "Murire", "Muoy"},
varieties = {"Sabanero", {"Bokotá", "Bogota"}},
}
m["sac"] = {
varieties = {{"Sac", "Sauk"}, "Kickapoo", {"Mesquakie", "Meskwaki"}},
}
m["sad"] = {
}
m["sae"] = {
}
m["saf"] = {
}
m["sah"] = {
aliases = {"Sakha"},
}
m["saj"] = {
varieties = {"Pa'disua", "Tala'i"},
}
m["sak"] = {
aliases = {"Shake"},
}
m["sam"] = {
aliases = {"Samaritan"},
}
m["sao"] = {
}
m["saq"] = {
}
m["sar"] = {
aliases = {"Sarabeca", "Saraveka", "Sarave"},
}
m["sas"] = {
}
m["sat"] = {
}
m["sau"] = {
}
m["sav"] = {
}
m["saw"] = {
}
m["sax"] = {
aliases = {"Saa"},
}
m["say"] = {
}
m["saz"] = {
}
m["sba"] = {
}
m["sbb"] = {
}
m["sbc"] = {
aliases = {"Kele (New Guinea)", "Kele (Papua New Guinea)", "Kele"},
}
m["sbd"] = {
}
m["sbe"] = {
aliases = {"Saliba"},
}
m["sbf"] = {
aliases = {"Mikeyir", "Mekeyir", "Mekeyer"},
}
m["sbg"] = {
}
m["sbh"] = {
-- I'm guessing these are varieties, since they represent the names of the two islands on which the language
-- (Sori-Harengan) is spoken.
varieties = {"Sori", "Harengan"},
}
m["sbi"] = {
}
m["sbj"] = {
}
m["sbk"] = {
}
m["sbl"] = {
}
m["sbm"] = {
}
m["sbn"] = {
}
m["sbo"] = {
}
m["sbp"] = {
}
m["sbq"] = {
aliases = {"Sileibi"},
}
m["sbr"] = {
}
m["sbs"] = {
}
m["sbt"] = {
pseudo_families = "paa",
}
m["sbu"] = {
}
m["sbv"] = {
}
m["sbw"] = {
}
m["sbx"] = {
}
m["sby"] = {
}
m["sbz"] = {
}
m["scb"] = {
}
m["sce"] = {
aliases = {"Santa"},
}
m["scf"] = {
}
m["scg"] = {
}
m["sch"] = {
-- Alias vs. variety here is a guess; Wikipedia says "Sakachep also known as Khelma" and says the ethnicity is
-- "The Khelma, also known as the Sakachep" but Ethnologue also says "dialects are Khelma, Thangachep, and Sakachep"
-- which may be bogus.
aliases = {"Khelma"},
}
m["sci"] = {
}
m["sck"] = {
}
m["scl"] = {
-- These represent different valleys where the language is spoken, hence likely distinct dialects.
varieties = {"Gilgiti", "Astori", "Chilasi"},
}
m["scn"] = {
}
m["sco"] = {
aliases = {"Lowland Scots"},
}
m["scp"] = {
aliases = {"Hyolmo", "Yohlmo", "Helambu Sherpa"},
-- Wikipedia says Syuba/Kagate (code skw) may be close enough to be a dialect. Langtang is mutually intelligible
-- with Yolmo but often considered a separate language; yet we don't have a code for it so I'm putting it as a
-- variety.
varieties = {"Melamchi Valley Yolmo", "Langtang", "Lamjung Yolmo", "Ilam Yolmo"},
}
m["scq"] = {
aliases = {"Chung"},
}
m["scs"] = {
}
m["scu"] = {
}
m["scv"] = {
}
m["scw"] = {
}
m["scx"] = {
aliases = {"Siculian"},
}
m["scz"] = {
aliases = {"Shaetlan", "Shetlandic"},
}
m["sda"] = {
}
m["sdb"] = {
aliases = {"Shabaki"},
}
m["sdc"] = {
}
m["sde"] = {
}
m["sdf"] = {
aliases = {"Sarliya"},
}
m["sdg"] = {
}
m["sdh"] = {
-- Kermanshahi can refer either to Southern Kurdish as a whole or to the prestige dialect. We distinct the latter
-- as Kermanshani with an n following ''Habib Borjian, “KERMANSHAH vii. Languages and Dialects,” Encyclopædia
-- Iranica, Vol. 16, Fasc. 3, New York, 2017, pp. 327-331.'' but this may not make a lot of sense.
aliases = {"Kermanshahi", "Kermanshahi Kurdish"},
-- We classify Laki as a separate language but it is often considered a dialect of Southern Kurdish.
varieties = {{"Kermanshani", "Kermanshani Kurdish"}, {"Kolya'i", "Kolyā'i"}, "Zangana", "Kalhori", {"Sanjābi", "Sanjabi"}, {"Feyli", "Fayli", "Ilāmi", "Ilami"}},
}
m["sdj"] = {
}
m["sdk"] = {
}
m["sdl"] = {
}
m["sdm"] = {
}
m["sdn"] = {
}
m["sdo"] = {
aliases = {"Bukar-Sadong"},
}
m["sdp"] = {
}
m["sdr"] = {
}
m["sds"] = {
}
m["sdu"] = {
}
m["sdx"] = {
}
m["sea"] = {
}
-- seb is a duplicate code of spp
m["sec"] = {
}
m["sed"] = {
}
m["see"] = {
}
m["sef"] = {
}
m["seg"] = {
}
m["seh"] = {
varieties = {{"Malawi Sena", "Malawian Sena"}, {"Nuclear Sena", "Mozambican Sena"}}, -- includes [swk] for Malawian Sena, but [bwg] for Barwe is distinct
}
m["sei"] = {
}
m["sej"] = {
}
m["sek"] = {
aliases = {"Tsek'ene"},
varieties = {{"Kwadacha", "Kwadacha Sekani", "Kwadacha Tsek'ene"}},
}
m["sen"] = {
}
m["seo"] = {
aliases = {"Asabano", -- Glottolog's name
"Suarmin", -- old ISO name
"Asabo", -- used in Foley (2005) and Foley (2018); may be a typo
"Duranmin", -- in e.g. Laycock and Z'graggen (1975), Conrad (1988)
},
pseudo_families = "paa",
}
m["sep"] = {
}
m["seq"] = {
}
m["ser"] = {
-- Wikipedia treats Kitanemuk as a separate language but it says it may have been a dialect (it is extinct).
varieties = {"Kitanemuk"},
}
m["ses"] = {
aliases = {"Koyraboro Senni Songhay", "Koyraboro Senni Songhai", "Koroboro Senni"},
-- other_names = {"Eastern Songhay"}, -- this is a geographic grouping of Songhay languages including Koyraboro Senni
}
m["set"] = {
varieties = {"Central Sentani", "East Sentani", "West Sentani"},
}
m["seu"] = {
}
m["sev"] = {
}
m["sew"] = {
}
m["sey"] = {
}
m["sez"] = {
aliases = {"Senthang"},
}
m["sfb"] = {
}
m["sfe"] = {
}
m["sfm"] = {
}
m["sfs"] = {
}
m["sfw"] = {
}
m["sga"] = {
}
m["sgb"] = {
}
m["sgc"] = {
}
m["sgd"] = {
}
m["sge"] = {
}
m["sgg"] = {
aliases = {"Swiss German Sign Language"},
}
m["sgh"] = {
}
m["sgi"] = {
}
m["sgk"] = {
}
m["sgm"] = {
}
m["sgp"] = {
}
m["sgr"] = {
aliases = {"Sangsari"},
}
m["sgs"] = {
}
m["sgt"] = {
aliases = {"Brokpa"},
}
m["sgu"] = {
}
m["sgw"] = {
}
m["sgx"] = {
}
m["sgy"] = {
-- FIXME: Sanglich is the name of the language as used in Tajikistan, while Sanglechi is the name as used in
-- Afghanistan. Hence they could be different dialects, but provisionally I'm classifying them as aliases.
aliases = {"Sanglich"},
-- "Warduji" may not exist at all
}
m["sgz"] = {
}
m["sha"] = {
}
m["shb"] = {
aliases = {"Yanam", "Yanam-Ninam", "Xiriana", "Xiriâna", "Shiriana", "Xirixana", "Shirishana"},
}
m["shc"] = {
}
m["shd"] = {
}
m["she"] = {
}
m["shg"] = {
aliases = {"Shwa", "Shwakhwe"},
}
m["shh"] = {
aliases = {"Shoshoni"},
varieties = {{"Gosiute", "Goshute"}, {"Eastern Shoshone", "Eastern Shoshoni"}, {"Western Shoshone", "Western Shoshoni"}, {"Northern Shoshone", "Northern Shoshoni"}},
}
m["shi"] = {
aliases = {"Tachelhit", "Chleuh", "Shilha", "Tashlhiyt", "Tashelhit Berber", "Tachelhit Berber", "Tashlhiyt Berber", "Soussian"},
}
m["shj"] = {
}
m["shk"] = {
}
m["shl"] = {
}
m["shm"] = {
}
m["shn"] = {
aliases = {"Kwam Tai", "Kam Tai", "Tai Yai"},
}
m["sho"] = {
}
m["shp"] = {
}
m["shq"] = {
}
m["shr"] = {
}
m["shs"] = {
}
m["sht"] = {
}
m["shu"] = {
}
m["shv"] = {
aliases = {"Jibbali"},
}
m["shw"] = {
}
m["shx"] = {
aliases = {"Ho Ne", "Ho Nte"},
}
m["shy"] = {
aliases = {"Shawiya Berber", "Chaouïa", "Tacawit"},
}
m["shz"] = {
}
m["sia"] = {
}
m["sib"] = {
}
m["sid"] = {
aliases = {"Sidaama"},
}
m["sie"] = {
}
m["sif"] = {
}
m["sig"] = {
}
m["sih"] = {
aliases = {"Sishee", "Zire"},
}
m["sii"] = {
}
m["sij"] = {
}
m["sik"] = {
}
m["sil"] = {
}
m["sim"] = {
aliases = {"Mende",
"Seim", -- our old name
},
}
m["sip"] = {
aliases = {"Bhutia", "Dranjongke", "Dranjoke", "Denjongka", "Denzongpeke", "Denzongke"},
}
m["siq"] = {
}
m["sir"] = {
}
m["sis"] = {
}
m["siu"] = {
aliases = {"Galu"}, -- Glottolog's name
}
m["siv"] = {
}
m["siw"] = {
varieties = {"Baitsi"},
}
m["six"] = {
aliases = {"Garia", "Kari"},
}
m["siy"] = {
}
m["siz"] = {
aliases = {"Siwa", "Siwan", "Siwa Berber"},
}
m["sja"] = {
}
m["sjb"] = {
}
m["sjc"] = {
aliases = {"Shao-Jiang Min", "Shaojiang Chinese", "Shao-Jiang Chinese"},
}
m["sjd"] = {
}
m["sje"] = {
}
m["sjg"] = {
}
m["sjk"] = {
}
m["sjl"] = {
-- Per Wikipedia, these are two languages. There is also a yet more divergent variety Bangru (Northern Miji).
varieties = {
{"Western Miji", "Dmay", "Dhammai", "Dhəmmai", "Sajalang", "Sajolang"},
{"Eastern Miji", "Namrai", "Nəmrai"},
}
}
m["sjm"] = {
}
m["sjn"] = {
}
m["sjo"] = {
aliases = {"Sibo", "Sibe", "Xibo"},
}
m["sjp"] = {
}
m["sjr"] = {
}
m["sjs"] = {
-- from Wikipedia
aliases = {"Senhaja De Srair", "Sanhaja de Srair", "Senhajiyya", "Chelha", "Chelha n Senhaja", "Chelha n Isenhajen", "Tamazight n Senhaja", "Tasenhaji"},
}
m["sjt"] = {
}
m["sju"] = {
}
m["sjw"] = {
}
-- [ska] Skagit is treated as part of [lut] Lushootseed
m["skb"] = {
}
m["skc"] = {
aliases = {"Sauk"},
}
m["skd"] = {
}
m["ske"] = {
aliases = {"Seke"},
}
m["skf"] = {
aliases = {"Mekens", "Mekem", "Amniapé"},
-- Glottolog refers to the third variety as Siokweriat corresponding to Koarategayat etc.
varieties = {{"Sakirabiá", "Sakïrabiát", "Sakiráp", "Sakurabiat"}, {"Koaratira", "Guaratira", "Kanoé"}, {"Koarategayat", "Guaratégaya", "Guarategaja", "Warategáya"}},
}
m["skh"] = {
}
m["ski"] = {
other_names = {"Sikanese"},
}
m["skj"] = { -- compare 'ths'
}
m["skk"] = {
}
m["skm"] = {
other_names = {"Kutong"},
}
m["skn"] = {
}
m["sko"] = {
}
m["skp"] = {
}
m["skq"] = {
}
m["skr"] = {
other_names = {"Siraiki", "Seraiki"},
}
m["sks"] = {
aliases = {"Maya"},
other_names = {"Banar", "Suaro", "Turutap", "Yakiba"},
varieties = {"Pila", "Saki"},
}
m["skt"] = {
other_names = {"Kisakata", "Lesa", "Odual", "Saka", "Bai", "Kibai", "Bay", "Kibay", "Djia", "Dia", "Dja", "Kidjia", "Wadia", "Tuku", "Ketu", "Batow"},
}
m["sku"] = {
}
m["skv"] = {
}
m["skw"] = {
other_names = {"Skepi Dutch", "Skepi Dutch Creole", "Essequibo Dutch"},
}
m["skx"] = {
}
m["sky"] = {
aliases = {"Sikayana"},
}
m["skz"] = {
}
m["slc"] = {
other_names = {"Saliba", "Sáliba", "Saliva", "Sáliva"},
}
m["sld"] = {
aliases = {"Sissala"},
}
m["sle"] = {
}
m["slf"] = {
other_names = {"Swiss Italian Sign Language"},
}
m["slg"] = {
}
-- [slh] Southern Puget Sound Salish is treated as part of [lut] Lushootseed
-- "sli" "Silesian German" IS SUBSUMED INTO "gmw-ecg" "East Central German"
m["slj"] = {
}
m["sll"] = {
varieties = {"Keri", {"Salt", "Salt (Salt-Yui)"}},
}
m["slm"] = {
aliases = {"Siyama"},
}
m["sln"] = {
}
m["slp"] = {
other_names = {"Solor", "Solorese"},
}
m["slr"] = {
}
m["sls"] = {
}
m["slt"] = {
}
m["slu"] = {
}
m["slw"] = {
}
m["slx"] = {
}
m["sly"] = {
}
m["slz"] = {
}
m["sma"] = {
}
m["smb"] = {
}
m["smc"] = {
}
m["smd"] = {
}
m["smf"] = {
}
m["smg"] = {
}
m["smh"] = {
}
m["smj"] = {
}
m["smk"] = {
other_names = {"Binubolinao"},
}
m["sml"] = {
}
m["smm"] = {
}
m["smn"] = {
}
m["smp"] = {
other_names = {"Samaritan"},
}
m["smq"] = {
}
m["smr"] = {
other_names = {"Simalur", "Devayan", "Defayan", "Simolol", "Simulul", "Simeuloë"},
}
m["sms"] = {
}
m["smt"] = {
}
m["smu"] = {
}
m["smv"] = {
}
m["smw"] = {
}
m["smx"] = {
}
m["smy"] = {
}
m["smz"] = {
varieties = {"Koopei", "Mainoki"},
}
m["snb"] = {
}
m["snc"] = {
}
m["sne"] = {
}
m["snf"] = {
}
m["sng"] = {
other_names = {"Sanga", "Luba-Sanga", "Sanga (Democratic Republic of Congo)", "Sanga (Democratic Republic of the Congo)"},
}
m["sni"] = {
}
m["snj"] = {
}
m["snk"] = {
}
m["snl"] = {
}
m["snm"] = {
}
m["snn"] = {
}
-- [sno] Snohomish is treated as part of [lut] Lushootseed
m["snp"] = {
varieties = {"Alango", "Fowe", "Kemanimowe", "Keto", "Kolepa", "Komoigaleka", "Komongu", "Laiya", "Lambau",
"Olumba", {"Ona", "Ona (Papua New Guinea)"}, "Wando", "Yamofowe", "Yandime"},
}
m["snq"] = {
other_names = {"Chango"},
}
m["snr"] = {
aliases = {"Sihan (Gum)"}, -- per Glottolog
}
m["sns"] = {
}
m["snu"] = {
}
m["snv"] = {
}
m["snw"] = {
}
m["snx"] = {
}
m["sny"] = {
varieties = {"Hiyowe", "Saniyo"},
}
m["snz"] = {
aliases = {"Kow", "Sinsauru"}, -- Sinsauru is an alias per Wikipedia
varieties = {"Asas", "Saipa"},
}
m["soa"] = {
aliases = {"Lao Song", "Song"},
}
m["sob"] = {
}
m["soc"] = {
other_names = {"So"},
}
m["sod"] = {
}
m["soe"] = {
}
m["sog"] = {
}
m["soh"] = {
other_names = {"Aka", "Sillok"},
}
m["soi"] = {
other_names = {"Sonaha", "Sonahaa", "Sunah", "Sunha"},
}
m["sok"] = {
}
m["sol"] = {
}
m["soo"] = {
other_names = {"Songo", "Tsong"},
}
m["sop"] = {
}
m["soq"] = {
}
m["sor"] = {
}
m["sos"] = {
other_names = {"Seeku", "Sembla", "Sambla"},
}
m["sou"] = {
aliases = {"Dambro", "Pak Tai"},
}
m["sov"] = {
}
m["sow"] = {
}
m["sox"] = {
other_names = {"So", "Sso", "Shwo", "Fo"},
}
m["soy"] = {
}
m["soz"] = {
}
m["spb"] = {
other_names = {"Sepa"},
}
m["spc"] = {
other_names = {"Kaliana", "Kariana", "Kaliána", "Sapä́", "Sape"},
}
m["spd"] = {
}
m["spe"] = {
other_names = {"Sepa", "Sepa (Papua New Guinea)"},
}
m["spg"] = {
}
m["spi"] = {
}
m["spk"] = {
}
m["spl"] = {
varieties = {"North Selepet", "South Selepet"},
}
m["spm"] = {
}
m["spn"] = {
}
m["spo"] = {
other_names = {"Montana Salish", "Salish", "Séliš", "Kalispel-Pend d'oreille", "Kalispel"},
}
m["spp"] = {
other_names = {"Suppire", "Supyire Senoufo", "Supyire Senufo", "Shempire Senoufo", "Shempire"},
}
m["spr"] = {
}
m["sps"] = {
}
m["spt"] = {
}
m["spu"] = {
}
m["spv"] = {
other_names = {"Kosali", "Koshali"},
}
m["spx"] = {
other_names = {"Old Sabellic", "Old Sabellian", "Middle Adriatic", "Central Adriatic"},
}
m["spy"] = {
}
m["sqa"] = {
}
m["sqh"] = {
}
m["sqk"] = {
}
m["sqm"] = {
}
m["sqn"] = {
}
m["sqo"] = {
}
m["sqq"] = {
}
m["sqr"] = {
}
m["sqs"] = {
}
m["sqt"] = {
aliases = {"Socotri"},
}
m["squ"] = {
}
m["sra"] = {
}
m["srb"] = {
}
m["sre"] = {
}
m["srf"] = {
}
m["srg"] = {
}
m["srh"] = {
}
m["sri"] = {
}
m["srk"] = {
aliases = {"Serudung"},
}
m["srl"] = {
varieties = {"Eastern Isirawa", "Western Isirawa"},
}
m["srm"] = {
}
m["srn"] = {
}
m["srq"] = {
}
m["srr"] = {
}
m["srs"] = {
aliases = {"Sarcee", "Sarsi", "Tsuu T'ina", "Tsu T'ina"},
}
m["srt"] = {
}
m["sru"] = {
other_names = {"Paíter", "Suruí-Paíter", "Suruí de Rondônia", "Suruí do Jiparaná"},
}
m["srv"] = {
}
m["srw"] = {
}
m["srx"] = {
}
m["sry"] = {
}
m["srz"] = {
}
m["ssb"] = {
}
m["ssc"] = {
}
m["ssd"] = {
}
m["sse"] = {
}
m["ssf"] = {
other_names = {"Sao"},
}
m["ssg"] = {
}
m["ssh"] = {
}
m["ssi"] = {
other_names = {"Bhilki"},
}
m["ssj"] = {
}
m["ssk"] = {
}
m["ssl"] = {
}
m["ssm"] = {
}
m["sso"] = {
}
m["ssp"] = {
}
m["ssq"] = {
}
m["ssr"] = {
other_names = {"Swiss French Sign Language"},
}
m["sss"] = {
}
m["sst"] = {
varieties = {"Dinga", "Gunangi", {"Kebai", "Kebai (Sinasina)"}, {"Kere", "Kere (Sinasina)"}, "Kondo", "Nimai",
"Tabare"},
}
m["ssu"] = {
}
m["ssv"] = {
}
m["ssx"] = {
}
m["ssy"] = {
}
m["ssz"] = {
}
m["stb"] = {
}
m["std"] = {
}
m["ste"] = {
}
m["stf"] = {
}
m["stg"] = {
}
m["sth"] = {
other_names = {"Cant"},
}
m["sti"] = {
}
m["stj"] = {
}
m["stk"] = {
}
m["stm"] = {
}
m["stn"] = {
}
m["sto"] = {
}
m["stp"] = {
}
m["stq"] = {
other_names = {"East Frisian", "Eastern Frisian"}, -- Saterland F is a dialect of East F; see [[WT:T:ASTQ]]
}
m["str"] = {
}
m["sts"] = {
}
m["stt"] = {
}
m["stu"] = {
}
m["stv"] = {
}
m["stw"] = {
}
m["sty"] = {
}
m["sua"] = {
}
m["sub"] = {
}
m["suc"] = {
}
m["sue"] = {
}
m["sug"] = {
}
m["sui"] = {
}
m["suk"] = {
}
m["suo"] = {
aliases = {"Bouni-Bobe", -- Glottolog
"Sumo"}, -- alternative name in Wikipedia
varieties = {"Bobe", "Bouni"}, -- per Glottolog
}
m["suq"] = {
}
m["sur"] = {
other_names = {"Sura", "Mupun"},
}
m["sus"] = {
}
m["sut"] = {
}
m["suv"] = {
}
m["suw"] = {
}
m["sux"] = {
}
m["suy"] = {
}
m["suz"] = {
}
m["sva"] = {
}
m["svb"] = {
}
m["svc"] = {
}
m["sve"] = {
}
m["svk"] = {
}
m["svm"] = {
aliases = {"Slavo-molisano", "Molise Slavic", "Molise Croatian"},
}
m["svs"] = {
pseudo_families = "paa",
}
m["svx"] = {
}
m["swb"] = {
}
m["swf"] = {
}
m["swg"] = {
}
m["swi"] = {
aliases = {"Ai Sui", "Shui", "Sui Li", "Suipo"},
}
m["swj"] = {
}
m["swl"] = {
}
m["swm"] = {
}
m["swn"] = {
other_names = {"Sawknah", "Fezzan", "Fogaha"},
}
m["swo"] = {
}
m["swp"] = {
}
m["swq"] = {
}
m["swr"] = {
}
m["sws"] = {
}
m["swt"] = {
varieties = {"Lalamana", "Lona", "Nuclear Sawila", "Salimana", "Sileba"},
}
m["swu"] = {
}
m["sww"] = {
}
m["swx"] = {
other_names = {"Zuruahá", "Suruaha", "Suruwaha", "Zuruaha", "Índios do Coxodoá"},
}
m["swy"] = {
}
m["sxb"] = {
}
m["sxc"] = {
}
m["sxe"] = {
}
m["sxg"] = {
other_names = {"Shuhi", "Xumi"},
}
m["sxk"] = {
}
m["sxl"] = {
other_names = {"Selian"},
}
m["sxm"] = {
}
m["sxn"] = {
}
m["sxo"] = {
}
m["sxr"] = {
}
m["sxs"] = {
}
-- "sxu" "Upper Saxon" IS SUBSUMED INTO "gmw-ecg" "East Central German"
m["sxw"] = {
}
m["sya"] = {
}
m["syb"] = {
}
m["syc"] = {
}
m["syi"] = {
}
m["syk"] = {
}
m["syl"] = {
aliases = {"Sylhetti", "Sileti", "Siloti", "Syloti", "Syloty"}
}
m["sym"] = {
}
m["syn"] = {
}
m["syo"] = {
}
m["sys"] = {
}
m["syw"] = {
aliases = {"Syuba"},
}
m["syx"] = {
other_names = {"Shamay", "Samayi", "Samay", "Shamayi"},
}
m["syy"] = {
}
m["sza"] = {
}
m["szb"] = {
varieties = {"Apmisibil", "Nuclear Ngalum", "Sibil"},
}
m["szc"] = {
}
m["szd"] = {
}
m["sze"] = {
}
m["szg"] = {
}
m["szl"] = {
aliases = {"Upper Silesian", "Silesian Polish", "Upper Silesian Polish"},
}
m["szn"] = {
}
m["szp"] = {
other_names = {"Inanwatan"},
}
m["szv"] = {
other_names = {"Isu", "Isu (Fako Division)", "Isuwu", "Suwu", "Subu"},
}
m["szw"] = {
other_names = {"Weda", "Weda-Sawai", "Kobe", "Faya-Mafa", "Messa-Dote"},
}
m["szy"] = {
}
return m
sb9mr4edjax9m9vqnxuuvf9p7zpvlqm
Padron:vi-IPA
10
33748
176659
165484
2026-04-26T05:45:42Z
Yivan000
4078
176659
wikitext
text/x-wiki
<includeonly>{{#invoke:vi-pron|ipa}}{{cln|vi|salitang may pagbigkas na IPA}}<!--TLCHANGE terms with IPA pronunciation --></includeonly><noinclude>{{dokumentasyon ng padron}}</noinclude>
7c8s53sibf1i33blvv10gcpvogq9fn0
Module:vi-pron
828
33749
176658
164610
2026-04-26T05:42:19Z
Yivan000
4078
enwikt parity
176658
Scribunto
text/plain
local export = {}
local m_str_utils = require("Module:string utilities")
local IPA_module = "Module:IPA"
local parse_utilities_module = "Module:parse utilities"
local lang = require("Module:languages").getByCode("vi")
local ugcodepoint = m_str_utils.gcodepoint
local rsubn = m_str_utils.gsub
local rsplit = m_str_utils.split
local ulen = m_str_utils.len
local ulower = m_str_utils.lower
local rmatch = m_str_utils.match
local usub = m_str_utils.sub
local toNFC = mw.ustring.toNFC
local toNFD = mw.ustring.toNFD
local u = m_str_utils.char
local function rsub(str, from, to)
return (rsubn(str, from, to))
end
local function track(page)
require("Module:debug/track")("vi-pron/" .. page)
return true
end
local function split_on_comma(term)
if not term then
return nil
end
if term:find(",%s") then
return require(parse_utilities_module).split_on_comma(term)
elseif term:find(",") then
return rsplit(term, ",")
else
return {term}
end
end
--àằầèềìòồờùừỳ áắấéếíóốớúứý ảẳẩẻểỉỏổởủửỷ ãẵẫẽễĩõỗỡũữỹ ạặậẹệịọộợụựỵ
local tone_diacritics = {
[u(0x0300)] = 2, -- grave accent = ◌̀
[u(0x0301)] = 3, -- acute accent = ◌́
[u(0x0309)] = 4, -- hook above = ◌̉
[u(0x0303)] = 5, -- tilde = ◌̃
[u(0x0323)] = 6, -- dot under = ◌̣
}
local tone_contour = {
["hn"] = { [1] = "˧˧", [2] = "˨˩", ["3a"] = "˧˦", [3] = "˧˦", [4] = "˧˩", [5] = "˦ˀ˥", [6] = "˧˨ʔ" },
["hue"] = { [1] = "˧˧", [2] = "˦˩", ["3a"] = "˦˧˥", [3] = "˨˩˦", [4] = "˧˨", [5] = "˧˨", [6] = "˨˩ʔ" },
["hcmc"] = { [1] = "˧˧", [2] = "˨˩", ["3a"] = "˦˥", [3] = "˦˥", [4] = "˨˩˦", [5] = "˨˩˦", [6] = "˨˩˨" },
}
local initial_ipa = {
["b"] = { "ʔɓ", "ʔɓ", "ʔɓ" },
["c"] = { "k", "k", "k" },
["ch"] = { "t͡ɕ", "t͡ɕ", "c" },
["d"] = { "z", "j", "j" },
["đ"] = { "ʔɗ", "ʔɗ", "ʔɗ" },
["g"] = { "ɣ", "ɣ", "ɣ" },
["gh"] = { "ɣ", "ɣ", "ɣ" },
["gi"] = { "z", "j", "j" },
["gy"] = { "z", "j", "j" },
["h"] = { "h", "h", "h" },
["k"] = { "k", "k", "k" },
["kh"] = { "x", "kʰ", "kʰ" },
["l"] = { "l", "l", "l" },
["m"] = { "m", "m", "m" },
["n"] = { "n", "n", "n" },
["ng"] = { "ŋ", "ŋ", "ŋ" },
["ngh"] = { "ŋ", "ŋ", "ŋ" },
["nh"] = { "ɲ", "ɲ", "ɲ" },
["p"] = { "p", "p", "p" }, -- foreign
["ph"] = { "f", "f", "f" },
["q"] = { "k", "k", "k" },
["qu"] = { "kw", "kw", "w" },
["r"] = { "z", "ʐ", "ɹ" },
["ŕ"] = { "ɹ", "ɹ", "ɹ" },
["s"] = { "s", "ʂ", "ʂ" },
["t"] = { "t", "t", "t" },
["th"] = { "tʰ", "tʰ", "tʰ" },
["tr"] = { "t͡ɕ", "ʈ", "ʈ" },
["v"] = { "v", "v", "v" },
["x"] = { "s", "s", "s" },
["z"] = { "z", "z", "z" },
[""] = { "ʔ", "ʔ", "ʔ" },
["-"] = { "", "", "" },
}
local mvi_initial_ipa = {
["ꞗ"] = "β", ["Ꞗ"] = "β",
["b"] = "ɓ",
["c"] = "k", ["ch"] = "c",
["d"] = "ð", ["đ"] = "ɗ",
["g"] = "ɣ", ["gh"] = "ɣ", ["gi"] = "ʝ",
["h"] = "h",
["k"] = "k", ["kh"] = "kʰ",
["l"] = "l",
["m"] = "m",
["n"] = "n", ["ng"] = "ŋ", ["ngh"] = "ŋ", ["nh"] = "ɲ",
["p"] = "p", ["ph"] = "pʰ",
["r"] = "ɹ",
["s"] = "ʂ",
["t"] = "t", ["th"] = "tʰ", ["tr"] = "ʈ",
["v"] = "w",
["x"] = "ɕ",
}
local final_ipa = {
["a"] = { "aː", "aː", "aː" },
["ac"] = { "aːk̚", "aːk̚", "aːk̚" },
["ach"] = { "ajk̟̚", "at̚", "at̚" },
["ai"] = { "aːj", "aːj", "aːj" },
["am"] = { "aːm", "aːm", "aːm" },
["an"] = { "aːn", "aːŋ", "aːŋ" },
["ań"] = { "aːn", "aːn", "aːn" },
["ang"] = { "aːŋ", "aːŋ", "aːŋ" },
["anh"] = { "ajŋ̟", "ɛɲ", "an" },
["ao"] = { "aːw", "aːw", "aːw" },
["ao᷄"] = { "awŋ͡m", "", "" },
["ap"] = { "aːp̚", "aːp̚", "aːp̚" },
["at"] = { "aːt̚", "aːk̚", "aːk̚" },
["au"] = { "aw", "aw", "a(ː)w" },
["ay"] = { "aj", "aj", "a(ː)j" },
["ăc"] = { "ak̚", "ak̚", "ak̚" },
["ăm"] = { "am", "am", "am" },
["ăn"] = { "an", "aŋ", "aŋ" },
["ăng"] = { "aŋ", "aŋ", "aŋ" },
["ăp"] = { "ap̚", "ap̚", "ap̚" },
["ăt"] = { "at̚", "ak̚", "ak̚" },
["â"] = { "ə", "ə", "ə" },
["âc"] = { "ək̚", "ək̚", "ək̚" },
["âm"] = { "əm", "əm", "əm" },
["ân"] = { "ən", "əŋ", "əŋ" },
["âng"] = { "əŋ", "əŋ", "əŋ" },
["âp"] = { "əp̚", "əp̚", "əp̚" },
["ât"] = { "ət̚", "ək̚", "ək̚" },
["âu"] = { "əw", "əw", "əw" },
["ây"] = { "əj", "əj", "əj" },
["e"] = { "ɛ", "ɛ", "ɛ" },
["ec"] = { "ɛk̚", "ɛk̚", "ɛk̚" },
["em"] = { "ɛm", "ɛm", "ɛm" },
["en"] = { "ɛn", "ɛŋ", "ɛŋ" },
["eń"] = { "ɛn", "ɛn", "ɛn" },
["eng"] = { "ɛŋ", "ɛŋ", "ɛŋ" },
["eo"] = { "ɛw", "ɛw", "ɛw" },
["ep"] = { "ɛp̚", "ɛp̚", "ɛp̚" },
["et"] = { "ɛt̚", "ɛt̚", "ɛk̚" },
["ê"] = { "e", "ej", "ej" },
["êc"] = { "ek̚", "ek̚", "ek̚" },
["êch"] = { "əjk̟̚", "et̚", "əːt̚" },
["êm"] = { "em", "em", "em" },
["ên"] = { "en", "en", "əːn" },
["êng"] = { "eŋ", "eŋ", "eŋ" },
["ênh"] = { "əjŋ̟", "en", "əːn" },
["êp"] = { "ep̚", "ep̚", "ep̚" },
["êt"] = { "et̚", "et̚", "əːt̚" },
["êu"] = { "ew", "ew", "ew" },
["i"] = { "i", "ɪj", "ɪj" },
["ia"] = { "iə", "iə", "iə" },
["ic"] = { "ïk̟̚", "ïk̟̚", "ïk̟̚" },
["ich"] = { "ïk̟̚", "ɨt̚", "ɨt̚" },
["iêc"] = { "iək̚", "iək̚", "iək̚" },
["iêm"] = { "iəm", "iəm", "im" },
["iên"] = { "iən", "iəŋ", "iəŋ" },
["iêng"] = { "iəŋ", "iəŋ", "iəŋ" },
["iêp"] = { "iəp̚", "iəp̚", "ip̚" },
["iêt"] = { "iət̚", "iək̚", "iək̚" },
["iêu"] = { "iəw", "iw", "iw" },
["im"] = { "im", "im", "im" },
["in"] = { "in", "in", "ɨn" },
["inh"] = { "ïŋ", "ɨn", "ɨn" },
["ip"] = { "ip̚", "ip̚", "ip̚" },
["it"] = { "it̚", "it̚", "ɨt̚" },
["iu"] = { "iw", "iw", "iw" },
["o"] = { "ɔ", "ɔ", "ɔ" },
["oa"] = { "waː", "waː", "waː" },
["oac"] = { "waːk̚", "waːk̚", "waːk̚" },
["oach"] = { "wajk̟̚", "wat̚", "wat̚" },
["oai"] = { "waːj", "waːj", "waːj" },
["oam"] = { "waːm", "waːm", "waːm" },
["oan"] = { "waːn", "waːŋ", "waːŋ" },
["oang"] = { "waːŋ", "waːŋ", "waːŋ" },
["oanh"] = { "wajŋ̟", "wɛɲ", "wan" },
["oao"] = { "waːw", "waːw", "waːw" },
["oap"] = { "waːp̚", "waːp̚", "waːp̚" },
["oat"] = { "waːt̚", "waːk̚", "waːk̚" },
["oay"] = { "waj", "waj", "waj" },
["oă"] = { "wa", "wa", "wa" },
["oăc"] = { "wak̚", "wak̚", "wak̚" },
["oăm"] = { "wam", "wam", "wam" },
["oăn"] = { "wan", "waŋ", "waŋ" },
["oăng"] = { "waŋ", "waŋ", "waŋ" },
["oăt"] = { "wat̚", "wak̚", "wak̚" },
["oc"] = { "awk͡p̚", "awk͡p̚", "awk͡p̚" },
["oe"] = { "wɛ", "wɛ", "wɛ" },
["oem"] = { "wɛm", "wɛm", "wɛm" },
["oen"] = { "wɛn", "wɛŋ", "wɛŋ" },
["oeo"] = { "wɛw", "wɛw", "wɛw" },
["oet"] = { "wɛt̚", "wɛk̚", "wɛk̚" },
["oi"] = { "ɔj", "ɔj", "ɔj" },
["om"] = { "ɔm", "ɔm", "ɔm" },
["on"] = { "ɔn", "ɔŋ", "ɔŋ" },
["ong"] = { "awŋ͡m", "awŋ͡m", "awŋ͡m" },
["ooc"] = { "ɔk̚", "ɔk̚", "ɔk̚" },
["oong"] = { "ɔŋ", "ɔŋ͡m", "ɔŋ" },
["op"] = { "ɔp̚", "ɔp̚", "ɔp̚" },
["ot"] = { "ɔt̚", "ɔk̚", "ɔk̚" },
["ô"] = { "o", "ow", "ow" },
["ôc"] = { "əwk͡p̚", "əwk͡p̚", "əwk͡p̚" },
["ôi"] = { "oj", "oj", "oj" },
["ôm"] = { "om", "om", "om" },
["ôn"] = { "on", "oŋ", "oŋ" },
["ôń"] = { "on", "on", "on" },
["ông"] = { "əwŋ͡m", "əwŋ͡m", "əwŋ͡m" },
["ôôc"] = { "ok̚", "ok̚", "ok̚" },
["ôông"] = { "oŋ", "oŋ", "oŋ" },
["ôp"] = { "op̚", "op̚", "op̚" },
["ôt"] = { "ot̚", "ok̚", "ok̚" },
["ơ"] = { "əː", "əː", "əː" },
["ơi"] = { "əːj", "əːj", "əːj" },
["ơm"] = { "əːm", "əːm", "əːm" },
["ơn"] = { "əːn", "əːŋ", "əːŋ" },
["ơng"] = { "əːŋ", "əːŋ", "əːŋ" },
["ơp"] = { "əːp̚", "əːp̚", "əːp̚" },
["ơt"] = { "əːt̚", "əːk̚", "əːk̚" },
["u"] = { "u", "ʊw", "ʊw" },
["ua"] = { "uə", "uə", "uə" },
["uac"] = { "waːk̚", "waːk̚", "waːk̚" },
["uach"] = { "wajk̟̚", "wat̚", "wat̚" },
["uai"] = { "waːj", "waːj", "waːj" },
["uan"] = { "waːn", "waːŋ", "waːŋ" },
["uang"] = { "waːŋ", "waːŋ", "waːŋ" },
["uanh"] = { "wajŋ̟", "wɛɲ", "wan" },
["uao"] = { "waːw", "waːw", "waːw" },
["uap"] = { "waːp̚", "waːp̚", "waːp̚" },
["uat"] = { "waːt̚", "waːk̚", "waːk̚" },
["uau"] = { "waw", "waw", "wa(ː)w" },
["uay"] = { "waj", "waj", "waj" },
["uă"] = { "wa", "wa", "wa" },
["uăc"] = { "wak̚", "wak̚", "wak̚" },
["uăm"] = { "wam", "wam", "wam" },
["uăn"] = { "wan", "waŋ", "waŋ" },
["uăng"] = { "waŋ", "waŋ", "waŋ" },
["uăp"] = { "wap̚", "wap̚", "wap̚" },
["uăt"] = { "wat̚", "wak̚", "wak̚" },
["uâ"] = { "wə", "wə", "wə" },
["uâc"] = { "wək̚", "wək̚", "wək̚" },
["uân"] = { "wən", "wəŋ", "wəŋ" },
["uâng"] = { "wəŋ", "wəŋ", "wəŋ" },
["uât"] = { "wət̚", "wək̚", "wək̚" },
["uây"] = { "wəj", "wəj", "wəj" },
["uc"] = { "ʊwk͡p̚", "ʊwk͡p̚", "ʊwk͡p̚" },
["ue"] = { "wɛ", "wɛ", "wɛ" },
["uen"] = { "wɛn", "wɛŋ", "wɛŋ" },
["ueo"] = { "wɛw", "wɛw", "wɛw" },
["uep"] = { "wɛp̚", "wɛp̚", "wɛp̚" },
["uet"] = { "wɛt̚", "wɛt̚", "wɛt̚" },
["uê"] = { "we", "wej", "wej" },
["uêch"] = { "wəjk̟̚", "wet̚", "wəːt̚" },
["uên"] = { "wen", "wen", "wəːn" },
["uênh"] = { "wəjŋ̟", "wen", "wəːn" },
["uêt"] = { "wet̚", "wet̚", "wəːt̚" },
["uêu"] = { "weu", "weu", "wew" },
["ui"] = { "uj", "uj", "uj" },
["uin"] = { "win", "win", "wɨn" },
["uit"] = { "wit̚", "wit̚", "wit̚" },
["um"] = { "um", "um", "ʊm" },
["un"] = { "un", "un", "ʊwŋ͡m" },
["ung"] = { "ʊwŋ͡m", "ʊwŋ͡m", "ʊwŋ͡m" },
["unh"] = { "ujŋ̟", "un", "uwn" },
["uo"] = { "wɔ", "wɔ", "wɔ" },
["uô"] = { "uə", "uə", "uə" },
["uôc"] = { "uək̚", "uək̚", "uək̚" },
["uôi"] = { "uəj", "uj", "uj" },
["uôm"] = { "uəm", "uəm", "uəm" },
["uôn"] = { "uən", "uəŋ", "uəŋ" },
["uông"] = { "uəŋ", "uəŋ", "uəŋ" },
["uôt"] = { "uət̚", "uək̚", "uək̚" },
["uơ"] = { "wəː", "wəː", "wəː" },
["uơi"] = { "wəːj", "wəːj", "wəːj" },
["uơn"] = { "wəːn", "wəːŋ", "wəːŋ" },
["uơt"] = { "wəːt̚", "wəːk̚", "wəːk̚" },
["up"] = { "up̚", "up̚", "ʊp̚" },
["ut"] = { "ut̚", "ʊk̚", "ʊk͡p̚" },
["uy"] = { "wi", "wɪj", "wɪj" },
["uya"] = { "wiə", "wiə", "wiə" },
["uych"] = { "wïk̟̚", "wɨk̟̚", "wɨt̚" },
["uyn"] = { "win", "win", "wɨn" },
["uich"] = { "wïk̟̚", "wɨk̟̚", "wɨt̚" },
["uyê"] = { "wiə", "wiə", "wiə" },
["uyên"] = { "wiən", "wiəŋ", "wiəŋ" },
["uyênh"] = { "wiəŋ̟", "wiən", "wən" },
["uyêt"] = { "wiət̚", "wiək̚", "wiək̚" },
["uynh"] = { "wïŋ̟", "wɨn", "wɨn" },
["uyp"] = { "wip̚", "wip̚", "wip̚" },
["uyt"] = { "wit̚", "wɨt̚", "wɨt̚" },
["uyu"] = { "wiw", "wiw", "wiw" },
["ư"] = { "ɨ", "ɨ", "ɨ" },
["ưa"] = { "ɨə", "ɨə", "ɨə" },
["ưc"] = { "ɨk̚", "ɨk̚", "ɨk̚" },
["ưi"] = { "ɨj", "ɨj", "ɨj" },
["ưm"] = { "ɨm", "ɨm", "ɨm" },
["ưn"] = { "ɨn", "ɨŋ", "ɨŋ" },
["ưng"] = { "ɨŋ", "ɨŋ", "ɨŋ" },
["ươc"] = { "ɨək̚", "ɨək̚", "ɨək̚" },
["ươi"] = { "ɨəj", "ɨj", "ɨj" },
["ươm"] = { "ɨəm", "ɨəm", "ɨəm" },
["ươn"] = { "ɨən", "ɨəŋ", "ɨəŋ" },
["ương"] = { "ɨəŋ", "ɨəŋ", "ɨəŋ" },
["ươp"] = { "ɨəp̚", "ɨəp̚", "ɨəp̚" },
["ươt"] = { "ɨət̚", "ɨək̚", "ɨək̚" },
["ươu"] = { "iəw", "ɨəw", "ɨəw" },
["ưt"] = { "ɨt̚", "ɨk̚", "ɨk̚" },
["ưu"] = { "iw", "ɨw", "ɨw" },
["y"] = { "i", "ɪj", "ɪj" },
["yêc"] = { "iək̚", "iək̚", "iək̚" },
["yêm"] = { "iəm", "iəm", "iəm" },
["yên"] = { "iən", "iəŋ", "iəŋ" },
["yêng"] = { "iəŋ", "iəŋ", "iəŋ" },
["yêp"] = { "iəp̚", "iəp̚", "iəp̚" },
["yêt"] = { "iət̚", "iək̚", "iək̚" },
["yêu"] = { "iəw", "iw", "iw" },
}
local varieties = {
["hn"] = { "Hà Nội", 1 },
["hue"] = { "Huế", 2 },
["hcmc"] = { "Hồ Chí Minh City", 3 },
}
local hcmc_opt_w = {
["ch"] = true,
["d"] = true,
["l"] = true,
["s"] = true,
["t"] = true, ["th"] = true, ["tr"] = true,
["x"] = true,
}
local variations = {
["hn"] = { { "^ɹ", "z" }, { " ɹ", " z" } },
["hue"] = { { "z", "j" }, { "ʂ", "s" }, { "awŋ͡m", "ɔŋ" } },
["hcmc"] = { { "ʂ", "s" }, { "v", "j" }, { "z", "j" } },
}
function export.ipa(frame)
local respellings = {}
local variety_respellings = {}
local output = {}
for variety, _ in pairs(varieties) do
output[variety] = {}
end
local output_text = {}
local iparams = {
["mvi"] = {type = "boolean"},
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local params = {
[1] = {list = true},
["hn"] = {},
["hue"] = {},
["hcmc"] = {},
["pagename"] = {}, -- for testing or documentation
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
local function canonicalize_respelling(respelling)
if respelling:find("^raw:") then
return {raw = (respelling:gsub("^raw:", ""))}
else
if respelling == "+" then
respelling = pagename
end
return {respelling = rsub(rsub(ulower(respelling), "%-", " "), ",", "")}
end
end
local mvi = iargs.mvi
local raw_respellings = args[1]
if not raw_respellings[1] then
raw_respellings = {"+"}
end
for _, raw_respelling in ipairs(raw_respellings) do
table.insert(respellings, canonicalize_respelling(raw_respelling))
end
for variety, _ in pairs(varieties) do
if args[variety] == "-" or (mvi and (variety == "hue" or variety == "hcmc")) then
variety_respellings[variety] = false
elseif args[variety] then
local variety_raw_respellings = split_on_comma(args[variety])
variety_respellings[variety] = {}
for _, raw_respelling in ipairs(variety_raw_respellings) do
table.insert(variety_respellings[variety], canonicalize_respelling(raw_respelling))
end
end
end
for variety, location in pairs(varieties) do
if variety_respellings[variety] == false then
-- skip variety
output[variety] = false
else
local var_respellings = variety_respellings[variety] or respellings
for i, spec in ipairs(var_respellings) do
local pronunciation = {}
if spec.raw then
table.insert(output[variety], spec.raw)
else
for syllable in mw.text.gsplit(spec.respelling, " ", true) do
local ipa = {}
local initial, final, tone = nil, nil, nil
tone = 1
syllable = toNFD(syllable)
syllable = rsub(syllable, "([nr]́)", toNFC)
for diac_pattern, tone_num in pairs(tone_diacritics) do
if rmatch(syllable, diac_pattern) then
tone = tone_num
break
end
end
syllable = toNFC(rsub(syllable, "[̣̀́̉̃]", ""))
if syllable == "gi" or syllable == "gin" then
syllable = rsub(syllable, "gi", "gii")
end
initial = rmatch(syllable, "^g[ꞗꞖbcdđgklmnpqrŕstvx]+") or rmatch(syllable, "^(g[hiy])[^cmnpt]")
or rmatch(syllable, "^g") or rmatch(syllable, "^[ꞗꞖbcdđghklmnpqrŕstvxz]+") or ""
initial = (rmatch(syllable, "^giê.") and syllable ~= "giên") and "d" or initial
initial = rmatch(syllable, "qu$") and "qu" or initial
final = usub(syllable, ulen(initial) + 1, -1)
local ipa, seq, detoned = {}, location[2], ""
if mvi then
if mvi_initial_ipa[initial] then
table.insert(ipa, mvi_initial_ipa[initial])
else
local initial_cluster = ""
for cc in ugcodepoint(initial) do
local ch = u(cc)
initial_cluster = initial_cluster .. mvi_initial_ipa[ch]
end
table.insert(ipa, initial_cluster)
end
elseif initial_ipa[initial] then
table.insert(ipa, initial_ipa[initial][seq])
else
local initial_cluster = ""
initial = rsub(initial, "r$", "ŕ")
for cc in ugcodepoint(initial) do
local ch = u(cc)
initial_cluster = initial_cluster .. initial_ipa[ch][seq]
end
initial_cluster = rsub(initial_cluster, "([cgknpt]h)", function(digraph)
return initial_ipa[digraph][seq] end)
table.insert(ipa, initial_cluster)
end
if final_ipa[final] then
detoned = rsub(final_ipa[final][seq], "^([wu].+)", function(nucleus)
if initial .. final == "qua" then
nucleus = final_ipa["oa"][seq]
elseif initial .. final == "qui" then
nucleus = final_ipa["uy"][seq]
end
if variety == "hcmc" then
if initial == "q" then
nucleus = rsub(nucleus, "^u", "w")
end
if hcmc_opt_w[initial] then
nucleus = rsub(nucleus, "^w", "⁽ʷ⁾")
end
end
return nucleus end)
table.insert(ipa, detoned)
else
error(("Unrecognised final: \"%s\""):format(final))
end
if tone == 3 and rmatch(final, "[chmngpt]") then
tone = "3a"
end
table.insert(ipa, tone_contour[variety][tone])
table.insert(pronunciation, table.concat(ipa, ""))
end
table.insert(output[variety], "[" .. table.concat(pronunciation, " ") .. "]")
end
end
end
end
for variety, location in pairs(varieties) do
if mvi and variety == "hn" then
location[1] = "Đông Kinh"
end
if output[variety] ~= false then
local ipa_items = {}
for i, out in ipairs(output[variety]) do
if variety == "hcmc" then
-- FIXME: Move this up to the pronunciation-computing loop.
out = rsub(out, "[hk]w", "w")
out = rsub(out, "ʔw", "(ʔ)w")
end
table.insert(ipa_items, {pron = out, separator = i == 1 and "" or ", "})
local alternative = out
for _, variation in ipairs(variations[variety]) do
alternative = rsub(alternative, variation[1], variation[2])
end
if alternative ~= out then
table.insert(ipa_items, {pron = alternative, separator = " ~ "})
end
end
table.insert(output_text, location[2], "\n* " .. require("Module:IPA").format_IPA_full {
lang = lang,
a = {location[1]},
items = ipa_items,
separator = "",
})
else
table.insert(output_text, location[2], "")
end
end
local saw_raw = false
local actual_respellings = {}
for _, spec in ipairs(respellings) do
if spec.raw then
saw_raw = true
break
else
table.insert(actual_respellings, spec.respelling)
end
end
if not saw_raw and table.concat(actual_respellings, "") ~= ulower(pagename) then
table.insert(output_text, #output_text + 1, "\n* ''Phonetic spelling'': " .. rsub(table.concat(actual_respellings, ", "), "ŕ", "R"))
end
return rsub(table.concat(output_text, ""), "^\n(.)", "%1")
end
return export
s01zv55zjrvuck5su6b7cj1s5n8dsoh
Wiksiyonaryo:Usaping Wikimedia
4
34256
176655
175916
2026-04-26T00:58:57Z
MediaWiki message delivery
1908
/* Request for comment (global AI policy) */ bagong seksyon
176655
wikitext
text/x-wiki
__NOEDITSECTION__
Maligayang pagdating sa talakayang '''Usaping Wikimedia''' ng Wiktionary sa Tagalog. Dito matatagpuan ang mga paksang nakatuon sa mga balita at usaping teknikal ng <span class="plainlinks">[https://wikimediafoundation.org/ Wikimedia]</span>. Maaaring ang linalaman nito ay nasa Tagalog, Ingles, o iba pang mga wika.
{{Wiktionary:Puntahan ng Pamayanan}}
----
== Final proposed modifications to the Universal Code of Conduct Enforcement Guidelines and U4C Charter now posted ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The proposed modifications to the [[foundation:Special:MyLanguage/Policy:Universal_Code_of_Conduct/Enforcement_guidelines|Universal Code of Conduct Enforcement Guidelines]] and the U4C Charter [[m:Universal_Code_of_Conduct/Annual_review/2025/Proposed_Changes|are now on Meta-wiki for community notice]] in advance of the voting period. This final draft was developed from the previous two rounds of community review. Community members will be able to vote on these modifications starting on 17 April 2025. The vote will close on 1 May 2025, and results will be announced no later than 12 May 2025. The U4C election period, starting with a call for candidates, will open immediately following the announcement of the review results. More information will be posted on [[m:Special:MyLanguage//Universal_Code_of_Conduct/Coordinating_Committee/Election|the wiki page for the election]] soon.
Please be advised that this process will require more messages to be sent here over the next two months.
The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] is a global group dedicated to providing an equitable and consistent implementation of the UCoC. This annual review was planned and implemented by the U4C. For more information and the responsibilities of the U4C, you may [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Charter|review the U4C Charter]].
Please share this message with members of your community so they can participate as well.
-- In cooperation with the U4C, [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 02:05, 4 Abril 2025 (UTC)
</div>
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=28469465 -->
== Vote now on the revised UCoC Enforcement Guidelines and U4C Charter ==
<div lang="en" dir="ltr" class="mw-content-ltr">
The voting period for the revisions to the Universal Code of Conduct Enforcement Guidelines ("UCoC EG") and the UCoC's Coordinating Committee Charter is open now through the end of 1 May (UTC) ([https://zonestamp.toolforge.org/1746162000 find in your time zone]). [[m:Special:MyLanguage/Universal_Code_of_Conduct/Annual_review/2025/Voter_information|Read the information on how to participate and read over the proposal before voting]] on the UCoC page on Meta-wiki.
The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] is a global group dedicated to providing an equitable and consistent implementation of the UCoC. This annual review of the EG and Charter was planned and implemented by the U4C. Further information will be provided in the coming months about the review of the UCoC itself. For more information and the responsibilities of the U4C, you may [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Charter|review the U4C Charter]].
Please share this message with members of your community so they can participate as well.
In cooperation with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 00:35, 17 Abril 2025 (UTC)
</div>
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=28469465 -->
== <span lang="en" dir="ltr">Vote on proposed modifications to the UCoC Enforcement Guidelines and U4C Charter</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
The voting period for the revisions to the Universal Code of Conduct Enforcement Guidelines and U4C Charter closes on 1 May 2025 at 23:59 UTC ([https://zonestamp.toolforge.org/1746162000 find in your time zone]). [[m:Special:MyLanguage/Universal Code of Conduct/Annual review/2025/Voter information|Read the information on how to participate and read over the proposal before voting]] on the UCoC page on Meta-wiki.
The [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|Universal Code of Conduct Coordinating Committee (U4C)]] is a global group dedicated to providing an equitable and consistent implementation of the UCoC. This annual review was planned and implemented by the U4C. For more information and the responsibilities of the U4C, you may [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|review the U4C Charter]].
Please share this message with members of your community in your language, as appropriate, so they can participate as well.
In cooperation with the U4C -- <section end="announcement-content" />
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
[[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 03:42, 29 Abril 2025 (UTC)</div>
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=28618011 -->
== We will be enabling the new Charts extension on your wiki soon! ==
''(Apologies for posting in English)''
Hi all! We have good news to share regarding the ongoing problem with graphs and charts affecting all wikis that use them.
As you probably know, the [[:mw:Special:MyLanguage/Extension:Graph|old Graph extension]] was disabled in 2023 [[listarchive:list/wikitech-l@lists.wikimedia.org/thread/EWL4AGBEZEDMNNFTM4FRD4MHOU3CVESO/|due to security reasons]]. We’ve worked in these two years to find a solution that could replace the old extension, and provide a safer and better solution to users who wanted to showcase graphs and charts in their articles. We therefore developed the [[:mw:Special:MyLanguage/Extension:Chart|Charts extension]], which will be replacing the old Graph extension and potentially also the [[:mw:Extension:EasyTimeline|EasyTimeline extension]].
After successfully deploying the extension on Italian, Swedish, and Hebrew Wikipedia, as well as on MediaWiki.org, as part of a pilot phase, we are now happy to announce that we are moving forward with the next phase of deployment, which will also include your wiki.
The deployment will happen in batches, and will start from '''May 6'''. Please, consult [[:mw:Special:MyLanguage/Extension:Chart/Project#Deployment Timeline|our page on MediaWiki.org]] to discover when the new Charts extension will be deployed on your wiki. You can also [[:mw:Special:MyLanguage/Extension:Chart|consult the documentation]] about the extension on MediaWiki.org.
If you have questions, need clarifications, or just want to express your opinion about it, please refer to the [[:mw:Special:MyLanguage/Extension_talk:Chart/Project|project’s talk page on Mediawiki.org]], or ping me directly under this thread. If you encounter issues using Charts once it gets enabled on your wiki, please report it on the [[:mw:Extension_talk:Chart/Project|talk page]] or at [[phab:tag/charts|Phabricator]].
Thank you in advance! -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 15:07, 6 Mayo 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Sannita_(WMF)/Mass_sending_test&oldid=28663781 -->
== <span lang="en" dir="ltr">Call for Candidates for the Universal Code of Conduct Coordinating Committee (U4C)</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
The results of voting on the Universal Code of Conduct Enforcement Guidelines and Universal Code of Conduct Coordinating Committee (U4C) Charter is [[m:Special:MyLanguage/Universal Code of Conduct/Annual review/2025#Results|available on Meta-wiki]].
You may now [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Election/2025/Candidates|submit your candidacy to serve on the U4C]] through 29 May 2025 at 12:00 UTC. Information about [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Election/2025|eligibility, process, and the timeline are on Meta-wiki]]. Voting on candidates will open on 1 June 2025 and run for two weeks, closing on 15 June 2025 at 12:00 UTC.
If you have any questions, you can ask on [[m:Talk:Universal Code of Conduct/Coordinating Committee/Election/2025|the discussion page for the election]]. -- in cooperation with the U4C, </div><section end="announcement-content" />
</div>
<bdi lang="en" dir="ltr">[[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|usapan]])</bdi> 22:08, 15 Mayo 2025 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=28618011 -->
== RfC ongoing regarding Abstract Wikipedia (and your project) ==
<div lang="en" dir="ltr" class="mw-content-ltr">
''(Apologies for posting in English, if this is not your first language)''
Hello all! We opened a discussion on Meta about a very delicate issue for the development of [[:m:Special:MyLanguage/Abstract Wikipedia|Abstract Wikipedia]]: where to store the abstract content that will be developed through functions from Wikifunctions and data from Wikidata. Since some of the hypothesis involve your project, we wanted to hear your thoughts too.
We want to make the decision process clear: we do not yet know which option we want to use, which is why we are consulting here. We will take the arguments from the Wikimedia communities into account, and we want to consult with the different communities and hear arguments that will help us with the decision. The decision will be made and communicated after the consultation period by the Foundation.
You can read the various hypothesis and have your say at [[:m:Abstract Wikipedia/Location of Abstract Content|Abstract Wikipedia/Location of Abstract Content]]. Thank you in advance! -- [[User:Sannita (WMF)|Sannita (WMF)]] ([[User talk:Sannita (WMF)|<span class="signature-talk">{{int:Talkpagelinktext}}</span>]]) 15:27, 22 Mayo 2025 (UTC)
</div>
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Sannita_(WMF)/Mass_sending_test&oldid=28768453 -->
== <span lang="en" dir="ltr">Wikimedia Foundation Board of Trustees 2025 Selection & Call for Questions</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Wikimedia Foundation elections/2025/Announcement/Selection announcement|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation elections/2025/Announcement/Selection announcement}}&language=&action=page&filter= {{int:please-translate}}]''
Dear all,
This year, the term of 2 (two) Community- and Affiliate-selected Trustees on the Wikimedia Foundation Board of Trustees will come to an end [1]. The Board invites the whole movement to participate in this year’s selection process and vote to fill those seats.
The Elections Committee will oversee this process with support from Foundation staff [2]. The Governance Committee, composed of trustees who are not candidates in the 2025 community-and-affiliate-selected trustee selection process (Raju Narisetti, Shani Evenstein Sigalov, Lorenzo Losa, Kathy Collins, Victoria Doronina and Esra’a Al Shafei) [3], is tasked with providing Board oversight for the 2025 trustee selection process and for keeping the Board informed. More details on the roles of the Elections Committee, Board, and staff are here [4].
Here are the key planned dates:
* May 22 – June 5: Announcement (this communication) and call for questions period [6]
* June 17 – July 1, 2025: Call for candidates
* July 2025: If needed, affiliates vote to shortlist candidates if more than 10 apply [5]
* August 2025: Campaign period
* August – September 2025: Two-week community voting period
* October – November 2025: Background check of selected candidates
* Board’s Meeting in December 2025: New trustees seated
Learn more about the 2025 selection process - including the detailed timeline, the candidacy process, the campaign rules, and the voter eligibility criteria - on this Meta-wiki page [[m:Special:MyLanguage/Wikimedia_Foundation_elections/2025|[link]]].
'''Call for Questions'''
In each selection process, the community has the opportunity to submit questions for the Board of Trustees candidates to answer. The Election Committee selects questions from the list developed by the community for the candidates to answer. Candidates must answer all the required questions in the application in order to be eligible; otherwise their application will be disqualified. This year, the Election Committee will select 5 questions for the candidates to answer. The selected questions may be a combination of what’s been submitted from the community, if they’re alike or related. [[m:Special:MyLanguage/Wikimedia_Foundation_elections/2025/Questions_for_candidates|[link]]]
'''Election Volunteers'''
Another way to be involved with the 2025 selection process is to be an Election Volunteer. Election Volunteers are a bridge between the Elections Committee and their respective community. They help ensure their community is represented and mobilize them to vote. Learn more about the program and how to join on this Meta-wiki page [[m:Wikimedia_Foundation_elections/2025/Election_volunteers|[link].]]
Thank you!
[1] https://meta.wikimedia.org/wiki/Wikimedia_Foundation_elections/2022/Results
[2] https://foundation.wikimedia.org/wiki/Committee:Elections_Committee_Charter
[3] https://foundation.wikimedia.org/wiki/Resolution:Committee_Membership,_December_2024
[4] https://meta.wikimedia.org/wiki/Wikimedia_Foundation_elections_committee/Roles
[5] https://meta.wikimedia.org/wiki/Wikimedia_Foundation_elections/2025/FAQ
[6] https://meta.wikimedia.org/wiki/Wikimedia_Foundation_elections/2025/Questions_for_candidates
Best regards,
Victoria Doronina
Board Liaison to the Elections Committee
Governance Committee<section end="announcement-content" />
</div>
[[Tagagamit:MediaWiki message delivery|MediaWiki message delivery]] ([[Usapang tagagamit:MediaWiki message delivery|kausapin]]) 03:08, 28 Mayo 2025 (UTC)
<!-- Message sent by User:RamzyM (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=28618011 -->
== Vote now in the 2025 U4C Election ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Apologies for writing in English.
{{Int:Please-translate}}
Eligible voters are asked to participate in the 2025 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee]] election. More information–including an eligibility check, voting process information, candidate information, and a link to the vote–are available on Meta at the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2025|2025 Election information page]]. The vote closes on 17 June 2025 at [https://zonestamp.toolforge.org/1750161600 12:00 UTC].
Please vote if your account is eligible. Results will be available by 1 July 2025. -- In cooperation with the U4C, [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 23:01, 13 Hunyo 2025 (UTC) </div>
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=28848819 -->
== <span lang="en" dir="ltr">Wikimedia Foundation Board of Trustees 2025 - Call for Candidates</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation elections/2025/Announcement/Call for candidates|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation elections/2025/Announcement/Call for candidates}}&language=&action=page&filter= {{int:please-translate}}]</div>
Hello all,
The [[m:Special:MyLanguage/Wikimedia Foundation elections/2025|call for candidates for the 2025 Wikimedia Foundation Board of Trustees selection is now open]] from June 17, 2025 – July 2, 2025 at 11:59 UTC [1]. The Board of Trustees oversees the Wikimedia Foundation's work, and each Trustee serves a three-year term [2]. This is a volunteer position.
This year, the Wikimedia community will vote in late August through September 2025 to fill two (2) seats on the Foundation Board. Could you – or someone you know – be a good fit to join the Wikimedia Foundation's Board of Trustees? [3]
Learn more about what it takes to stand for these leadership positions and how to submit your candidacy on [[m:Special:MyLanguage/Wikimedia Foundation elections/2025/Candidate application|this Meta-wiki page]] or encourage someone else to run in this year's election.
Best regards,
Abhishek Suryawanshi<br />
Chair of the Elections Committee
On behalf of the Elections Committee and Governance Committee
[1] https://meta.wikimedia.org/wiki/Special:MyLanguage/Wikimedia_Foundation_elections/2025/Call_for_candidates
[2] https://foundation.wikimedia.org/wiki/Legal:Bylaws#(B)_Term.
[3] https://meta.wikimedia.org/wiki/Special:MyLanguage/Wikimedia_Foundation_elections/2025/Resources_for_candidates<section end="announcement-content" />
</div>
[[Tagagamit:MediaWiki message delivery|MediaWiki message delivery]] ([[Usapang tagagamit:MediaWiki message delivery|kausapin]]) 17:45, 17 Hunyo 2025 (UTC)
<!-- Message sent by User:RamzyM (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=28866958 -->
== <span lang="en" dir="ltr">Sister Projects Task Force reviews Wikispore and Wikinews</span> ==
<div lang="en" dir="ltr">
<section begin="message"/>
Dear Wikimedia Community,
The [[m:Wikimedia Foundation Community Affairs Committee|Community Affairs Committee (CAC)]] of the Wikimedia Foundation Board of Trustees assigned [[m:Wikimedia Foundation Community Affairs Committee/Sister Projects Task Force|the Sister Projects Task Force (SPTF)]] to update and implement a procedure for assessing the lifecycle of Sister Projects – wiki [[m:Wikimedia projects|projects supported by Wikimedia Foundation (WMF)]].
A vision of relevant, accessible, and impactful free knowledge has always guided the Wikimedia Movement. As the ecosystem of Wikimedia projects continues to evolve, it is crucial that we periodically review existing projects to ensure they still align with our goals and community capacity.
Despite their noble intent, some projects may no longer effectively serve their original purpose. '''Reviewing such projects is not about giving up – it's about responsible stewardship of shared resources'''. Volunteer time, staff support, infrastructure, and community attention are finite, and the non-technical costs tend to grow significantly as our ecosystem has entered a different age of the internet than the one we were founded in. Supporting inactive projects or projects that didn't meet our ambitions can unintentionally divert these resources from areas with more potential impact.
Moreover, maintaining projects that no longer reflect the quality and reliability of the Wikimedia name stands for, involves a reputational risk. An abandoned or less reliable project affects trust in the Wikimedia movement.
Lastly, '''failing to sunset or reimagine projects that are no longer working can make it much harder to start new ones'''. When the community feels bound to every past decision – no matter how outdated – we risk stagnation. A healthy ecosystem must allow for evolution, adaptation, and, when necessary, letting go. If we create the expectation that every project must exist indefinitely, we limit our ability to experiment and innovate.
Because of this, SPTF reviewed two requests concerning the lifecycle of the Sister Projects to work through and demonstrate the review process. We chose Wikispore as a case study for a possible new Sister Project opening and Wikinews as a case study for a review of an existing project. Preliminary findings were discussed with the CAC, and a community consultation on both proposals was recommended.
=== Wikispore ===
The [[m:Wikispore|application to consider Wikispore]] was submitted in 2019. SPTF decided to review this request in more depth because rather than being concentrated on a specific topic, as most of the proposals for the new Sister Projects are, Wikispore has the potential to nurture multiple start-up Sister Projects.
After careful consideration, the SPTF has decided '''not to recommend''' Wikispore as a Wikimedia Sister Project. Considering the current activity level, the current arrangement allows '''better flexibility''' and experimentation while WMF provides core infrastructural support.
We acknowledge the initiative's potential and seek community input on what would constitute a sufficient level of activity and engagement to reconsider its status in the future.
As part of the process, we shared the decision with the Wikispore community and invited one of its leaders, Pharos, to an SPTF meeting.
Currently, we especially invite feedback on measurable criteria indicating the project's readiness, such as contributor numbers, content volume, and sustained community support. This would clarify the criteria sufficient for opening a new Sister Project, including possible future Wikispore re-application. However, the numbers will always be a guide because any number can be gamed.
=== Wikinews ===
We chose to review Wikinews among existing Sister Projects because it is the one for which we have observed the highest level of concern in multiple ways.
Since the SPTF was convened in 2023, its members have asked for the community's opinions during conferences and community calls about Sister Projects that did not fulfil their promise in the Wikimedia movement.[https://commons.wikimedia.org/wiki/File:WCNA_2024._Sister_Projects_-_opening%3F_closing%3F_merging%3F_splitting%3F.pdf <nowiki>[1]</nowiki>][https://meta.wikimedia.org/wiki/Wikimedia_Foundation_Community_Affairs_Committee/Sister_Projects_Task_Force#Wikimania_2023_session_%22Sister_Projects:_past,_present_and_the_glorious_future%22 <nowiki>[2]</nowiki>][https://meta.wikimedia.org/wiki/WikiConvention_francophone/2024/Programme/Quelle_proc%C3%A9dure_pour_ouvrir_ou_fermer_un_projet_%3F <nowiki>[3]</nowiki>] Wikinews was the leading candidate for an evaluation because people from multiple language communities proposed it. Additionally, by most measures, it is the least active Sister Project, with the greatest drop in activity over the years.
While the Language Committee routinely opens and closes language versions of the Sister Projects in small languages, there has never been a valid proposal to close Wikipedia in major languages or any project in English. This is not true for Wikinews, where there was a proposal to close English Wikinews, which gained some traction but did not result in any action[https://meta.wikimedia.org/wiki/Proposals_for_closing_projects/Closure_of_English_Wikinews <nowiki>[4]</nowiki>][https://meta.wikimedia.org/wiki/WikiConvention_francophone/2024/Programme/Quelle_proc%C3%A9dure_pour_ouvrir_ou_fermer_un_projet_%3F <nowiki>[5]</nowiki>, see section 5] as well as a draft proposal to close all languages of Wikinews[https://meta.wikimedia.org/wiki/Talk:Proposals_for_closing_projects/Archive_2#Close_Wikinews_completely,_all_languages? <nowiki>[6]</nowiki>].
[[:c:File:Sister Projects Taskforce Wikinews review 2024.pdf|Initial metrics]] compiled by WMF staff also support the community's concerns about Wikinews.
Based on this report, SPTF recommends a community reevaluation of Wikinews. We conclude that its current structure and activity levels are the lowest among the existing sister projects. SPTF also recommends pausing the opening of new language editions while the consultation runs.
SPTF brings this analysis to a discussion and welcomes discussions of alternative outcomes, including potential restructuring efforts or integration with other Wikimedia initiatives.
'''Options''' mentioned so far (which might be applied to just low-activity languages or all languages) include but are not limited to:
*Restructure how Wikinews works and is linked to other current events efforts on the projects,
*Merge the content of Wikinews into the relevant language Wikipedias, possibly in a new namespace,
*Merge content into compatibly licensed external projects,
*Archive Wikinews projects.
Your insights and perspectives are invaluable in shaping the future of these projects. We encourage all interested community members to share their thoughts on the relevant discussion pages or through other designated feedback channels.
=== Feedback and next steps ===
We'd be grateful if you want to take part in a conversation on the future of these projects and the review process. We are setting up two different project pages: [[m:Public consultation about Wikispore|Public consultation about Wikispore]] and [[m:Public consultation about Wikinews|Public consultation about Wikinews]]. Please participate between 27 June 2025 and 27 July 2025, after which we will summarize the discussion to move forward. You can write in your own language.
I will also host a community conversation 16th July Wednesday 11.00 UTC and 17th July Thursday 17.00 UTC (call links to follow shortly) and will be around at Wikimania for more discussions.
<section end="message"/>
</div>
-- [[User:Victoria|Victoria]] on behalf of the Sister Project Task Force, 20:58, 27 Hunyo 2025 (UTC)
<!-- Message sent by User:Johan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Johan_(WMF)/Sister_project_MassMassage_on_behalf_of_Victoria/Target_list&oldid=28911188 -->
== <span lang="en" dir="ltr">Temporary accounts will be rolled out soon</span> ==
<div lang="en" dir="ltr">
<section begin="body"/>
Hello, we are the Wikimedia Foundation [[mw:Special:MyLanguage/Product Safety and Integrity|Product Safety and Integrity]] team. We would like to announce that '''we plan to enable [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts|temporary accounts]] for this wiki in the week of September 1'''.
Temporary accounts are successfully live on 30 wikis, including many large ones like German, Japanese, and French. The change they bring is especially relevant to logged-out editors, who this feature is designed to protect. But it is also relevant to community members like mentors, patrollers, and admins – anyone who reverts edits, blocks users, or otherwise interacts with logged-out editors as part of keeping the wikis safe and accurate.
'''Why we are building temporary accounts'''
Our wikis should be safer to edit by default for logged-out editors. Temporary accounts allow people to continue editing the wikis without creating an account, while avoiding publicly tying their edits to their IP address. We believe this is in the best interest of our logged-out editors, who make valuable contributions to the wikis and who may later create accounts and grow our community of editors, admins, and other roles. Even though the wikis do warn logged-out editors that their IP address will be associated with their edit, many people may not understand what an IP address is, or that it could be used to connect them to other information about them in ways they might not expect.
Additionally, our moderation software and tools rely too heavily on network origin (IP addresses) to identify users and patterns of activity, especially as IP addresses themselves are becoming less stable as identifiers. Temporary accounts allow for more precise interactions with logged-out editors, including more precise blocks, and can help limit how often we unintentionally end up blocking good-faith users who use the same IP addresses as bad-faith users.
'''How temporary accounts work'''
[[File:Temporary account banner and empty talk page.png|thumb]]
Any time a logged-out user publishes an edit on this wiki, a cookie will be set in this user's browser, and a temporary account tied with this cookie will be automatically created. This account's name will follow the pattern: <code dir=ltr>~2025-12345-67</code> (a tilde, current year, a number). On pages like Recent Changes or page history, this name will be displayed. The cookie will expire 90 days after its creation. As long as it exists, all edits made from this device will be attributed to this temporary account. It will be the same account even if the IP address changes, unless the user clears their cookies or uses a different device or web browser. A record of the IP address used at the time of each edit will be stored for 90 days after the edit. However, only some logged-in users will be able to see it.
'''What does this mean for different groups of users?'''
'''For logged-out editors'''
* This increases privacy: currently, if you do not use a registered account to edit, then everybody can see the IP address for the edits you made, even after 90 days. That will no longer be possible on this wiki.
* If you use a temporary account to edit from different locations in the last 90 days (for example at home and at a coffee shop), the edit history and the IP addresses for all those locations will now be recorded together, for the same temporary account. Users who [[foundation:Special:MyLanguage/Policy:Access_to_temporary_account_IP_addresses|meet the relevant requirements]] will be able to view this data. If this creates any personal security concerns for you, please contact talktohumanrights at wikimedia.org for advice.
'''For community members interacting with logged-out editors'''
* A temporary account is uniquely linked to a device. In comparison, an IP address can be shared with different devices and people (for example, different people at school or at work might have the same IP address).
* Compared to the current situation, it will be safer to assume that a temporary user's talk page belongs to only one person, and messages left there will be read by them. As you can see in the screenshot, temporary account users will receive notifications. It will also be possible to thank them for their edits, ping them in discussions, and invite them to get more involved in the community.
'''For users who use IP address data to moderate and maintain the wiki'''
* '''For patrollers''' who track persistent abusers, investigate violations of policies, etc.: Users who [[foundation:Special:MyLanguage/Policy:Access_to_temporary_account_IP_addresses|meet the requirements]] will be able to reveal temporary users' IP addresses and all contributions made by temporary accounts from a specific IP address or range ([[Special:IPContributions]]). They will also have access to useful information about the IP addresses thanks to the [[mw:Special:MyLanguage/Trust and Safety Product/IP Info|IP Info]] feature. Many other pieces of software have been built or adjusted to work with temporary accounts, including AbuseFilter, global blocks, Global User Contributions, and more. (For information for volunteer developers on how to update the code of your tools – see the last part of the message.)
* '''For admins blocking logged-out editors''':
** It will be possible to block many abusers by just blocking their temporary accounts. A blocked person won't be able to create new temporary accounts quickly if the admin selects the [[mw:Special:MyLanguage/Autoblock|autoblock]] option.
** It will still be possible to block an IP address or IP range.
* Temporary accounts will not be retroactively applied to contributions made before the deployment. On Special:Contributions, you will be able to see existing IP user contributions, but not new contributions made by temporary accounts on that IP address. Instead, you should use Special:IPContributions for this.
'''Our requests for you, and next steps'''
* If you know of any tools, bots, gadgets etc. using data about IP addresses or being available for logged-out users, you may want to test if they work on [[testwiki:Main_Page|testwiki]] or [[test2wiki:Main_Page|test2wiki]]. If you are a volunteer developer, [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts/For developers|read our documentation for developers]], and in particular, the section on [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts/For developers#How should I update my code?|how your code might need to be updated]].
* If you want to test the temporary account experience, for example just to check what it feels like, go to testwiki or test2wiki and edit without logging in.
* Tell us if you know of any difficulties that need to be addressed. We will try to help, and if we are not able, we will consider the available options.
* Look at our [[m:Meta:Babel#Temporary_Accounts:_access_to_IP_addresses_and_next_steps|previous message]] about requirements for users without extended rights who may need access to IP addresses.
To learn more about the project, check out [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts/FAQ|our FAQ]] – you will find many useful answers there. You may also [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts/Updates|look at the updates]] (we have just posted one) and [[mw:Newsletter:Product Safety and Integrity|subscribe to our new newsletter]]. If you'd like to talk to me (Szymon) off-wiki, you will find me on Discord and Telegram. Thank you!<section end="body" />
</div>
<bdi lang="en" dir="ltr">[[m:user:NKohli (WMF)|NKohli (WMF)]], [[m:user:SGrabarczuk (WMF)|SGrabarczuk (WMF)]]</bdi> 21:37, 26 Agosto 2025 (UTC)
(This message was sent to [[:Wiktionary:Usaping WikiMedia]] and is being posted here due to a redirect.)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Quiddity_(WMF)/sandbox6&oldid=29181713 -->
== <span lang="en" dir="ltr">Wikifunctions will be deployed on your wiki on 2025-09-17</span> ==
<div lang="en" dir="ltr">
<section begin="Message"/>
:''[[m:Special:MyLanguage/Abstract Wikipedia/Wikifunctions deployment|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Abstract Wikipedia/Wikifunctions deployment}}&language=&action=page&filter= {{int:please-translate}}]''
Hi all, we want to let you know that [[:f:|Wikifunctions]] is coming to your project soon! When enabled, you will be able to call functions from your project, and integrate them in your articles.
A function is something that takes one or more inputs and transforms them into a desired output. Think of adding up two numbers, or converting miles into metres, or calculating how much time has passed since an event, or declining a word into a case. This is usually done with templates that are complicated to create or to import. With Wikifunctions, you will be able to do this with just a couple of clicks!
Please check out [[:f:Special:MyLanguage/Wikifunctions:Introduction|these tutorials]] for more details. You’re also invited to [[:f:Special:CreateObject|create functions]] that you find useful, or [[:f:Wikifunctions:Suggest a function|ask for help from the Wikifunctions community]].
We would like to invite you to contribute to Wikifunctions, by translating the existing functions labels into your language, so that more users in your community can more easily reuse them on the project. You can also translate the messages for the Wikifunctions interface on TranslateWiki ([https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-wikilambda-ve&filter=%21translated&action=translate here for VisualEditor messages], and [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-wikilambda-user&filter=%21translated&action=translate here for the Wikifunctions interface proper]).
Of course, we are happy to help in case there are questions or difficulties, and we are ready to listen to your feedback. Please ping me directly in case of necessity or reach out to me [[User talk:Sannita (WMF)|on my talk page]]. -- [[User:Sannita (WMF)|Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 19:02, 10 Setyembre 2025 (UTC)
<section end="Message"/>
</div>
(This message was sent to [[:Wiksiyonaryo:Usaping WikiMedia]] and is being posted here due to a redirect.)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Sannita_(WMF)/Mass_sending_test&oldid=29237323 -->
== Pagpapalit ng serbidor - May parating na panahon na maaari mo lamang basahin ang iyong wiki na hindi tatagal nang masyado ==
<section begin="server-switch"/><div class="plainlinks">
[[:m:Special:MyLanguage/Tech/Server switch|Basahin ang mensaheng ito sa ibang wika]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Tech%2FServer+switch&language=&action=page&filter= {{int:please-translate}}]
Ililipat ng [[foundation:|Pundasyong Wikimedia]] ang trapikong dumadaloy sa pagitan ng mga sentro ng datos (''data centers'') nito. Sisiguraduhin nito na mananatiling ''online'' ang Wikipedia at ang mga iba pang wiki ng Wikimedia kahit kung lumipas ang isang sakuna.
Ililipat ang lahat ng trapiko sa '''{{#time:j xg|2025-09-24|tl}}'''. Magsisimula ang pagpapalit sa '''[https://zonestamp.toolforge.org/{{#time:U|2025-09-24T15:00|en}} {{#time:H:i e|2025-09-24T15:00}}]'''.
Sa kasamaang palad, dahil sa limitasyon sa [[mw:Special:MyLanguage/Manual:What is MediaWiki?|MediaWiki]], kailangan munang ihinto ang lahat ng pagbabago habang ginagawa ang paglilipat. Humihingi po kami ng paumanhin para sa pagkagambalang ito, at sinisikap naming mabawasan ito sa mga susunod na panahon.
May ipapakitang bandera sa lahat ng mga wiki 30 minuto bago magsimula ang operasyong ito. <span lang="en" dir="ltr" class="mw-content-ltr">This banner will remain visible until the end of the operation.</span>
<span lang="en" dir="ltr" class="mw-content-ltr">You can contribute to the [https://meta.wikimedia.org/w/index.php?title=Special%3ATranslate&group=Centralnotice-tgroup-read_only_banner&task=view&language=&filter=&action=translate translation or proofreading] of this banner text.</span>
'''Makababasa ka, nguni hindi makakapagbago, ng lahat ng mga wiki sa loob lamang ng maikling panahon.'''
*Hindi ka makakapagbago ng hanggang sa isang oras sa {{#time:l j xg Y|2025-09-24|tl}}.
*Kung susubukin mong magbago o maglagak sa mga oras na ito, makakikita ka ng mensahe ng kamalian. Inaasahan namin na walang mawawala na pagbabago sa mga minutong ito, ngunit hindi namin ito maipapangako. Kung nakikita mo ang mensahe ng kamalian, mangyaring maghintay hanggang bumalik sa normal na ang lahat. Pagkatapos niyon ay maaari mo nang mai-save ang iyong edit. Pero, amin namin kayong pinapayuhan na gumawa muna ng kopya ng iyong mga pagbabago, upang makasigurado.
''Mga ibang epekto'':
*Babagal ang mga ''background job'' at maaaring tanggalin ang ilan. Maaaring hindi maisasapanahon ang mga pulang kawing ng kasimbilis ng normal. Kung maglilikha ka ng artikulo na nakakawing na sa ibang lugar, mas matagal na mananatiling pula ang kawing. Kailangang pahintuin ang mga ilang pangmatagalang iskrip.
* Inaasahan namin na ang mga ''code deployment'' ay mangyayari katulad ng sa anumang ibang mga linggo. Pero, may mga ''case-by-case code freezes'' na mangyayari sa tamang panahon kung kakailanganin nila ito pagkatapos.
* Hindi magagamit ang [[mw:Special:MyLanguage/GitLab|GitLab]] ng mga nasa 90 minutos.
Maaaring ipagpaliban ang proyektong ito kung kinakailangan. Maaari mong [[wikitech:Switch_Datacenter|basahin ang iskedyul sa wikitech.wikimedia.org]]. Ihahayag ang anumang pagbabago sa iskedyul.
'''Mangyaring ibahagi ang impormasyon sa iyong pamayanan.'''</div><section end="server-switch"/>
<span dir=ltr>[[m:User:Trizek (WMF)|Trizek (WMF)]] ([[m:User talk:Trizek (WMF)|{{int:talk}}]])</span> 15:41, 18 Setyembre 2025 (UTC)
(This message was sent to [[:Wiksiyonaryo:Usaping WikiMedia]] and is being posted here due to a redirect.)
<!-- Message sent by User:Trizek (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29170715 -->
== <span lang="en" dir="ltr">Have your say: vote for the 2025 Board of Trustees</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
Hello all,
The voting period for the [[m:Special:MyLanguage/Wikimedia Foundation elections/2025|2025 Board of Trustees election]] is now open. Candidates are running for two (2) seats on the Board.
To check your voter eligibility, please visit the [[m:Special:MyLanguage/Wikimedia Foundation elections/2025/Voter eligibility guidelines|voter eligibility page]].
Learn more about them by [[m:Special:MyLanguage/Wikimedia Foundation elections/2025/Candidates|reading their application statements and watch their candidacy videos]].
When you are ready, go to the [[m:Special:SecurePoll/vote/405|SecurePoll voting page to vote]].
'''The vote is open from October 8 at 00:00 UTC to October 22 at 23:59 UTC.'''
Best regards,
Abhishek Suryawanshi<br />Chair, Elections Committee<section end="announcement-content" />
</div>
[[Tagagamit:MediaWiki message delivery|MediaWiki message delivery]] ([[Usapang tagagamit:MediaWiki message delivery|kausapin]]) 04:49, 9 Oktubre 2025 (UTC)
<!-- Message sent by User:RamzyM (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29360896 -->
== <span lang="en" dir="ltr">Help us decide the name of the new Abstract Wikipedia project</span> ==
<div lang="en" dir="ltr">
<section begin="function1"/>
{{int:Hello}}. Please help pick a name for the new Abstract Wikipedia wiki project. This project will be a wiki that will enable users to combine functions from [[:f:|Wikifunctions]] and data from Wikidata in order to generate natural language sentences in any supported languages. These sentences can then be used by any Wikipedia (or elsewhere).
There will be two rounds of voting, each followed by legal review of candidates, with votes beginning on 20 October and 17 November 2025. Our goal is to have a final project name selected on mid-December 2025. If you would like to participate, then '''[[m:Special:MyLanguage/Abstract Wikipedia/Abstract Wikipedia naming contest|please learn more and vote now]]''' at meta-wiki.
{{Int:Feedback-thanks-title}}
<section end="function1"/>
</div>
-- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 11:44, 20 Oktubre 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29432175 -->
== <span lang="en" dir="ltr">Seeking volunteers to join several of the movement’s committees</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
Each year, typically from October through December, several of the movement’s committees seek new volunteers.
Read more about the committees on their Meta-wiki pages:
* [[m:Special:MyLanguage/Affiliations Committee|Affiliations Committee (AffCom)]]
* [[m:Special:MyLanguage/Ombuds commission|Ombuds commission (OC)]]
* [[m:Special:MyLanguage/Wikimedia Foundation/Legal/Community Resilience and Sustainability/Trust and Safety/Case Review Committee|Case Review Committee (CRC)]]
Applications for the committees open on October 30, 2025. Applications for the Affiliations Committee, Ombuds commission and the Case Review Committee close on December 11, 2025. Learn how to apply by [[m:Special:MyLanguage/Wikimedia Foundation/Legal/Committee appointments|visiting the appointment page on Meta-wiki]]. Post to the talk page or email cst[[File:At sign.svg|16x16px|link=|(_AT_)]]wikimedia.org with any questions you may have.
For the Committee Support team,
<section end="announcement-content" />
</div>
-[[m:User:MKaur (WMF)| MKaur (WMF)]] 14:14, 30 Oktubre 2025 (UTC)
<!-- Message sent by User:MKaur (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29517125 -->
== <span lang="en" dir="ltr">Reminder: Help us decide the name of the new Abstract Wikipedia project</span> ==
<div lang="en" dir="ltr">
<section begin="function2"/>
{{int:Hello}}. Reminder: Please help to choose name for the new Abstract Wikipedia wiki project. The finalist vote starts today. The finalists for the name are: <span lang="en" dir="ltr" class="mw-content-ltr">Abstract Wikipedia, Multilingual Wikipedia, Wikiabstracts, Wikigenerator, Proto-Wiki</span>. If you would like to participate, then '''[[m:Special:MyLanguage/Abstract Wikipedia/Abstract Wikipedia naming contest|please learn more and vote now]]''' at meta-wiki.
{{Int:Feedback-thanks-title}}
<section end="function2"/>
</div>
-- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 14:23, 20 Nobyembre 2025 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29583860 -->
== Thank You for Last Year – Join Wiki Loves Ramadan 2026 ==
Dear Wikimedia communities,
We hope you are doing well, and we wish you a happy New Year.
''Last year, we captured light. This year, we’ll capture legacy.''
In 2025, communities around the world shared the glow of Ramadan nights and the warmth of collective iftars. In 2026, ''Wiki Loves Ramadan'' is expanding, bringing more stories, more cultures, and deeper global connections across Wikimedia projects.
We invite you to explore the ''Wiki Loves Ramadan 2026'' [[m:Special:MyLanguage/Wiki Loves Ramadan 2026|Meta page]] to learn how you can participate and [[m:Special:MyLanguage/Wiki Loves Ramadan 2026/Participating communities|sign up]] your community.
📷 ''Photo campaign on '' [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan 2026|Wikimedia Commons]]
If you have questions about the project, please refer to the FAQs:
* [[m:Special:MyLanguage/Wiki Loves Ramadan/FAQ/|Meta-Wiki]]
* [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan/FAQ|Wikimedia Commons]]
''Early registration for updates is now open via the '''[[m:Special:RegisterForEvent/2710|Event page]]'''''
''Stay connected and receive updates:''
* [https://t.me/WikiLovesRamadan Telegram channel]
* [https://lists.wikimedia.org/postorius/lists/wikilovesramadan.lists.wikimedia.org/ Mailing list]
We look forward to collaborating with you and your community.
'''The Wiki Loves Ramadan 2026 Organizing Team''' 19:45, 16 Enero 2026 (UTC)
(This message was sent to [[:Wiksiyonaryo:Usaping WikiMedia]] and is being posted here due to a redirect.)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29879549 -->
== <span lang="en" dir="ltr">Annual review of the Universal Code of Conduct and Enforcement Guidelines</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
I am writing to you to let you know the annual review period for the Universal Code of Conduct and Enforcement Guidelines is open now. You can make suggestions for changes through 9 February 2026. This is the first step of several to be taken for the annual review. [[m:Special:MyLanguage/Universal Code of Conduct/Annual review/2026|Read more information and find a conversation to join on the UCoC page on Meta]].
The [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|Universal Code of Conduct Coordinating Committee]] (U4C) is a global group dedicated to providing an equitable and consistent implementation of the UCoC. This annual review was planned and implemented by the U4C. For more information and the responsibilities of the U4C, [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|you may review the U4C Charter]].
Please share this information with other members in your community wherever else might be appropriate.
-- In cooperation with the U4C, [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]])<section end="announcement-content" />
</div>
21:02, 19 Enero 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29905753 -->
== Action Required: Update templates/modules for electoral maps (Migrating from P1846 to P14226) ==
Hello everyone,
This is a notice regarding an ongoing data migration on Wikidata that may affect your election-related templates and Lua modules (such as <code>Module:Itemgroup/list</code>).
'''The Change:'''<br />
Currently, many templates pull electoral maps from Wikidata using the property [[:d:Property:P1846|P1846]], combined with the qualifier [[:d:Property:P180|P180]]: [[:d:Q19571328|Q19571328]].
We are migrating this data (across roughly 4,000 items) to a newly created, dedicated property: '''[[:d:Property:P14226|P14226]]'''.
'''What You Need To Do:'''<br />
To ensure your templates and infoboxes do not break or lose their maps, please update your local code to fetch data from [[:d:Property:P14226|P14226]] instead of the old [[:d:Property:P1846|P1846]] + [[:d:Property:P180|P180]] structure. A [[m:Wikidata/Property Migration: P1846 to P14226/List|list of pages]] was generated using Wikimedia Global Search.
'''Deadline:'''<br />
We are temporarily retaining the old data on [[:d:Property:P1846|P1846]] to allow for a smooth transition. However, to complete the data cleanup on Wikidata, the old [[:d:Property:P1846|P1846]] statements will be removed after '''May 1, 2026'''. Please update your modules and templates before this date to prevent any disruption to your wiki's election articles.
Let us know if you have any questions or need assistance with the query logic. Thank you for your help! [[User:ZI Jony|ZI Jony]] using [[Tagagamit:MediaWiki message delivery|MediaWiki message delivery]] ([[Usapang tagagamit:MediaWiki message delivery|kausapin]]) 17:11, 3 Abril 2026 (UTC)
(This message was sent to [[:Wiksiyonaryo:Usaping WikiMedia]] and is being posted here due to a redirect.)
<!-- Message sent by User:ZI Jony@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29941252 -->
== Request for comment (global AI policy) ==
<bdi lang="en" dir="ltr" class="mw-content-ltr">
Apologies for writing in English. {{int:Please-translate}}
A [[:m:Requests for comment/Artificial intelligence policy|request for comment]] is currently being held to decide on a global AI policy. {{int:Feedback-thanks-title}}
[[Tagagamit:MediaWiki message delivery|MediaWiki message delivery]] ([[Usapang tagagamit:MediaWiki message delivery|kausapin]]) 00:58, 26 Abril 2026 (UTC)
</bdi>
<!-- Message sent by User:Codename Noreste@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30424282 -->
jxwx8zx07wy0gx3o220i9o1aufri7kq
Module:ja-see
828
34350
176656
170043
2026-04-26T05:33:02Z
Yivan000
4078
176656
Scribunto
text/plain
-- Prevent substitution.
if mw.isSubsting() then
return require("Module:unsubst")
end
local m_ja = require("Module:ja")
local m_sc = require("Module:scripts")
local m_str_utils = require("Module:string utilities")
local concat = table.concat
local format_cat = require("Module:utilities").format_categories
local insert = table.insert
local load_data = mw.loadData
local maintenance_cats = require("Module:headword").maintenance_cats
local new_title = mw.title.new
local split = m_str_utils.split
local ugmatch = mw.ustring.gmatch
local ugsub = mw.ustring.gsub
local ulen = m_str_utils.len
local umatch = m_str_utils.match
local usub = m_str_utils.sub
local export = {}
local kana_to_romaji = require("Module:Hrkt-translit").tr
local headword_data = load_data("Module:headword/data")
local pagename = headword_data.pagename
local lang = require('Module:languages').getByCode("ja")
local Hira = m_sc.getByCode("Hira")
local Kana = m_sc.getByCode("Kana")
local Hrkt = m_sc.getByCode("Hrkt")
local langname = lang:getCanonicalName()
local data = load_data("Module:ja/data")
local d_kyu = load_data("Module:ja/data/kyu")
local range = load_data("Module:ja/data/range")
local function gmatch_array(s, pattern)
local output = {}
for e in ugmatch(s, pattern) do
insert(output, e)
end
return output
end
local function map(arr, f)
local output = {}
for _, e in ipairs(arr) do
local fe = f(e)
if fe ~= nil then
insert(output, fe)
end
end
return output
end
local function filter(arr, f)
local output = {}
for _, e in ipairs(arr) do
if f(e) then
insert(output, e)
end
end
return output
end
local function contains(arr, item)
for _, e in ipairs(arr) do
if e == item then
return true
end
end
return false
end
-- f should be str->str in the following functions
local function memoize(f)
local output = {}
return function(s)
if not output[s] then
output[s] = f(s)
end
return output[s]
end
end
local getContent_memo = memoize(function(title)
return new_title(title):getContent() or ''
end)
local function group(arr, f)
local r = {}
for _, e in ipairs(arr) do
local fe = f(e)
if r[#r] and r[#r].key == fe then
insert(r[#r], e)
else
insert(r, { e, key = fe })
end
end
return r
end
local function ja(text)
return '<span lang="ja" class="Jpan">' .. text .. '</span>'
end
local function link(lemma, display)
return ja("[[" .. lemma .. "#" .. langname .. "|" .. (display or lemma) .. "]]")
end
local function link_bracket(lemma, display)
return ja("【[[" .. lemma .. "#" .. langname .. "|" .. (display or lemma) .. "]]】")
end
local result
--[[ returns an array of definitions, each having the format
{
def = <definition>,
kanji_spellings = <array of alternative kanji spellings listed in {{ja-kanjitab|alt=...}}, can be overrided with {{ja-def|...}}>,
kana_spellings = <array of alternative kana spellings listed in the headword template>,
historical_kana_spellings = <array of historical kana spellings listed in the headword template>,
header = <name of PoS header>,
headword_line = <wikicode of headword line>,
}
]]
local function get_definitions_from_wikicode(wikicode, title)
local current_kanji_spellings = {}
local current_kanji_spellings_with_labels = {}
local current_kana_spellings = {}
local current_historical_kana_spellings = {}
local current_head_level = '=='
local current_header = langname
local current_headword_line
local status -- nil, 'under_headword', 'under_kanji', 'in_ja_readings'
wikicode = wikicode:gsub('\n*<br */?>\n*({{ja%-altread)', '%1')
-- in the local function `function format_definition` below,
-- insertion of `|hira=` affects `{{tlb}}`
-- (`{{tlb|ja|followed by a verb phrase|hira=によって}}`)
-- and then that bad wikitext is preprocessed
-- (`The parameter "hira" is not used by this template`).
-- we are not doing anything with `{{tlb}}` anyway,
-- so remove it
wikicode = wikicode:gsub(' *{{tlb.-}}', '')
local output = {}
--TLCHANGE for line in (wikicode:match("==" .. langname .. "==\n(.*)") or ""):gmatch"[^\n]+" do
-- since we use {{=ja=}} format, we do that instead
for line in (wikicode:match("=={{=ja=}}==\n(.*)") or ""):gmatch"[^\n]+" do
if status == 'under_headword' then
if line:match'^#+[^#:*]' then
insert(output, {
def = line
:gsub('<ref>.-<.ref>', '')
:gsub('<ref .->.-<.ref>', '')
:gsub('<ref.-/>', '')
:gsub('{{attention|ja.-}}', '')
:gsub('{{senseid|ja.-}}', ''),
kanji_spellings =
line:match'{{ja%-def|' and split(line:match'{{ja%-def|([^}]+)', '|') or
line:match'<!%-%- kana only %-%->' and {} or
current_kanji_spellings,
kanji_spellings_with_labels = current_kanji_spellings_with_labels,
kana_spellings = current_kana_spellings,
historical_kana_spellings = current_historical_kana_spellings,
header = current_header,
headword_line = current_headword_line,
})
end
elseif status == 'under_kanji' then
if line:match'^#+[^#:*]' then
insert(output, {
def = '#' .. line
:gsub('<ref>.-<.ref>', '')
:gsub('<ref .->.-<.ref>', '')
:gsub('<ref.-/>', '')
:gsub('{{attention|ja.-}}', ''),
kanji_spellings = {},
kanji_spellings_with_labels = {},
kana_spellings = {},
historical_kana_spellings = {},
header = current_header,
headword_line = current_headword_line,
})
elseif line:match'^{{ja%-readings%f[|}%z]' then
output[#output].kanji_readings = {}
status = 'in_ja_readings'
end
elseif status == 'in_ja_readings' then
for rs in line:gmatch'|[a-z]+=([^|}]+)' do
for r in rs:gmatch'(..-)%f[,%z],?' do
r = r:gsub('%-', ''):match('..-%f[<%z]'):match'^%s*(.-)%s*$'
if not contains(output[#output].kanji_readings, r) then
insert(output[#output].kanji_readings, r:gsub('%-', ''):match'^%s*(.-)%s*$')
end
end
end
if line:match'}}' then status = 'under_kanji' end
end
-- the following branches are ordered by frequency; read backwards
if line:match'^{{ja%-noun[|}]' or line:match'^{{ja%-adj[|}]' or
line:match'^{{ja%-pos[|}]' or line:match'^{{ja%-phrase[|}]' or
line:match'^{{ja%-verb[|}]' or line:match'^{{ja%-verb form[|}]' or
line:match'^{{ja%-verb%-suru[|}]' or line:match'{{ja%-altread[|}]' then
local escaped_line = line:gsub('%[%[([^%[%]|]-)|([^%[%]|]-)%]%]', '[[%1`%2]]'):gsub('|hhira=', '|hist='):gsub('|hkata=', '|hist=')
escaped_line = escaped_line:gsub('|hira=', '|') -- ja-altread
escaped_line = escaped_line:gsub('|kata=', '|') -- ja-altread
current_kana_spellings = map(gmatch_array(escaped_line, '|([・、' .. range.kana .. '\'%^%-%. %%]+)'), m_ja.remove_ruby_markup)
current_historical_kana_spellings = map(gmatch_array(escaped_line, '|hist=([' .. range.kana .. '\'%^%-%. %%]+)'), m_ja.remove_ruby_markup)
current_headword_line = line
status = 'under_headword'
elseif line:match'^{{ja%-kanji[|}]' then
current_kana_spellings = {}
current_historical_kana_spellings = {}
current_headword_line = line
insert(output, {
def = '#' .. data.grades[m_ja.kanji_grade(title)],
kanji_spellings = {},
kanji_spellings_with_labels = {},
kana_spellings = {},
historical_kana_spellings = {},
header = current_header,
headword_line = line,
})
status = 'under_kanji'
elseif line:match'^===+[^=]+===+$' then
local head_level_new, header_new = line:match'^(===+)([^=]+)===+$'
if not status or head_level_new:len() <= current_head_level:len() then
current_head_level, current_header = head_level_new, header_new
status = nil
end
elseif line:match("^{{ja%-kanjitab[|}]") then
local alt_argument = line:match("|alt=([^|}]+)")
current_kanji_spellings = alt_argument and split(alt_argument:gsub(':[^,]*', ''), ',') or {}
current_kanji_spellings_with_labels = alt_argument and split(alt_argument, ',') or {}
elseif line:match'^==[^=]+==$' then
break
end
end
return output
end
-- ditto, except that each definition also contains the title of the page it is from
local function get_definitions_from_entry(title)
local wikicode = getContent_memo(title)
local defs = get_definitions_from_wikicode(wikicode, title)
map(defs, function(def)
def.title = title
insert(({ Hira = true, Kana = true, ['Hira+Kana'] = true })[m_ja.script(title)] and def.kana_spellings or def.kanji_spellings, title)
end)
return defs
end
local function format_table_content(defs, frame, title, no_cat)
local function ruby(kanji, kana) -- this function ought to be in [[Module:ja]]
local kanji_segments = ugsub(kanji, "([" .. range.kanji .. range.ideograph .. range.latin .. range.numbers .. "]+)", "`%1`")
-- returns possible matches between kanji and kana
-- for example, match_k('`物`の`哀`れ', 'もののあわれ') returns { '[物](も)の[哀](のあわ)れ', '[物](もの)の[哀](あわ)れ' }
local function match_k(kanji_segments, kana)
if kanji_segments:find('`') then
local kana_portion, kanji_portion, rest = umatch(kanji_segments, '(.-)`(.-)`(.*)')
kana = umatch(kana, '^' .. kana_portion .. '(.*)')
if not kana then
return {}
end
local candidates = {}
for i = 1, ulen(kana) do
for _, candidate in ipairs(match_k(rest, usub(kana, i + 1))) do
insert(candidates, kana_portion .. '[' .. kanji_portion .. '](' .. usub(kana, 1, i) .. ')' .. candidate)
end
end
return candidates
else
return (kanji_segments == kana) and { kana } or {}
end
end
local matches = match_k(kanji_segments, kana)
local output = #matches == 1 and matches[1] or ('[' .. kanji .. '](' .. kana .. ')')
return output:gsub("%[([^%[%]]+)%]%(([^%(%)]+)%)", "<ruby><rb>%1</rb><rt>%2</rt></ruby>")
end
local function format_headword(defs)
local def_title = defs[1].title
local kana = defs[1].kana_spellings[1]
local headword = link_bracket(def_title, kana and pagename ~= kana and ruby(def_title, kana) or def_title)
local kanji_grade = ulen(def_title) == 1 and m_ja.kanji_grade(def_title)
return "<span style=\"font-size:x-large\">" .. headword .. "</span>" .. (kanji_grade and
"<span class=\"explain\" title=\"" .. data.grades[kanji_grade] .. "\" style=\"vertical-align: top;\">" .. data.grade_labels[kanji_grade] .. "</span>" or ""
)
end
local preprocess_memo = memoize(function (s) return frame:preprocess(s) end)
local function format_definitions(defs)
local headword_line_categories = {}
local alt_forms, alt_forms_rep = {}, { [title] = true, [defs[1].title] = true }
local kanji_readings
local function format_definition(def)
local cat_prefixes = {
["CAT"] = true,
["CATEGORY"] = true
}
local def_text = def.def:match'{{rfdef[|}]' and "''This term needs a translation to English.''" or preprocess_memo(def.def
:gsub('^#+ *', '')
--TODO: strip unwanted templates and parser functions (e.g. {{c}}). Will use wiki parser once ready, as this can get very complex.
)
:gsub("(%[%[[ _]*(%a-)[ _]*:.-%]%])", function(link, cat_prefix)
if cat_prefixes[cat_prefix:upper()] then
return ""
end
return link
end)
local def_prefix = def.def:match'^#+':gsub('#', ':')
local def_pos_label = ' <span style="padding-right:.6em;color:var(--wikt-palette-darkgrey, #54595d);font-size:80%">[' .. def.header:ulower() .. ']</span> '
if not no_cat and def.kana_spellings[1] then
local cat_hira, cat_kata = {}, {}
require'Module:Jpan-headword'.cat{
lang = lang,
pagename = title,
categories = cat_hira,
katakana_category = cat_kata,
pos = def.header:gsub('^.', string.ulower)
}
insert(headword_line_categories, format_cat(
cat_hira,
lang,
lang:makeSortKey(def.kana_spellings[1])
))
insert(headword_line_categories, format_cat(
cat_kata,
lang,
lang:makeSortKey(def.kana_spellings[1], Kana)
))
end
if def.kana_spellings[1] then alt_forms_rep[def.kana_spellings[1]] = true end
for _, s in ipairs(def.kanji_spellings) do
if not alt_forms_rep[s] then
alt_forms_rep[s] = true
insert(alt_forms, s)
end
end
for _, s in ipairs(def.kana_spellings) do
if not alt_forms_rep[s] then
alt_forms_rep[s] = true
insert(alt_forms, s)
end
end
kanji_readings = def.kanji_readings or kanji_readings
return def_prefix .. def_pos_label .. def_text
end
local formatted_defs = concat(map(defs, format_definition), '\n')
if #alt_forms == 1 and alt_forms[1] == title then alt_forms = {} end
return concat(headword_line_categories) .. '\n' .. formatted_defs
.. (#alt_forms > 0 and '\n: <div style="background-color:var(--wikt-palette-cream, #f8f8f0)"><span style="color:var(--wikt-palette-darkgrey, #54595d);font-size:80%">'
.. (#alt_forms == 1 and 'Alternative spelling' or 'Alternative spellings')
.. '</span><br><span style="margin-left:.8em">'
.. concat(map(alt_forms, link), ', ')
.. '</span></div>' or '')
.. (kanji_readings and '\n: <div style="background-color:var(--wikt-palette-cream, #f8f8f0)"><span style="color:var(--wikt-palette-darkgrey, #54595d);font-size:80%">Kanji reading:</span><br><span style="margin-left:.8em">'
.. concat(map(kanji_readings, link), ', ')
.. '</span></div>' or '')
end
local is_first_row = true
local function format_row(defs)
local output = '|-\n| style="white-space:nowrap;width:15%;vertical-align:top;' .. (is_first_row and '' or 'border-top:1px solid lightgray;') .. '" | ' .. format_headword(defs)
.. '\n| style="' .. (is_first_row and '' or 'border-top:1px solid lightgray;') .. '" |\n' .. format_definitions(defs) .. '\n'
is_first_row = false
return output
end
local def_groups = group(defs, function(def) return def.title .. ',' .. (def.kana_spellings[1] or '') end)
local rows = map(def_groups, format_row)
return '{| style="width: 100%"\n' .. concat(rows) .. '|}'
end
local function translit(title)
local sc = m_ja.script(title)
if sc == "Hira" or sc == "Kana" or sc == "Hira+Kana" then
return kana_to_romaji(title, "ja")
end
end
local function translit_kana(title)
return kana_to_romaji(title, "ja")
end
local redirect_type = {
-- auto-detected types
{
name = 'romaji',
article = 'the',
sc = "Latn",
display = function(title)
return title
end,
detect = function(title, defs)
if m_ja.script(title) ~= 'Romaji' then return {} end
local rom = title:ulower():gsub('[- ]', '')
return filter(defs, function(def)
for _, k in ipairs(def.kana_spellings) do
if rom == kana_to_romaji(k, "ja") then
insert(result, format_cat({langname .. " romanizations"}, lang))
return true
end
end
return false
end)
end,
no_cat = true,
},
{
name = 'hiragana spelling',
article = 'the',
translit = translit_kana,
detect = function(title, defs)
if m_ja.script(title) ~= 'Hira' then return {} end
local rom = kana_to_romaji(title, "ja"):ulower():gsub('[- ]', '')
return filter(defs, function(def)
if not contains(def.kana_spellings, title) and contains(def.historical_kana_spellings, title) then
return false
end
for _, k in ipairs(def.kana_spellings) do
if rom == kana_to_romaji(k, "ja") then
return true
end
end
return false
end)
end,
},
{
name = 'katakana spelling',
article = 'the',
translit = translit_kana,
detect = function(title, defs)
if m_ja.script(title) ~= 'Kana' then return {} end
local rom = kana_to_romaji(title, "ja"):ulower():gsub('[- ]', '')
return filter(defs, function(def)
if not contains(def.kana_spellings, title) and contains(def.historical_kana_spellings, title) then
return false
end
for _, k in ipairs(def.kana_spellings) do
if rom == kana_to_romaji(k, "ja") then
return true
end
end
return false
end)
end,
},
{
name = 'historical kana spelling',
article = 'a',
translit = function(title)
return kana_to_romaji(title, "ja", nil, {hist = true})
end,
detect = function(title, defs)
return filter(defs, function(def)
if not contains(def.kana_spellings, title) and contains(def.historical_kana_spellings, title) then
local sc = m_ja.script(title)
if sc == 'Hira' then
insert(result, format_cat(
{langname .. " historical hiragana"},
lang,
lang:makeSortKey(def.historical_kana_spellings[1], Hira)
))
elseif sc == 'Kana' then
insert(result, format_cat(
{langname .. " historical katakana"},
lang,
lang:makeSortKey(def.historical_kana_spellings[1], Kana)
))
elseif sc == 'Hira+Kana' then
insert(result, format_cat(
{langname .. " terms spelled with mixed historical kana"},
lang,
lang:makeSortKey(def.historical_kana_spellings[1], Hrkt)
))
end
return true
end
end)
end,
},
{
name = 'kyūjitai',
article = 'the',
detect = function(title, defs)
local shin = title:gsub('.[\128-\191]*', function(c)
if c == '辨' or c == '辯' or c == '瓣' then return '弁' end
return d_kyu[1]:match('(%S*)' .. c .. '%s') or c
end)
if shin == title then return {} end
return ulen(title) == 1 and filter(defs, function(def) return def.header == "Kanji" end) or filter(defs, function(def)
if shin == def.title then
if def.kana_spellings[1] then
insert(result, format_cat({langname .. " kyūjitai spellings"}, lang, lang:makeSortKey(def.kana_spellings[1])))
end
return true
end
end)
end,
display = function(title)
return ja(title:gsub('.[\128-\191]*', function(c)
return d_kyu[1]:match(c .. '(&#x%x+;)%s') or c
end))
end,
no_cat = true,
},
{
name = 'kyūjitai of an alternative spelling',
article = 'the',
detect = function(title, defs, key)
local shin = title:gsub('.[\128-\191]*', function(c)
if c == '辨' or c == '辯' or c == '瓣' then return '弁' end
return d_kyu[1]:match('(%S*)' .. c .. '%s') or c
end)
if shin == title then return {} end
return filter(defs, function(def)
if shin ~= def.title and contains(def.kanji_spellings, shin) and (not key or contains(def.kana_spellings, key)) then
if def.kana_spellings[1] then
insert(result, format_cat({langname .. " kyūjitai spellings"}, lang, lang:makeSortKey(def.kana_spellings[1])))
end
return true
end
end)
end,
display = function(title)
return ja(title:gsub('.[\128-\191]*', function(c)
return d_kyu[1]:match(c .. '(&#x%x+;)%s') or c
end))
end,
display_labels = function(title)
local shin = title:gsub('.[\128-\191]*', function(c)
if c == '辨' or c == '辯' or c == '瓣' then return '弁' end
return d_kyu[1]:match('(%S*)' .. c .. '%s') or c
end)
return '(' .. link(shin) .. ')'
end,
no_cat = true,
},
{
name = 'alternative spelling',
article = 'an',
detect = function(title, defs, key)
return filter(defs, function(def)
return contains(def.kanji_spellings, title) and (not key or contains(def.kana_spellings, key)) or contains(def.kana_spellings, title)
end)
end,
display_labels = function(title, defs)
for _, def in ipairs(defs) do for _, kl in ipairs(def.kanji_spellings_with_labels) do
local ks, lb = kl:match'^(.-):(.+)$'
if ks == title then
return require("Module:labels").show_labels { labels = split(lb, ' '), lang = lang }
end
end end
return ''
end,
is_fallback = true,
},
-- manual input only types
['vk'] = {
name = 'variant kanji form',
article = 'a',
detect = function(title, defs)
return ulen(title) == 1 and filter(defs, function(def)
return def.header == "Kanji"
end) or defs
end,
},
['iter'] = {
name = 'form with iteration marks',
article = 'a',
detect = function(_, defs)
return defs
end,
},
['niter'] = {
name = 'form without iteration marks',
article = 'a',
detect = function(_, defs)
return defs
end,
},
['eshin'] = {
name = 'extended shinjitai',
article = 'an',
detect = function(title, defs)
return ulen(title) == 1 and filter(defs, function(def)
return def.header == "Kanji"
end) or defs
end,
},
names = {
['rom'] = 1,
['hira'] = 2,
['kata'] = 3,
['hkana'] = 4,
['kyu'] = 5,
['kyualt'] = 6,
['alt'] = 7,
['vk'] = 'vk',
['iter'] = 'iter',
['niter'] = 'niter',
['eshin'] = 'eshin',
},
}
function export.show(frame)
local title = pagename
local args = require("Module:parameters").process(frame:getParent().args, {
[1] = { list = true },
['term'] = { list = true, allow_holes = true, separate_no_index = true },
['type'] = { list = true, allow_holes = true, separate_no_index = true },
['key'] = { list = true, allow_holes = true },
})
result = {
'{| class="wikitable ja-see" style="min-width:70%"\n|-\n| <b>',
'Para sa pagbigkas at ibig-sabihin ng ', ja(title), ' – tingnan ang ', --TLCHANGE
#args[1] > 1 and 'mga ' or '',
'entradang ito.',
'</b>',
}
local bad_redirects = {}
local name_count = 0
local name_previous, rt_previous
local function make_footnote(term)
insert(result, '\n|-\n| (Ang salitang ito, ') --TLCHANGE '\n|-\n| (This term, '
insert(result, require("Module:links").full_link({
lang = lang,
sc = rt_previous.sc and require("Module:scripts").getByCode(rt_previous.sc) or nil,
alt = (rt_previous.display or ja)(title),
tr = (rt_previous.translit or translit)(term or title) or nil
}, "term"))
insert(result, ', ay ') --TLCHANGE ', is '
insert(result, name_previous)
insert(result, ' ng ') --TLCHANGE ' of the above term'
--TLCHANGE add "mga" pluraliation
if name_count > 1 then insert(result, 'mga') end
insert(result, ' salitang nasa itaas')
--TLCHANGE remove this if name_count > 1 then insert(result, 's') end
insert(result, '.)')
end
local function add_to_result(name, rt, defs, term)
if rt.display_labels then
name = name .. ' ' .. rt.display_labels(title, defs)
end
if name_previous and name_previous ~= name then
make_footnote(term)
name_count = 1
else
name_count = name_count + 1
end
name_previous = name
rt_previous = rt
insert(result, '\n|-\n| style="background-color:var(--wikt-palette-white,#ffffff);color:inherit" |\n')
insert(result, format_table_content(defs, frame, title, rt.no_cat))
end
for i_lemma, lemma in ipairs(args[1]) do
local defs = get_definitions_from_entry(lemma)
--mw.logObject(defs) --use this to inspect "defs"
local label_term = args.term[i_lemma] or args.term.default
local label_lemma = args.type[i_lemma] or args.type.default
if label_lemma then
local ll1, ll2 = label_lemma:match'^(.-)(%S*)$'
local rt = redirect_type[redirect_type.names[ll2]]
if rt then
defs = rt.detect(title, defs)
if #defs > 0 then
-- This code deals with the redirect type description's articles like "the hiragana", "a rare hiragana", "an unusual hiragana" when there is a manual input |type=....
add_to_result((label_lemma:match'^an? ' or label_lemma:match'^the ') and ll1 .. rt.name or rt.article .. ' ' .. ll1 .. rt.name, rt, defs, label_term)
else
insert(bad_redirects, lemma)
end
else
add_to_result(label_lemma, {}, defs, label_term)
end
else
local success = false
for _, rt in ipairs(redirect_type) do
if not (success and rt.is_fallback) then
local defs_try = rt.detect(title, defs, args.key[i_lemma])
if #defs_try > 0 then
success = true
add_to_result(rt.article .. ' ' .. rt.name, rt, defs_try, label_term)
end
end
end
if not success then
insert(bad_redirects, lemma)
end
end
end
if name_previous then
make_footnote(args.term.default)
if new_title(langname .. ' kanji read as ' .. title, 14).exists then
insert(result, '<br><span style="font-size:85%;">For a list of all kanji read as ')
insert(result, ja(title))
insert(result, ', see ')
insert(result, '[[:Category:' .. langname .. ' kanji read as ')
insert(result, title)
insert(result, ']].)</span>')
end
insert(result, '\n|}')
else -- failure to find any definitions
result[6] = ': ' .. concat(map(args[1], function(title) return '<span style="font-size:120%">' .. link(title) .. '</span>' end), ', ') .. '\n|}'
end
if #bad_redirects > 0 then
insert(result, '\n<small class="attentionseeking">(Itong ' .. (#bad_redirects == 1 and 'mga ' or '') .. 'entrada ay hindi pa nagagawan ng pahina: ') --TLCHANGE
insert(result, concat(map(bad_redirects, link), ", "))
insert(result, '.)</small>')
insert(result, format_cat({langname .. " redlinks/ja-see"}, lang))
end
-- Standard maintenance categories usually done by [[Module:headword]].
local lang_cats, page_cats = {}, {}
maintenance_cats(headword_data.page, lang, lang_cats, page_cats)
insert(result, format_cat(lang_cats, lang))
insert(result, format_cat(page_cats, nil, "-"))
return concat(result)
end
function export.show_kango(frame) -- to be removed
return export.show(frame, 'kango')
end
function export.show_gv(frame) -- to be removed
return export.show(frame, 'glyphvar')
end
return export
hanf92omf0nsvng8aw8uiiijbsulxhr
176657
176656
2026-04-26T05:35:59Z
Yivan000
4078
176657
Scribunto
text/plain
-- Prevent substitution.
if mw.isSubsting() then
return require("Module:unsubst")
end
local m_ja = require("Module:ja")
local m_sc = require("Module:scripts")
local m_str_utils = require("Module:string utilities")
local concat = table.concat
local format_cat = require("Module:utilities").format_categories
local insert = table.insert
local load_data = mw.loadData
local maintenance_cats = require("Module:headword").maintenance_cats
local new_title = mw.title.new
local split = m_str_utils.split
local ugmatch = mw.ustring.gmatch
local ugsub = mw.ustring.gsub
local ulen = m_str_utils.len
local umatch = m_str_utils.match
local usub = m_str_utils.sub
local export = {}
local kana_to_romaji = require("Module:Hrkt-translit").tr
local headword_data = load_data("Module:headword/data")
local pagename = headword_data.pagename
local lang = require('Module:languages').getByCode("ja")
local Hira = m_sc.getByCode("Hira")
local Kana = m_sc.getByCode("Kana")
local Hrkt = m_sc.getByCode("Hrkt")
local langname = lang:getCanonicalName()
local data = load_data("Module:ja/data")
local d_kyu = load_data("Module:ja/data/kyu")
local range = load_data("Module:ja/data/range")
local function gmatch_array(s, pattern)
local output = {}
for e in ugmatch(s, pattern) do
insert(output, e)
end
return output
end
local function map(arr, f)
local output = {}
for _, e in ipairs(arr) do
local fe = f(e)
if fe ~= nil then
insert(output, fe)
end
end
return output
end
local function filter(arr, f)
local output = {}
for _, e in ipairs(arr) do
if f(e) then
insert(output, e)
end
end
return output
end
local function contains(arr, item)
for _, e in ipairs(arr) do
if e == item then
return true
end
end
return false
end
-- f should be str->str in the following functions
local function memoize(f)
local output = {}
return function(s)
if not output[s] then
output[s] = f(s)
end
return output[s]
end
end
local getContent_memo = memoize(function(title)
return new_title(title):getContent() or ''
end)
local function group(arr, f)
local r = {}
for _, e in ipairs(arr) do
local fe = f(e)
if r[#r] and r[#r].key == fe then
insert(r[#r], e)
else
insert(r, { e, key = fe })
end
end
return r
end
local function ja(text)
return '<span lang="ja" class="Jpan">' .. text .. '</span>'
end
local function link(lemma, display)
return ja("[[" .. lemma .. "#" .. langname .. "|" .. (display or lemma) .. "]]")
end
local function link_bracket(lemma, display)
return ja("【[[" .. lemma .. "#" .. langname .. "|" .. (display or lemma) .. "]]】")
end
local result
--[[ returns an array of definitions, each having the format
{
def = <definition>,
kanji_spellings = <array of alternative kanji spellings listed in {{ja-kanjitab|alt=...}}, can be overrided with {{ja-def|...}}>,
kana_spellings = <array of alternative kana spellings listed in the headword template>,
historical_kana_spellings = <array of historical kana spellings listed in the headword template>,
header = <name of PoS header>,
headword_line = <wikicode of headword line>,
}
]]
local function get_definitions_from_wikicode(wikicode, title)
local current_kanji_spellings = {}
local current_kanji_spellings_with_labels = {}
local current_kana_spellings = {}
local current_historical_kana_spellings = {}
local current_head_level = '=='
local current_header = langname
local current_headword_line
local status -- nil, 'under_headword', 'under_kanji', 'in_ja_readings'
wikicode = wikicode:gsub('\n*<br */?>\n*({{ja%-altread)', '%1')
-- in the local function `function format_definition` below,
-- insertion of `|hira=` affects `{{tlb}}`
-- (`{{tlb|ja|followed by a verb phrase|hira=によって}}`)
-- and then that bad wikitext is preprocessed
-- (`The parameter "hira" is not used by this template`).
-- we are not doing anything with `{{tlb}}` anyway,
-- so remove it
wikicode = wikicode:gsub(' *{{tlb.-}}', '')
local output = {}
--TLCHANGE for line in (wikicode:match("==" .. langname .. "==\n(.*)") or ""):gmatch"[^\n]+" do
-- since we use {{=ja=}} format, we do that instead
for line in (wikicode:match("=={{=ja=}}==\n(.*)") or ""):gmatch"[^\n]+" do
if status == 'under_headword' then
if line:match'^#+[^#:*]' then
insert(output, {
def = line
:gsub('<ref>.-<.ref>', '')
:gsub('<ref .->.-<.ref>', '')
:gsub('<ref.-/>', '')
:gsub('{{attention|ja.-}}', '')
:gsub('{{senseid|ja.-}}', ''),
kanji_spellings =
line:match'{{ja%-def|' and split(line:match'{{ja%-def|([^}]+)', '|') or
line:match'<!%-%- kana only %-%->' and {} or
current_kanji_spellings,
kanji_spellings_with_labels = current_kanji_spellings_with_labels,
kana_spellings = current_kana_spellings,
historical_kana_spellings = current_historical_kana_spellings,
header = current_header,
headword_line = current_headword_line,
})
end
elseif status == 'under_kanji' then
if line:match'^#+[^#:*]' then
insert(output, {
def = '#' .. line
:gsub('<ref>.-<.ref>', '')
:gsub('<ref .->.-<.ref>', '')
:gsub('<ref.-/>', '')
:gsub('{{attention|ja.-}}', ''),
kanji_spellings = {},
kanji_spellings_with_labels = {},
kana_spellings = {},
historical_kana_spellings = {},
header = current_header,
headword_line = current_headword_line,
})
elseif line:match'^{{ja%-readings%f[|}%z]' then
output[#output].kanji_readings = {}
status = 'in_ja_readings'
end
elseif status == 'in_ja_readings' then
for rs in line:gmatch'|[a-z]+=([^|}]+)' do
for r in rs:gmatch'(..-)%f[,%z],?' do
r = r:gsub('%-', ''):match('..-%f[<%z]'):match'^%s*(.-)%s*$'
if not contains(output[#output].kanji_readings, r) then
insert(output[#output].kanji_readings, r:gsub('%-', ''):match'^%s*(.-)%s*$')
end
end
end
if line:match'}}' then status = 'under_kanji' end
end
-- the following branches are ordered by frequency; read backwards
if line:match'^{{ja%-noun[|}]' or line:match'^{{ja%-adj[|}]' or
line:match'^{{ja%-pos[|}]' or line:match'^{{ja%-phrase[|}]' or
line:match'^{{ja%-verb[|}]' or line:match'^{{ja%-verb form[|}]' or
line:match'^{{ja%-verb%-suru[|}]' or line:match'{{ja%-altread[|}]' then
local escaped_line = line:gsub('%[%[([^%[%]|]-)|([^%[%]|]-)%]%]', '[[%1`%2]]'):gsub('|hhira=', '|hist='):gsub('|hkata=', '|hist=')
escaped_line = escaped_line:gsub('|hira=', '|') -- ja-altread
escaped_line = escaped_line:gsub('|kata=', '|') -- ja-altread
current_kana_spellings = map(gmatch_array(escaped_line, '|([・、' .. range.kana .. '\'%^%-%. %%]+)'), m_ja.remove_ruby_markup)
current_historical_kana_spellings = map(gmatch_array(escaped_line, '|hist=([' .. range.kana .. '\'%^%-%. %%]+)'), m_ja.remove_ruby_markup)
current_headword_line = line
status = 'under_headword'
elseif line:match'^{{ja%-kanji[|}]' then
current_kana_spellings = {}
current_historical_kana_spellings = {}
current_headword_line = line
insert(output, {
def = '#' .. data.grades[m_ja.kanji_grade(title)],
kanji_spellings = {},
kanji_spellings_with_labels = {},
kana_spellings = {},
historical_kana_spellings = {},
header = current_header,
headword_line = line,
})
status = 'under_kanji'
elseif line:match'^===+[^=]+===+$' then
local head_level_new, header_new = line:match'^(===+)([^=]+)===+$'
if not status or head_level_new:len() <= current_head_level:len() then
current_head_level, current_header = head_level_new, header_new
status = nil
end
elseif line:match("^{{ja%-kanjitab[|}]") then
local alt_argument = line:match("|alt=([^|}]+)")
current_kanji_spellings = alt_argument and split(alt_argument:gsub(':[^,]*', ''), ',') or {}
current_kanji_spellings_with_labels = alt_argument and split(alt_argument, ',') or {}
elseif line:match'^==[^=]+==$' then
break
end
end
return output
end
-- ditto, except that each definition also contains the title of the page it is from
local function get_definitions_from_entry(title)
local wikicode = getContent_memo(title)
local defs = get_definitions_from_wikicode(wikicode, title)
map(defs, function(def)
def.title = title
insert(({ Hira = true, Kana = true, ['Hira+Kana'] = true })[m_ja.script(title)] and def.kana_spellings or def.kanji_spellings, title)
end)
return defs
end
local function format_table_content(defs, frame, title, no_cat)
local function ruby(kanji, kana) -- this function ought to be in [[Module:ja]]
local kanji_segments = ugsub(kanji, "([" .. range.kanji .. range.ideograph .. range.latin .. range.numbers .. "]+)", "`%1`")
-- returns possible matches between kanji and kana
-- for example, match_k('`物`の`哀`れ', 'もののあわれ') returns { '[物](も)の[哀](のあわ)れ', '[物](もの)の[哀](あわ)れ' }
local function match_k(kanji_segments, kana)
if kanji_segments:find('`') then
local kana_portion, kanji_portion, rest = umatch(kanji_segments, '(.-)`(.-)`(.*)')
kana = umatch(kana, '^' .. kana_portion .. '(.*)')
if not kana then
return {}
end
local candidates = {}
for i = 1, ulen(kana) do
for _, candidate in ipairs(match_k(rest, usub(kana, i + 1))) do
insert(candidates, kana_portion .. '[' .. kanji_portion .. '](' .. usub(kana, 1, i) .. ')' .. candidate)
end
end
return candidates
else
return (kanji_segments == kana) and { kana } or {}
end
end
local matches = match_k(kanji_segments, kana)
local output = #matches == 1 and matches[1] or ('[' .. kanji .. '](' .. kana .. ')')
return output:gsub("%[([^%[%]]+)%]%(([^%(%)]+)%)", "<ruby><rb>%1</rb><rt>%2</rt></ruby>")
end
local function format_headword(defs)
local def_title = defs[1].title
local kana = defs[1].kana_spellings[1]
local headword = link_bracket(def_title, kana and pagename ~= kana and ruby(def_title, kana) or def_title)
local kanji_grade = ulen(def_title) == 1 and m_ja.kanji_grade(def_title)
return "<span style=\"font-size:x-large\">" .. headword .. "</span>" .. (kanji_grade and
"<span class=\"explain\" title=\"" .. data.grades[kanji_grade] .. "\" style=\"vertical-align: top;\">" .. data.grade_labels[kanji_grade] .. "</span>" or ""
)
end
local preprocess_memo = memoize(function (s) return frame:preprocess(s) end)
local function format_definitions(defs)
local headword_line_categories = {}
local alt_forms, alt_forms_rep = {}, { [title] = true, [defs[1].title] = true }
local kanji_readings
local function format_definition(def)
local cat_prefixes = {
["CAT"] = true,
["CATEGORY"] = true
}
local def_text = def.def:match'{{rfdef[|}]' and "''This term needs a translation to English.''" or preprocess_memo(def.def
:gsub('^#+ *', '')
--TODO: strip unwanted templates and parser functions (e.g. {{c}}). Will use wiki parser once ready, as this can get very complex.
)
:gsub("(%[%[[ _]*(%a-)[ _]*:.-%]%])", function(link, cat_prefix)
if cat_prefixes[cat_prefix:upper()] then
return ""
end
return link
end)
local def_prefix = def.def:match'^#+':gsub('#', ':')
local def_pos_label = ' <span style="padding-right:.6em;color:var(--wikt-palette-darkgrey, #54595d);font-size:80%">[' .. def.header:ulower() .. ']</span> '
if not no_cat and def.kana_spellings[1] then
local cat_hira, cat_kata = {}, {}
require'Module:Jpan-headword'.cat{
lang = lang,
pagename = title,
categories = cat_hira,
katakana_category = cat_kata,
pos = def.header:gsub('^.', string.ulower)
}
insert(headword_line_categories, format_cat(
cat_hira,
lang,
lang:makeSortKey(def.kana_spellings[1])
))
insert(headword_line_categories, format_cat(
cat_kata,
lang,
lang:makeSortKey(def.kana_spellings[1], Kana)
))
end
if def.kana_spellings[1] then alt_forms_rep[def.kana_spellings[1]] = true end
for _, s in ipairs(def.kanji_spellings) do
if not alt_forms_rep[s] then
alt_forms_rep[s] = true
insert(alt_forms, s)
end
end
for _, s in ipairs(def.kana_spellings) do
if not alt_forms_rep[s] then
alt_forms_rep[s] = true
insert(alt_forms, s)
end
end
kanji_readings = def.kanji_readings or kanji_readings
return def_prefix .. def_pos_label .. def_text
end
local formatted_defs = concat(map(defs, format_definition), '\n')
if #alt_forms == 1 and alt_forms[1] == title then alt_forms = {} end
return concat(headword_line_categories) .. '\n' .. formatted_defs
.. (#alt_forms > 0 and '\n: <div style="background-color:var(--wikt-palette-cream, #f8f8f0)"><span style="color:var(--wikt-palette-darkgrey, #54595d);font-size:80%">'
.. (#alt_forms == 1 and 'Alternative spelling' or 'Alternative spellings')
.. '</span><br><span style="margin-left:.8em">'
.. concat(map(alt_forms, link), ', ')
.. '</span></div>' or '')
.. (kanji_readings and '\n: <div style="background-color:var(--wikt-palette-cream, #f8f8f0)"><span style="color:var(--wikt-palette-darkgrey, #54595d);font-size:80%">Kanji reading:</span><br><span style="margin-left:.8em">'
.. concat(map(kanji_readings, link), ', ')
.. '</span></div>' or '')
end
local is_first_row = true
local function format_row(defs)
local output = '|-\n| style="white-space:nowrap;width:15%;vertical-align:top;' .. (is_first_row and '' or 'border-top:1px solid lightgray;') .. '" | ' .. format_headword(defs)
.. '\n| style="' .. (is_first_row and '' or 'border-top:1px solid lightgray;') .. '" |\n' .. format_definitions(defs) .. '\n'
is_first_row = false
return output
end
local def_groups = group(defs, function(def) return def.title .. ',' .. (def.kana_spellings[1] or '') end)
local rows = map(def_groups, format_row)
return '{| style="width: 100%"\n' .. concat(rows) .. '|}'
end
local function translit(title)
local sc = m_ja.script(title)
if sc == "Hira" or sc == "Kana" or sc == "Hira+Kana" then
return kana_to_romaji(title, "ja")
end
end
local function translit_kana(title)
return kana_to_romaji(title, "ja")
end
local redirect_type = {
-- auto-detected types
{
name = 'romaji',
article = 'the',
sc = "Latn",
display = function(title)
return title
end,
detect = function(title, defs)
if m_ja.script(title) ~= 'Romaji' then return {} end
local rom = title:ulower():gsub('[- ]', '')
return filter(defs, function(def)
for _, k in ipairs(def.kana_spellings) do
if rom == kana_to_romaji(k, "ja") then
insert(result, format_cat({langname .. " romanizations"}, lang))
return true
end
end
return false
end)
end,
no_cat = true,
},
{
name = 'pagbaybay na hiragana',--TLCHANGE 'hiragana spelling',
article = 'ang', --TLCHANGE 'the',
translit = translit_kana,
detect = function(title, defs)
if m_ja.script(title) ~= 'Hira' then return {} end
local rom = kana_to_romaji(title, "ja"):ulower():gsub('[- ]', '')
return filter(defs, function(def)
if not contains(def.kana_spellings, title) and contains(def.historical_kana_spellings, title) then
return false
end
for _, k in ipairs(def.kana_spellings) do
if rom == kana_to_romaji(k, "ja") then
return true
end
end
return false
end)
end,
},
{
name = 'pagbaybay na katakana',--TLCHANGE 'katakana spelling',
article = 'ang', --TLCHANGE 'the',
translit = translit_kana,
detect = function(title, defs)
if m_ja.script(title) ~= 'Kana' then return {} end
local rom = kana_to_romaji(title, "ja"):ulower():gsub('[- ]', '')
return filter(defs, function(def)
if not contains(def.kana_spellings, title) and contains(def.historical_kana_spellings, title) then
return false
end
for _, k in ipairs(def.kana_spellings) do
if rom == kana_to_romaji(k, "ja") then
return true
end
end
return false
end)
end,
},
{
name = 'historical kana spelling',
article = 'a',
translit = function(title)
return kana_to_romaji(title, "ja", nil, {hist = true})
end,
detect = function(title, defs)
return filter(defs, function(def)
if not contains(def.kana_spellings, title) and contains(def.historical_kana_spellings, title) then
local sc = m_ja.script(title)
if sc == 'Hira' then
insert(result, format_cat(
{langname .. " historical hiragana"},
lang,
lang:makeSortKey(def.historical_kana_spellings[1], Hira)
))
elseif sc == 'Kana' then
insert(result, format_cat(
{langname .. " historical katakana"},
lang,
lang:makeSortKey(def.historical_kana_spellings[1], Kana)
))
elseif sc == 'Hira+Kana' then
insert(result, format_cat(
{langname .. " terms spelled with mixed historical kana"},
lang,
lang:makeSortKey(def.historical_kana_spellings[1], Hrkt)
))
end
return true
end
end)
end,
},
{
name = 'kyūjitai',
article = 'the',
detect = function(title, defs)
local shin = title:gsub('.[\128-\191]*', function(c)
if c == '辨' or c == '辯' or c == '瓣' then return '弁' end
return d_kyu[1]:match('(%S*)' .. c .. '%s') or c
end)
if shin == title then return {} end
return ulen(title) == 1 and filter(defs, function(def) return def.header == "Kanji" end) or filter(defs, function(def)
if shin == def.title then
if def.kana_spellings[1] then
insert(result, format_cat({langname .. " kyūjitai spellings"}, lang, lang:makeSortKey(def.kana_spellings[1])))
end
return true
end
end)
end,
display = function(title)
return ja(title:gsub('.[\128-\191]*', function(c)
return d_kyu[1]:match(c .. '(&#x%x+;)%s') or c
end))
end,
no_cat = true,
},
{
name = 'kyūjitai of an alternative spelling',
article = 'the',
detect = function(title, defs, key)
local shin = title:gsub('.[\128-\191]*', function(c)
if c == '辨' or c == '辯' or c == '瓣' then return '弁' end
return d_kyu[1]:match('(%S*)' .. c .. '%s') or c
end)
if shin == title then return {} end
return filter(defs, function(def)
if shin ~= def.title and contains(def.kanji_spellings, shin) and (not key or contains(def.kana_spellings, key)) then
if def.kana_spellings[1] then
insert(result, format_cat({langname .. " kyūjitai spellings"}, lang, lang:makeSortKey(def.kana_spellings[1])))
end
return true
end
end)
end,
display = function(title)
return ja(title:gsub('.[\128-\191]*', function(c)
return d_kyu[1]:match(c .. '(&#x%x+;)%s') or c
end))
end,
display_labels = function(title)
local shin = title:gsub('.[\128-\191]*', function(c)
if c == '辨' or c == '辯' or c == '瓣' then return '弁' end
return d_kyu[1]:match('(%S*)' .. c .. '%s') or c
end)
return '(' .. link(shin) .. ')'
end,
no_cat = true,
},
{
name = 'alternative spelling',
article = 'an',
detect = function(title, defs, key)
return filter(defs, function(def)
return contains(def.kanji_spellings, title) and (not key or contains(def.kana_spellings, key)) or contains(def.kana_spellings, title)
end)
end,
display_labels = function(title, defs)
for _, def in ipairs(defs) do for _, kl in ipairs(def.kanji_spellings_with_labels) do
local ks, lb = kl:match'^(.-):(.+)$'
if ks == title then
return require("Module:labels").show_labels { labels = split(lb, ' '), lang = lang }
end
end end
return ''
end,
is_fallback = true,
},
-- manual input only types
['vk'] = {
name = 'variant kanji form',
article = 'a',
detect = function(title, defs)
return ulen(title) == 1 and filter(defs, function(def)
return def.header == "Kanji"
end) or defs
end,
},
['iter'] = {
name = 'form with iteration marks',
article = 'a',
detect = function(_, defs)
return defs
end,
},
['niter'] = {
name = 'form without iteration marks',
article = 'a',
detect = function(_, defs)
return defs
end,
},
['eshin'] = {
name = 'extended shinjitai',
article = 'an',
detect = function(title, defs)
return ulen(title) == 1 and filter(defs, function(def)
return def.header == "Kanji"
end) or defs
end,
},
names = {
['rom'] = 1,
['hira'] = 2,
['kata'] = 3,
['hkana'] = 4,
['kyu'] = 5,
['kyualt'] = 6,
['alt'] = 7,
['vk'] = 'vk',
['iter'] = 'iter',
['niter'] = 'niter',
['eshin'] = 'eshin',
},
}
function export.show(frame)
local title = pagename
local args = require("Module:parameters").process(frame:getParent().args, {
[1] = { list = true },
['term'] = { list = true, allow_holes = true, separate_no_index = true },
['type'] = { list = true, allow_holes = true, separate_no_index = true },
['key'] = { list = true, allow_holes = true },
})
result = {
'{| class="wikitable ja-see" style="min-width:70%"\n|-\n| <b>',
'Para sa pagbigkas at ibig-sabihin ng ', ja(title), ' – tingnan ang ', --TLCHANGE
#args[1] > 1 and 'mga ' or '',
'entradang ito.',
'</b>',
}
local bad_redirects = {}
local name_count = 0
local name_previous, rt_previous
local function make_footnote(term)
insert(result, '\n|-\n| (Ang salitang ito, ') --TLCHANGE '\n|-\n| (This term, '
insert(result, require("Module:links").full_link({
lang = lang,
sc = rt_previous.sc and require("Module:scripts").getByCode(rt_previous.sc) or nil,
alt = (rt_previous.display or ja)(title),
tr = (rt_previous.translit or translit)(term or title) or nil
}, "term"))
insert(result, ', ay ') --TLCHANGE ', is '
insert(result, name_previous)
insert(result, ' ng ') --TLCHANGE ' of the above term'
--TLCHANGE add "mga" pluraliation
if name_count > 1 then insert(result, 'mga') end
insert(result, ' salitang nasa itaas')
--TLCHANGE remove this if name_count > 1 then insert(result, 's') end
insert(result, '.)')
end
local function add_to_result(name, rt, defs, term)
if rt.display_labels then
name = name .. ' ' .. rt.display_labels(title, defs)
end
if name_previous and name_previous ~= name then
make_footnote(term)
name_count = 1
else
name_count = name_count + 1
end
name_previous = name
rt_previous = rt
insert(result, '\n|-\n| style="background-color:var(--wikt-palette-white,#ffffff);color:inherit" |\n')
insert(result, format_table_content(defs, frame, title, rt.no_cat))
end
for i_lemma, lemma in ipairs(args[1]) do
local defs = get_definitions_from_entry(lemma)
--mw.logObject(defs) --use this to inspect "defs"
local label_term = args.term[i_lemma] or args.term.default
local label_lemma = args.type[i_lemma] or args.type.default
if label_lemma then
local ll1, ll2 = label_lemma:match'^(.-)(%S*)$'
local rt = redirect_type[redirect_type.names[ll2]]
if rt then
defs = rt.detect(title, defs)
if #defs > 0 then
-- This code deals with the redirect type description's articles like "the hiragana", "a rare hiragana", "an unusual hiragana" when there is a manual input |type=....
add_to_result((label_lemma:match'^an? ' or label_lemma:match'^the ') and ll1 .. rt.name or rt.article .. ' ' .. ll1 .. rt.name, rt, defs, label_term)
else
insert(bad_redirects, lemma)
end
else
add_to_result(label_lemma, {}, defs, label_term)
end
else
local success = false
for _, rt in ipairs(redirect_type) do
if not (success and rt.is_fallback) then
local defs_try = rt.detect(title, defs, args.key[i_lemma])
if #defs_try > 0 then
success = true
add_to_result(rt.article .. ' ' .. rt.name, rt, defs_try, label_term)
end
end
end
if not success then
insert(bad_redirects, lemma)
end
end
end
if name_previous then
make_footnote(args.term.default)
if new_title(langname .. ' kanji read as ' .. title, 14).exists then
insert(result, '<br><span style="font-size:85%;">For a list of all kanji read as ')
insert(result, ja(title))
insert(result, ', see ')
insert(result, '[[:Category:' .. langname .. ' kanji read as ')
insert(result, title)
insert(result, ']].)</span>')
end
insert(result, '\n|}')
else -- failure to find any definitions
result[6] = ': ' .. concat(map(args[1], function(title) return '<span style="font-size:120%">' .. link(title) .. '</span>' end), ', ') .. '\n|}'
end
if #bad_redirects > 0 then
insert(result, '\n<small class="attentionseeking">(Itong ' .. (#bad_redirects == 1 and 'mga ' or '') .. 'entrada ay hindi pa nagagawan ng pahina: ') --TLCHANGE
insert(result, concat(map(bad_redirects, link), ", "))
insert(result, '.)</small>')
insert(result, format_cat({langname .. " redlinks/ja-see"}, lang))
end
-- Standard maintenance categories usually done by [[Module:headword]].
local lang_cats, page_cats = {}, {}
maintenance_cats(headword_data.page, lang, lang_cats, page_cats)
insert(result, format_cat(lang_cats, lang))
insert(result, format_cat(page_cats, nil, "-"))
return concat(result)
end
function export.show_kango(frame) -- to be removed
return export.show(frame, 'kango')
end
function export.show_gv(frame) -- to be removed
return export.show(frame, 'glyphvar')
end
return export
3eb28zbob2g9xt9x1zxe48p4vr2xui8
稲見
0
36778
176648
171764
2026-04-25T16:20:38Z
Hiyuune
5522
/* Hapones */
176648
wikitext
text/x-wiki
=={{=ja=}}==
{{ja-kanjitab|いな|み|yomi=k}}
===Pagbigkas===
{{ja-pron|いなみ|acc=1}}
===Pangngalang pantangi===
{{ja-pos|proper|いなみ}}
# {{surname|ja}}
7n6vl33y41blvh6p4r51769fo3yx9t9
いなみ
0
38076
176649
2026-04-25T16:22:13Z
Hiyuune
5522
Nilikha ang pahina na may '=={{=ja=}}== {{ja-see|稲見}}'
176649
wikitext
text/x-wiki
=={{=ja=}}==
{{ja-see|稲見}}
l1ny1gdeu4xakhzdp1x3aw036n42p72
Kategorya:Viyetnamita na salitang may pagbigkas na awdiyo
14
38077
176660
2026-04-26T05:46:42Z
Yivan000
4078
Nilikha ang pahina na may '{{auto cat}}'
176660
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Padron:Hani-categoryTOC
10
38078
176661
2026-04-26T05:48:00Z
Yivan000
4078
Nilikha ang pahina na may '<div style="text-align:center"> [[Appendix:Chinese Cangjie|Cangjie]] - [[Appendix:Chinese four corner|Four Corner]] - [[Appendix:Chinese Pinyin|Pinyin]] - [[Appendix:Chinese radical|Radicals]] - [[Appendix:Chinese total strokes|Total Strokes]] - [[Appendix:Chinese Wubi Hua|Wubi Hua]] - [[Appendix:Chinese Wubi Xing|Wubi Xing]] - [[Appendix:Chinese Zhuyin|Zhuyin]] </div> {| class="plainlinks" |- style="vertical-align: top;" | style="white-space: nowrap;" | {{0}}1 s...'
176661
wikitext
text/x-wiki
<div style="text-align:center">
[[Appendix:Chinese Cangjie|Cangjie]] -
[[Appendix:Chinese four corner|Four Corner]] -
[[Appendix:Chinese Pinyin|Pinyin]] -
[[Appendix:Chinese radical|Radicals]] -
[[Appendix:Chinese total strokes|Total Strokes]] -
[[Appendix:Chinese Wubi Hua|Wubi Hua]] -
[[Appendix:Chinese Wubi Xing|Wubi Xing]] -
[[Appendix:Chinese Zhuyin|Zhuyin]]
</div>
{| class="plainlinks"
|- style="vertical-align: top;"
| style="white-space: nowrap;" | {{0}}1 stroke
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=一}} 一] [{{fullurl:{{FULLPAGENAMEE}}|from=丨}} 丨] [{{fullurl:{{FULLPAGENAMEE}}|from=丶}} 丶] [{{fullurl:{{FULLPAGENAMEE}}|from=丿}} 丿] [{{fullurl:{{FULLPAGENAMEE}}|from=乙}} 乙] [{{fullurl:{{FULLPAGENAMEE}}|from=亅}} 亅]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | {{0}}2 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=二}} 二] [{{fullurl:{{FULLPAGENAMEE}}|from=亠}} 亠] [{{fullurl:{{FULLPAGENAMEE}}|from=人}} 人] [{{fullurl:{{FULLPAGENAMEE}}|from=儿}} 儿] [{{fullurl:{{FULLPAGENAMEE}}|from=入}} 入] [{{fullurl:{{FULLPAGENAMEE}}|from=八}} 八] [{{fullurl:{{FULLPAGENAMEE}}|from=冂}} 冂] [{{fullurl:{{FULLPAGENAMEE}}|from=冖}} 冖] [{{fullurl:{{FULLPAGENAMEE}}|from=冫}} 冫] [{{fullurl:{{FULLPAGENAMEE}}|from=几}} 几] [{{fullurl:{{FULLPAGENAMEE}}|from=凵}} 凵] [{{fullurl:{{FULLPAGENAMEE}}|from=刀}} 刀] [{{fullurl:{{FULLPAGENAMEE}}|from=力}} 力] [{{fullurl:{{FULLPAGENAMEE}}|from=勹}} 勹] [{{fullurl:{{FULLPAGENAMEE}}|from=匕}} 匕] [{{fullurl:{{FULLPAGENAMEE}}|from=匚}} 匚] [{{fullurl:{{FULLPAGENAMEE}}|from=匸}} 匸] [{{fullurl:{{FULLPAGENAMEE}}|from=十}} 十] [{{fullurl:{{FULLPAGENAMEE}}|from=卜}} 卜] [{{fullurl:{{FULLPAGENAMEE}}|from=卩}} 卩] [{{fullurl:{{FULLPAGENAMEE}}|from=厂}} 厂] [{{fullurl:{{FULLPAGENAMEE}}|from=厶}} 厶] [{{fullurl:{{FULLPAGENAMEE}}|from=又}} 又]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | {{0}}3 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=口}} 口] [{{fullurl:{{FULLPAGENAMEE}}|from=囗}} 囗] [{{fullurl:{{FULLPAGENAMEE}}|from=土}} 土] [{{fullurl:{{FULLPAGENAMEE}}|from=士}} 士] [{{fullurl:{{FULLPAGENAMEE}}|from=夂}} 夂] [{{fullurl:{{FULLPAGENAMEE}}|from=夊}} 夊] [{{fullurl:{{FULLPAGENAMEE}}|from=夕}} 夕] [{{fullurl:{{FULLPAGENAMEE}}|from=大}} 大] [{{fullurl:{{FULLPAGENAMEE}}|from=女}} 女] [{{fullurl:{{FULLPAGENAMEE}}|from=子}} 子] [{{fullurl:{{FULLPAGENAMEE}}|from=宀}} 宀] [{{fullurl:{{FULLPAGENAMEE}}|from=寸}} 寸] [{{fullurl:{{FULLPAGENAMEE}}|from=小}} 小] [{{fullurl:{{FULLPAGENAMEE}}|from=尢}} 尢] [{{fullurl:{{FULLPAGENAMEE}}|from=尸}} 尸] [{{fullurl:{{FULLPAGENAMEE}}|from=屮}} 屮] [{{fullurl:{{FULLPAGENAMEE}}|from=山}} 山] [{{fullurl:{{FULLPAGENAMEE}}|from=巛}} 巛] [{{fullurl:{{FULLPAGENAMEE}}|from=工}} 工] [{{fullurl:{{FULLPAGENAMEE}}|from=己}} 己] [{{fullurl:{{FULLPAGENAMEE}}|from=巾}} 巾] [{{fullurl:{{FULLPAGENAMEE}}|from=干}} 干] [{{fullurl:{{FULLPAGENAMEE}}|from=幺}} 幺] [{{fullurl:{{FULLPAGENAMEE}}|from=广}} 广] [{{fullurl:{{FULLPAGENAMEE}}|from=廴}} 廴] [{{fullurl:{{FULLPAGENAMEE}}|from=廾}} 廾] [{{fullurl:{{FULLPAGENAMEE}}|from=弋}} 弋] [{{fullurl:{{FULLPAGENAMEE}}|from=弓}} 弓] [{{fullurl:{{FULLPAGENAMEE}}|from=彐}} 彐] [{{fullurl:{{FULLPAGENAMEE}}|from=彡}} 彡] [{{fullurl:{{FULLPAGENAMEE}}|from=彳}} 彳]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | {{0}}4 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=心}} 心] [{{fullurl:{{FULLPAGENAMEE}}|from=戈}} 戈] [{{fullurl:{{FULLPAGENAMEE}}|from=戶}} 戶] [{{fullurl:{{FULLPAGENAMEE}}|from=手}} 手] [{{fullurl:{{FULLPAGENAMEE}}|from=支}} 支] [{{fullurl:{{FULLPAGENAMEE}}|from=攴}} 攴] [{{fullurl:{{FULLPAGENAMEE}}|from=文}} 文] [{{fullurl:{{FULLPAGENAMEE}}|from=斗}} 斗] [{{fullurl:{{FULLPAGENAMEE}}|from=斤}} 斤] [{{fullurl:{{FULLPAGENAMEE}}|from=方}} 方] [{{fullurl:{{FULLPAGENAMEE}}|from=无}} 无] [{{fullurl:{{FULLPAGENAMEE}}|from=日}} 日] [{{fullurl:{{FULLPAGENAMEE}}|from=曰}} 曰] [{{fullurl:{{FULLPAGENAMEE}}|from=月}} 月] [{{fullurl:{{FULLPAGENAMEE}}|from=木}} 木] [{{fullurl:{{FULLPAGENAMEE}}|from=欠}} 欠] [{{fullurl:{{FULLPAGENAMEE}}|from=止}} 止] [{{fullurl:{{FULLPAGENAMEE}}|from=歹}} 歹] [{{fullurl:{{FULLPAGENAMEE}}|from=殳}} 殳] [{{fullurl:{{FULLPAGENAMEE}}|from=毋}} 毋] [{{fullurl:{{FULLPAGENAMEE}}|from=比}} 比] [{{fullurl:{{FULLPAGENAMEE}}|from=毛}} 毛] [{{fullurl:{{FULLPAGENAMEE}}|from=氏}} 氏] [{{fullurl:{{FULLPAGENAMEE}}|from=气}} 气] [{{fullurl:{{FULLPAGENAMEE}}|from=水}} 水] [{{fullurl:{{FULLPAGENAMEE}}|from=火}} 火] [{{fullurl:{{FULLPAGENAMEE}}|from=爪}} 爪] [{{fullurl:{{FULLPAGENAMEE}}|from=父}} 父] [{{fullurl:{{FULLPAGENAMEE}}|from=爻}} 爻] [{{fullurl:{{FULLPAGENAMEE}}|from=爿}} 爿] [{{fullurl:{{FULLPAGENAMEE}}|from=片}} 片] [{{fullurl:{{FULLPAGENAMEE}}|from=牙}} 牙] [{{fullurl:{{FULLPAGENAMEE}}|from=牛}} 牛] [{{fullurl:{{FULLPAGENAMEE}}|from=犬}} 犬]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | {{0}}5 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=玄}} 玄] [{{fullurl:{{FULLPAGENAMEE}}|from=玉}} 玉] [{{fullurl:{{FULLPAGENAMEE}}|from=瓜}} 瓜] [{{fullurl:{{FULLPAGENAMEE}}|from=瓦}} 瓦] [{{fullurl:{{FULLPAGENAMEE}}|from=甘}} 甘] [{{fullurl:{{FULLPAGENAMEE}}|from=生}} 生] [{{fullurl:{{FULLPAGENAMEE}}|from=用}} 用] [{{fullurl:{{FULLPAGENAMEE}}|from=田}} 田] [{{fullurl:{{FULLPAGENAMEE}}|from=疋}} 疋] [{{fullurl:{{FULLPAGENAMEE}}|from=疒}} 疒] [{{fullurl:{{FULLPAGENAMEE}}|from=癶}} 癶] [{{fullurl:{{FULLPAGENAMEE}}|from=白}} 白] [{{fullurl:{{FULLPAGENAMEE}}|from=皮}} 皮] [{{fullurl:{{FULLPAGENAMEE}}|from=皿}} 皿] [{{fullurl:{{FULLPAGENAMEE}}|from=目}} 目] [{{fullurl:{{FULLPAGENAMEE}}|from=矛}} 矛] [{{fullurl:{{FULLPAGENAMEE}}|from=矢}} 矢] [{{fullurl:{{FULLPAGENAMEE}}|from=石}} 石] [{{fullurl:{{FULLPAGENAMEE}}|from=示}} 示] [{{fullurl:{{FULLPAGENAMEE}}|from=禸}} 禸] [{{fullurl:{{FULLPAGENAMEE}}|from=禾}} 禾] [{{fullurl:{{FULLPAGENAMEE}}|from=穴}} 穴] [{{fullurl:{{FULLPAGENAMEE}}|from=立}} 立]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | {{0}}6 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=竹}} 竹] [{{fullurl:{{FULLPAGENAMEE}}|from=米}} 米] [{{fullurl:{{FULLPAGENAMEE}}|from=糸}} 糸] [{{fullurl:{{FULLPAGENAMEE}}|from=缶}} 缶] [{{fullurl:{{FULLPAGENAMEE}}|from=网}} 网] [{{fullurl:{{FULLPAGENAMEE}}|from=羊}} 羊] [{{fullurl:{{FULLPAGENAMEE}}|from=羽}} 羽] [{{fullurl:{{FULLPAGENAMEE}}|from=老}} 老] [{{fullurl:{{FULLPAGENAMEE}}|from=而}} 而] [{{fullurl:{{FULLPAGENAMEE}}|from=耒}} 耒] [{{fullurl:{{FULLPAGENAMEE}}|from=耳}} 耳] [{{fullurl:{{FULLPAGENAMEE}}|from=聿}} 聿] [{{fullurl:{{FULLPAGENAMEE}}|from=肉}} 肉] [{{fullurl:{{FULLPAGENAMEE}}|from=臣}} 臣] [{{fullurl:{{FULLPAGENAMEE}}|from=自}} 自] [{{fullurl:{{FULLPAGENAMEE}}|from=至}} 至] [{{fullurl:{{FULLPAGENAMEE}}|from=臼}} 臼] [{{fullurl:{{FULLPAGENAMEE}}|from=舌}} 舌] [{{fullurl:{{FULLPAGENAMEE}}|from=舛}} 舛] [{{fullurl:{{FULLPAGENAMEE}}|from=舟}} 舟] [{{fullurl:{{FULLPAGENAMEE}}|from=艮}} 艮] [{{fullurl:{{FULLPAGENAMEE}}|from=色}} 色] [{{fullurl:{{FULLPAGENAMEE}}|from=艸}} 艸] [{{fullurl:{{FULLPAGENAMEE}}|from=虍}} 虍] [{{fullurl:{{FULLPAGENAMEE}}|from=虫}} 虫] [{{fullurl:{{FULLPAGENAMEE}}|from=血}} 血] [{{fullurl:{{FULLPAGENAMEE}}|from=行}} 行] [{{fullurl:{{FULLPAGENAMEE}}|from=衣}} 衣] [{{fullurl:{{FULLPAGENAMEE}}|from=西}} 西]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | {{0}}7 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=見}} 見] [{{fullurl:{{FULLPAGENAMEE}}|from=角}} 角] [{{fullurl:{{FULLPAGENAMEE}}|from=言}} 言] [{{fullurl:{{FULLPAGENAMEE}}|from=谷}} 谷] [{{fullurl:{{FULLPAGENAMEE}}|from=豆}} 豆] [{{fullurl:{{FULLPAGENAMEE}}|from=豕}} 豕] [{{fullurl:{{FULLPAGENAMEE}}|from=豸}} 豸] [{{fullurl:{{FULLPAGENAMEE}}|from=貝}} 貝] [{{fullurl:{{FULLPAGENAMEE}}|from=赤}} 赤] [{{fullurl:{{FULLPAGENAMEE}}|from=走}} 走] [{{fullurl:{{FULLPAGENAMEE}}|from=足}} 足] [{{fullurl:{{FULLPAGENAMEE}}|from=身}} 身] [{{fullurl:{{FULLPAGENAMEE}}|from=車}} 車] [{{fullurl:{{FULLPAGENAMEE}}|from=辛}} 辛] [{{fullurl:{{FULLPAGENAMEE}}|from=辰}} 辰] [{{fullurl:{{FULLPAGENAMEE}}|from=辵}} 辵] [{{fullurl:{{FULLPAGENAMEE}}|from=邑}} 邑] [{{fullurl:{{FULLPAGENAMEE}}|from=酉}} 酉] [{{fullurl:{{FULLPAGENAMEE}}|from=釆}} 釆] [{{fullurl:{{FULLPAGENAMEE}}|from=里}} 里]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | {{0}}8 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=金}} 金] [{{fullurl:{{FULLPAGENAMEE}}|from=長}} 長] [{{fullurl:{{FULLPAGENAMEE}}|from=門}} 門] [{{fullurl:{{FULLPAGENAMEE}}|from=阜}} 阜] [{{fullurl:{{FULLPAGENAMEE}}|from=隶}} 隶] [{{fullurl:{{FULLPAGENAMEE}}|from=隹}} 隹] [{{fullurl:{{FULLPAGENAMEE}}|from=雨}} 雨] [{{fullurl:{{FULLPAGENAMEE}}|from=靑}} 靑] [{{fullurl:{{FULLPAGENAMEE}}|from=非}} 非]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | {{0}}9 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=面}} 面] [{{fullurl:{{FULLPAGENAMEE}}|from=革}} 革] [{{fullurl:{{FULLPAGENAMEE}}|from=韋}} 韋] [{{fullurl:{{FULLPAGENAMEE}}|from=韭}} 韭] [{{fullurl:{{FULLPAGENAMEE}}|from=音}} 音] [{{fullurl:{{FULLPAGENAMEE}}|from=頁}} 頁] [{{fullurl:{{FULLPAGENAMEE}}|from=風}} 風] [{{fullurl:{{FULLPAGENAMEE}}|from=飛}} 飛] [{{fullurl:{{FULLPAGENAMEE}}|from=食}} 食] [{{fullurl:{{FULLPAGENAMEE}}|from=首}} 首] [{{fullurl:{{FULLPAGENAMEE}}|from=香}} 香]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | 10 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=馬}} 馬] [{{fullurl:{{FULLPAGENAMEE}}|from=骨}} 骨] [{{fullurl:{{FULLPAGENAMEE}}|from=高}} 高] [{{fullurl:{{FULLPAGENAMEE}}|from=髟}} 髟] [{{fullurl:{{FULLPAGENAMEE}}|from=鬥}} 鬥] [{{fullurl:{{FULLPAGENAMEE}}|from=鬯}} 鬯] [{{fullurl:{{FULLPAGENAMEE}}|from=鬲}} 鬲] [{{fullurl:{{FULLPAGENAMEE}}|from=鬼}} 鬼]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | 11 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=魚}} 魚] [{{fullurl:{{FULLPAGENAMEE}}|from=鳥}} 鳥] [{{fullurl:{{FULLPAGENAMEE}}|from=鹵}} 鹵] [{{fullurl:{{FULLPAGENAMEE}}|from=鹿}} 鹿] [{{fullurl:{{FULLPAGENAMEE}}|from=麥}} 麥] [{{fullurl:{{FULLPAGENAMEE}}|from=麻}} 麻]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | 12 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=黃}} 黃] [{{fullurl:{{FULLPAGENAMEE}}|from=黍}} 黍] [{{fullurl:{{FULLPAGENAMEE}}|from=黑}} 黑] [{{fullurl:{{FULLPAGENAMEE}}|from=黹}} 黹]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | 13 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=黽}} 黽] [{{fullurl:{{FULLPAGENAMEE}}|from=鼎}} 鼎] [{{fullurl:{{FULLPAGENAMEE}}|from=鼓}} 鼓] [{{fullurl:{{FULLPAGENAMEE}}|from=鼠}} 鼠]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | 14 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=鼻}} 鼻] [{{fullurl:{{FULLPAGENAMEE}}|from=齊}} 齊]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | 15 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=齒}} 齒]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | 16 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=龍}} 龍] [{{fullurl:{{FULLPAGENAMEE}}|from=龜}} 龜]
|- style="vertical-align: top;"
| style="white-space: nowrap;" | 17 strokes
| style="padding: 0 0.5em;" | –
| class="{{{2|Hani}}}" lang="{{{1|mul}}}" | [{{fullurl:{{FULLPAGENAMEE}}|from=龠}} 龠]
|}<!--
--><noinclude>{{tcat}}</noinclude>
tranreyt185ml83ml1pamrkxu4rhnki
伊波
0
38079
176662
2026-04-26T09:31:48Z
Hiyuune
5522
Nilikha ang pahina na may '=={{=ja=}}== {{ja-kanjitab|い|なみ|yomi=ok}}{{ja-kanjitab|い|は|yomi=o}} ===Pangngalang pantangi=== {{ja-pos|proper|いなみ|いは}} # {{surname|ja|sort=いなみ}}'
176662
wikitext
text/x-wiki
=={{=ja=}}==
{{ja-kanjitab|い|なみ|yomi=ok}}{{ja-kanjitab|い|は|yomi=o}}
===Pangngalang pantangi===
{{ja-pos|proper|いなみ|いは}}
# {{surname|ja|sort=いなみ}}
bf59drii9h8nomplkuhh43ejn6hhu34
Module:sdh-translit
828
38080
176665
2026-04-26T11:58:21Z
Yivan000
4078
Nilikha ang pahina na may '-- Authors: JavaScript ئاسۆ; Lua Ghybu, Calak local export = {} local gsub = mw.ustring.gsub local U = require("Module:string/char") local mapping = { ["ا"] = "a", ["ب"] = "b", ["چ"] = "ç", ["ج"] = "c", ["د"] = "d", ["ە"] = "e", ["ێ"] = "ê", ["ف"] = "f", ["گ"] = "g", ["ھ"] = "h", ["ه"] = "h", ["ح"] = "ḧ", ["ژ"] = "j", ["ک"] = "k", ["ڵ"] = "ll", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["ۆ"] = "o", ["پ"] = "p", ["ق"] = "q", ["ر"]...'
176665
Scribunto
text/plain
-- Authors: JavaScript ئاسۆ; Lua Ghybu, Calak
local export = {}
local gsub = mw.ustring.gsub
local U = require("Module:string/char")
local mapping = {
["ا"] = "a", ["ب"] = "b", ["چ"] = "ç", ["ج"] = "c", ["د"] = "d", ["ە"] = "e", ["ێ"] = "ê", ["ف"] = "f", ["گ"] = "g",
["ھ"] = "h", ["ه"] = "h", ["ح"] = "ḧ", ["ژ"] = "j", ["ک"] = "k", ["ڵ"] = "ll", ["ل"] = "l", ["م"] = "m", ["ن"] = "n",
["ۆ"] = "o", ["پ"] = "p", ["ق"] = "q", ["ر"] = "r", ["ڕ"] = "r", ["س"] = "s", ["ش"] = "ş", ["ت"] = "t", ["ۊ"] = "ü",
["ڤ"] = "v", ["خ"] = "x", ["غ"] = "ẍ", ["ز"] = "z", ["ئ"] = "", ["ع"] = "'",
[U(0x200C)] = "", -- ZWNJ (zero-width non-joiner)
["ـ"] = "", -- kashida, no sound
-- numerals
["١"] = "1", ["٢"] = "2", ["٣"] = "3", ["٤"] = "4", ["٥"] = "5",
["٦"] = "6", ["٧"] = "7", ["٨"] = "8", ["٩"] = "9", ["٠"] = "0",
-- persian variants to numerals
["۱"] = "1", ["۲"] = "2", ["۳"] = "3", ["۴"] = "4", ["۵"] = "5",
["۶"] = "6", ["۷"] = "7", ["۸"] = "8", ["۹"] = "9", ["۰"] = "0",
}
-- punctuation (leave on separate lines)
local punctuation = {
["؟"] = "?", -- question mark
["،"] = ",", -- comma
["؛"] = ";", -- semicolon
["«"] = '“', -- quotation mark
["»"] = '”', -- quotation mark
["٪"] = "%", -- percent
["؉"] = "‰", -- per mille
["٫"] = ".", -- decimals
["٬"] = ",", -- thousand
}
-- translit
local function tr_word(word)
word = gsub(word, '.', punctuation)
--Remove punctuation at the end of the word.
local ponct
if mw.ustring.find(word, '[%.%!،؛»«٪؉٫٬%p]$') then
ponct = mw.ustring.sub(word, -1)
word = gsub(word, '[%.%!،؛»«٪؉٫٬%p]$', '')
else
word = word
ponct = ''
end
word = gsub(word, 'ه', "ە") --correct unicode for letter ە
-- U+0647 (Arabic letter heh) + U+200C (zero-width non-joiner) → U+06D5 (Arabic letter ae)
-- diacritics
word = gsub(word, 'ْ', "i") -- U+0652, Arabic sukun
word = gsub(word, 'ِ', "i") -- U+0650, Arabic kasra
--managing 'و' and 'ی'
word = gsub(word, 'و([iاێۆۊە])', "w%1") --و + vowel => w (e.g. wan)
word = gsub(word, 'ی([iاێۆۊە])', "y%1") --ی + vowel => y (e.g. yas)
word = gsub(word, '([iاێۆۊە])و', "%1w") --vowel + و => w (e.g. kew)
word = gsub(word, '([iاێۆۊە])ی', "%1y") --vowel + ی => y (e.g. bey)
word = gsub(word, '([iاێۆە])ۊ', "%1ẅ") --vowel + و => ẅ (e.g. taẅ)
word = gsub(word, '([iاۆۊە])ێ', "%1ÿ") --vowel + ێ => ÿ (e.g. şeÿtan)
word = gsub(word, '^و$', "û") --non-letter + 'و' + non-letter => û (=and)
word = gsub(word, '([^ء-يٱ-ەiwẅyÿ])و', "%1w") --non-letter + 'و' => w (e.g. wetar)
word = gsub(word, '^و', "w") --first 'و' => w (e.g. wetar)
word = gsub(word, 'یو', "îw") --'ی' + 'و' => îw (e.g. mîwe)
word = gsub(word, '([^و])یی', "%1îy") --'ی' + 'ی' => îy (e.g. kanîy)
word = gsub(word, 'وی', "uy") --'و' + 'ی' => uy (e.g. buyn)
word = gsub(word, 'وو', "û") --'و' + 'و' => û (e.g. nû)
word = gsub(word, 'ی', "î")
word = gsub(word, 'و', "u")
word = gsub(word, 'uu', "û") --'و' + 'و' => û (e.g. nû)
word = gsub(word, '([ء-يٱ-ەiîuûwẅyÿ])ڕ', "%1rr") --when 'ڕ' not at the beginning of a word => rr
word = gsub(word, '([ء-يٱ-ەiîuûwẅyÿ])ئ', "%1'") --when 'ئ' not at the beginning of a word => '
word = gsub(word, '.', mapping)
--insert i where applicable
word = gsub(word, 'll', "Ľ") -- temporary conversion to avoid seeing ll as 2 letters
word = gsub(word, 'rr', "Ŕ") -- temporary conversion to avoid seeing rr as 2 letters
word = gsub(word, '([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([fjlĽmnrŔsşvwẅxẍyÿz])([fjlĽmnrŔsşvwẅxẍyÿz])([^aeêiîouûüy])', "%1%2i%3%4") --e.g. grft -> grift
word = gsub(word, '([aeêiîouûü])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])$', "%1%2%3i%4") --e.g. cejnt -> cejnit
word = gsub(word, '([fjlĽrŔsşwyz])([fjlĽmnrŔsşvwẅxẍyÿz])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])', "%1i%2%3") --e.g. wrd -> wird
word = gsub(word, '([bcçdghḧkmnpqtvxẍ])([fjlĽmnrŔsşvwẅxẍyÿz])([^aeêiîouûü])', "%1i%2%3") --e.g. prd -> pird
word = gsub(word, '([bcçdghḧkmnpqtvxẍ])([fjlĽmnrŔsşvwẅxẍyÿz])$', "%1i%2") --like above
word = gsub(word, '([^aeêiîouûü])([bcçdghḧkmnpqtvxẍ])([fjlĽmnrŔsşvwẅxẍyÿz])([^aeêiîouûü])', "%1%2i%3%4") --repeat the latter expression, in case skipped
word = gsub(word, '([^aeêiîouûü])([bcçdghḧkmnpqtvxẍ])([fjlĽmnrŔsşvwẅxẍyÿz])$', "%1%2i%3") --repeat the latter expression, in case skipped
word = gsub(word, '^([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([^aeêiîouûü])', "%1i%2%3") --e.g. ktk -> kitk
word = gsub(word, '^([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])$', "%1i%2") --e.g. ktk -> kitk
word = gsub(word, '([^aeêiîouüy])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([^aeêiîouûü])', "%1%2i%3%4") --e.g. ktk -> kitk
word = gsub(word, '([^aeêiîouüy])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])$', "%1%2i%3") --e.g. ktk -> kitk
word = gsub(word, '([^a-zçşêîûüĽŔ])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])$', "%1%2i") --e.g. j -> ji
word = gsub(word, '^([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])$', "%1i") --e.g. j -> ji
--word = gsub(word, '([^a-zêîûçş0-9\'’])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([bcçdfghḧjklĽmnpqrŔsştvxẍz])', "%1%2i%3") --e.g. bra -> bira
--word = gsub(word, '^([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([bcçdfghḧjklĽmnpqrŔsştvxẍz])', "%1i%2") --e.g. bra -> bira
--word = gsub(word, '([bcçdfghḧjklmnpqrsştvwẅxẍz][bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])([bcçdfghḧjklĽmnpqrŔsştvwẅxẍz])', "%1i%2") --e.g. aşkra -> aşkira
--word = gsub(word, 'si([tp][aeêiîouû])', "s%1") -- sp, st cluster
word = gsub(word, 'Ľ', "ll") --revert the temporary conversion
word = gsub(word, 'Ŕ', "rr") --revert the temporary conversion
-- Add the punctuation who had previously deleted.
word = word .. ponct
return word
end
function export.tr(text, lang, sc)
local textTab = {}
-- Create a word table separated by a space (%s).
for _, word in ipairs(mw.text.split(text, '%s+')) do
table.insert(textTab, word)
end
-- Tablo of translit.
for key, word in ipairs(textTab) do
textTab[key] = tr_word(word)
end
return table.concat(textTab, ' ')
end
return export
nyl8y43xba2k7f8nukjuhd2vo5fwsf8