Wiktionary
tpiwiktionary
https://tpi.wiktionary.org/wiki/Fran_Pes
MediaWiki 1.39.0-wmf.23
case-sensitive
Media
Sipesol
Toktok
Yusa
Toktok bilong yusa
Wiktionary
Wiktionary toktok
Fail
Toktok bilong fail
MediaWiki
Toktok bilong mediawiki
Templet
Toktok bilong templet
Halivim
Toktok bilong halivim
Grup
Toktok bilong grup
TimedText
TimedText talk
Module
Module talk
Gadget
Gadget talk
Gadget definition
Gadget definition talk
Module:parameters
828
3494
13321
10995
2022-08-03T07:52:08Z
Asinis632
1829
Scribunto
text/plain
local export = {}
-- A helper function to escape magic characters in a string
-- Magic characters: ^$()%.[]*+-?
local plain = require("Module:string/pattern_escape")
-- A helper function that removes empty numeric indexes in a table,
-- so that the values are tightly packed like in a normal Lua table.
-- equivalent to require("Module:table").compressSparseArray
local function remove_holes(t)
local ret = {}
local index = 1
local highest = 0
for num, _ in pairs(t) do
if type(num) == "number" and num > 0 and num < math.huge and math.floor(num) == num then
highest = math.max(highest, num)
end
end
for i = 1, highest do
if t[i] then
ret[index] = t[i]
index = index + 1
end
end
return ret
end
function export.process(args, params, return_unknown)
local args_new = {}
-- Process parameters for specific properties
local required = {}
local patterns = {}
local names_with_equal_sign = {}
local list_from_index = nil
for name, param in pairs(params) do
if param.required then
if param.alias_of then
require("Module:debug/track")("parameters/required alias")
end
required[name] = true
end
if param.list then
local key = name
if type(name) == "string" then
key = string.gsub(name, "=", "")
end
if param.default ~= nil then
args_new[key] = {param.default, maxindex = 1}
else
args_new[key] = {maxindex = 0}
end
if type(param.list) == "string" then
-- If the list property is a string, then it represents the name
-- to be used as the prefix for list items. This is for use with lists
-- where the first item is a numbered parameter and the
-- subsequent ones are named, such as 1, pl2, pl3.
if string.find(param.list, "=") then
patterns["^" .. string.gsub(plain(param.list), "=", "(%%d+)") .. "$"] = name
else
patterns["^" .. plain(param.list) .. "(%d+)$"] = name
end
elseif type(name) == "number" then
-- If the name is a number, then all indexed parameters from
-- this number onwards go in the list.
list_from_index = name
else
if string.find(name, "=") then
patterns["^" .. string.gsub(plain(name), "=", "(%%d+)") .. "$"] = string.gsub(name, "=", "")
else
patterns["^" .. plain(name) .. "(%d+)$"] = name
end
end
if string.find(name, "=") then
-- DO NOT SIDE-EFFECT A TABLE WHILE ITERATING OVER IT.
-- Some elements may be skipped or processed twice if you do.
-- Instead, track the changes we want to make to `params`, and
-- do them after the iteration over `params` is done.
table.insert(names_with_equal_sign, name)
end
elseif param.default ~= nil then
args_new[name] = param.default
end
end
--Process required changes to `params`
for _, name in ipairs(names_with_equal_sign) do
require("Module:debug/track")("parameters/name with equals")
params[string.gsub(name, "=", "")] = params[name]
params[name] = nil
end
-- Process the arguments
local args_unknown = {}
for name, val in pairs(args) do
local index = nil
if type(name) == "number" then
if list_from_index ~= nil and name >= list_from_index then
index = name - list_from_index + 1
name = list_from_index
end
else
-- Does this argument name match a pattern?
for pattern, pname in pairs(patterns) do
index = mw.ustring.match(name, pattern)
-- It matches, so store the parameter name and the
-- numeric index extracted from the argument name.
if index then
index = tonumber(index)
name = pname
break
end
end
end
local param = params[name]
-- If a parameter without the trailing index was found, and
-- require_index is set on the param, set the param to nil to treat it
-- as if it isn't recognized.
if not index and param and param.require_index then
param = nil
end
-- If no index was found, use 1 as the default index.
-- This makes list parameters like g, g2, g3 put g at index 1.
index = index or 1
-- If the argument is not in the list of parameters, trigger an error.
-- return_unknown suppresses the error, and stores it in a separate list instead.
if not param then
if return_unknown then
args_unknown[name] = val
else
error("The parameter \"" .. name .. "\" is not used by this template.", 2)
end
else
-- Remove leading and trailing whitespace unless allow_whitespace is true.
if not param.allow_whitespace then
val = mw.text.trim(val)
end
-- Empty string is equivalent to nil unless allow_empty is true.
if val == "" and not param.allow_empty then
val = nil
end
-- Convert to proper type if necessary.
if param.type == "boolean" then
val = not (not val or val == "" or val == "0" or val == "no" or val == "n" or val == "false")
elseif param.type == "number" then
val = tonumber(val)
elseif param.type then
require("Module:debug/track") {
"parameters/unrecognized type",
"parameters/unrecognized type/" .. tostring(param.type)
}
end
-- Can't use "if val" alone, because val may be a boolean false.
if val ~= nil then
-- Mark it as no longer required, as it is present.
required[param.alias_of or name] = nil
-- Store the argument value.
if param.list then
-- If the parameter is an alias of another, store it as the original,
-- but avoid overwriting it; the original takes precedence.
if not param.alias_of then
args_new[name][index] = val
-- Store the highest index we find.
args_new[name].maxindex = math.max(index, args_new[name].maxindex)
elseif args[param.alias_of] == nil then
if params[param.alias_of] and params[param.alias_of].list then
args_new[param.alias_of][index] = val
-- Store the highest index we find.
args_new[param.alias_of].maxindex = math.max(index, args_new[param.alias_of].maxindex)
else
args_new[param.alias_of] = val
end
end
else
-- If the parameter is an alias of another, store it as the original,
-- but avoid overwriting it; the original takes precedence.
if not param.alias_of then
args_new[name] = val
elseif args[param.alias_of] == nil then
if params[param.alias_of] and params[param.alias_of].list then
args_new[param.alias_of][1] = val
-- Store the highest index we find.
args_new[param.alias_of].maxindex = math.max(1, args_new[param.alias_of].maxindex)
else
args_new[param.alias_of] = val
end
end
end
end
end
end
-- The required table should now be empty.
-- If any entry remains, trigger an error, unless we're in the template namespace.
if mw.title.getCurrentTitle().nsText ~= "Templet" then
local list = {}
for name, param in pairs(required) do
table.insert(list, name)
end
local count = #list
if count == 1 then
error('The parameter "' .. list[1] .. '" is required.', 2)
elseif count == 2 then
error('The parameters "' .. table.concat(list, '" and "') .. '" are required.', 2)
elseif count > 2 then
error('The parameters "' .. mw.text.listToText(list, '", "', '", and "') .. '" are required.', 2)
end
end
-- Remove holes in any list parameters if needed.
for name, val in pairs(args_new) do
if type(val) == "table" and not params[name].allow_holes then
args_new[name] = remove_holes(val)
end
end
if return_unknown then
return args_new, args_unknown
else
return args_new
end
end
return export
gp1u6bw7kp5fowm19tulubiaop02oon
Module:links
828
3644
13322
10988
2022-08-03T07:59:49Z
Asinis632
1829
Scribunto
text/plain
local export = {}
--[=[
[[Unsupported titles]], pages with high memory usage,
extraction modules and part-of-speech names are listed
at [[Module:links/data]].
Other modules used:
[[Module:script utilities]]
[[Module:scripts]]
[[Module:languages]] and its submodules
[[Module:gender and number]]
[[Module:debug]]
]=]
-- These are prefixed with u to avoid confusion with the default string methods
-- of the same name.
local usub = mw.ustring.sub
local table_insert = table.insert
local table_concat = table.concat
local ignore_cap
local phonetic_extraction
local pos_tags
local unsupported_titles
function export.getLinkPage(target, lang)
unsupported_titles = unsupported_titles or mw.loadData("Module:links/data").unsupported_titles
if unsupported_titles[target] then
return "Unsupported titles/" .. unsupported_titles[target]
end
-- If the link contains unexpanded template parameters, then don't create a link.
if target:find("{{{") then
return nil
end
if target:sub(1, 1) == ":" or target:sub(1, 2) == "w:" or target:sub(1, 10) == "wikipedia:" then
return target
end
-- Remove diacritics from the page name
target = lang:makeEntryName(target)
if target:sub(1, 1) == "/" then
return ":" .. target
-- Link to appendix for reconstructed terms and terms in appendix-only languages
elseif target:sub(1, 1) == "*" and #target > 1 then
if lang:getCode() == "und" then
return nil
end
target = "Reconstruction:" .. lang:getCanonicalName() .. "/" .. usub(target, 2)
elseif lang:getType() == "reconstructed" then
error("The specified language " .. lang:getCanonicalName()
.. " is unattested, while the given word is not marked with '*' to indicate that it is reconstructed")
elseif lang:getType() == "appendix-constructed" then
target = "Appendix:" .. lang:getCanonicalName() .. "/" .. target
end
return target
end
-- Make a language-specific link from given link's parts
local function makeLangLink(link, lang, id, allow_self_link)
-- Temporary tracking code
local langCode = lang:getCode()
if langCode == "se" or langCode == "sia" or langCode:find("^sm[ajns]$")
or langCode:find("^sj[dektu]$") then
if link.display and link.display:find("'") then
require("Module:debug/track")("links/Sami apostrophe display")
elseif link.target and link.target:find("'") then
require("Module:debug/track")("links/Sami apostrophe target")
end
end
-- Find fragments (when link didn't come from parseLink).
-- Prevents {{l|en|word#Etymology 2|word}} from linking to [[word#Etymology 2#English]].
if link.fragment == nil then
-- Replace numeric character references with the corresponding character ( → '),
-- as they contain #, which causes the numeric character reference to be
-- misparsed (wa'a → waa → pagename wa&, fragment 29;a).
link.target = link.target:gsub("&#(%d+);",
function(number) return mw.ustring.char(tonumber(number)) end)
local first, second = link.target:match("^([^#]+)#(.+)$")
if first then
link.target, link.fragment = first, second
end
end
-- If there is no display form, then create a default one
if not link.display then
link.display = link.target
-- Strip the prefix from the displayed form
-- TODO: other interwiki links?
if link.display:sub(1, 1) == ":" and not mw.loadData("Module:links/data").unsupported_titles[link.display] then
link.display = link.display:sub(2) -- remove colon from beginning
else
local prefix = link.display:match("^([^:]+):")
local prefixes = {
w = true,
wikipedia = true,
}
if prefixes[prefix] then
link.display = link.display:sub(#prefix + 2) -- remove prefix plus colon
end
end
end
-- Process the target
link.target = export.getLinkPage(link.target, lang)
if not link.target then
return link.display
end
-- If the target is the same as the current page and there is no sense id
-- and linking to the same page hasn't been turned on, then return a "self-link"
-- like the software does.
if not (allow_self_link or id) and link.target:gsub("^:", "") == mw.title.getCurrentTitle().prefixedText then
return "<strong class=\"selflink\">" .. link.display .. "</strong>"
end
--[[
Add fragment
Do not add a section link to "Undetermined", as such sections do not exist and are invalid.
TabbedLanguages handles links without a section by linking to the "last visited" section,
but adding "Undetermined" would break that feature.
For localized prefixes that make syntax error, please use the format: ["xyz"] = true,
]]
local prefix = link.target:match("^:?([^:]+):")
local prefixes = {
w = true,
wikipedia = true,
Category = true,
}
if not prefixes[prefix] then
if link.fragment or link.target:find("#$") then
require("Module:debug/track") {
"links/fragment",
"links/fragment/" .. lang:getCode()
}
end
if not link.fragment and lang:getCode() ~= "und" then
if id then
link.fragment = require("Module:senseid").anchor(lang, id)
elseif not mw.ustring.find(link.target, "^Appendix:")
and not mw.ustring.find(link.target, "^Reconstruction:") then
link.fragment = lang:getCanonicalName()
end
end
-- This allows linking to pages like [[sms:a]] without it being treated weirdly.
link.target = link.target:gsub(":", ":")
end
return "[[" .. link.target .. (link.fragment and "#" .. link.fragment or "") .. "|" .. link.display .. "]]"
end
-- Split a link into its parts
local function parseLink(linktext)
local link = { target = linktext }
local first, second = link.target:match("^([^|]+)|(.+)$")
if first then
link.target = first
link.display = second
else
link.display = link.target
end
first, second = link.target:match("^(.+)#(.+)$")
if first then
link.target = first
link.fragment = second
else
-- So that makeLangLink does not look for a fragment again
link.fragment = false
end
return link
end
-- Creates a basic wikilink to the given term. If the text already contains
-- links, these are replaced with links to the correct section.
function export.language_link(data, allow_self_link)
if type(data) ~= "table" then
error("The first argument to the function language_link must be a table. See Module:links/documentation for more information.")
end
local text = data.term
ignore_cap = ignore_cap or mw.loadData("Module:links/data").ignore_cap
if ignore_cap[data.lang:getCode()] and text then
text = text:gsub("%^", "")
end
-- If the text begins with * and another character,
-- then act as if each link begins with *
local allReconstructed = false
if text:find("^*.") then
allReconstructed = true
end
-- Do we have embedded wikilinks?
if text:find("[[", nil, true) then
--[=[
[[Special:WhatLinksHere/Template:tracking/links/alt-ignored]]
[[Special:WhatLinksHere/Template:tracking/links/id-ignored]]
]=]
if data.alt then
require("Module:debug/track")("links/alt-ignored")
mw.log("(from Module:links)", "text with embedded wikilinks:", text,
"ignored alt:", data.alt, "lang:", data.lang:getCode())
end
if data.id then
require("Module:debug/track")("links/id-ignored")
mw.log("(from Module:links)", "text with embedded wikilinks:", text,
"ignored id:", data.id, "lang:", data.lang:getCode())
end
-- Begins and ends with a wikilink tag
if text:find("^%[%[(.+)%]%]$") then
-- There are no [ ] in between.
-- This makes the wikilink tag redundant.
if text:find("^%[%[[^%[%]]+%]%]$") then
require("Module:debug/track")("links/redundant wikilink")
else
local temp = text:gsub("^%[%[(.+)%]%]$", "%1")
temp = temp:gsub("%]%], %[%[", "|")
if not temp:find("[%[%]]") then
require("Module:debug/track")("links/list")
end
end
end
text = text:gsub("%[%[([^%]]+)%]%]",
function(linktext)
local link = parseLink(linktext)
if allReconstructed then
link.target = "*" .. link.target
end
return makeLangLink(link, data.lang, data.id, allow_self_link)
end)
-- Remove the extra * at the beginning if it's immediately followed
-- by a link whose display begins with * too
if allReconstructed then
text = text:gsub("^%*%[%[([^|%]]+)|%*", "[[%1|*")
end
else
-- There is no embedded wikilink, make a link using the parameters.
text = makeLangLink({ target = text, display = data.alt }, data.lang, data.id, allow_self_link)
end
return text
end
function export.mark(text, itemType, face, lang)
local tag = { "", "" }
if itemType == "gloss" then
tag = { '<span class="mention-gloss-double-quote">“</span><span class="mention-gloss">',
'</span><span class="mention-gloss-double-quote">”</span>' }
elseif itemType == "tr" then
if face == "term" then
tag = { '<span lang="' .. lang:getCode() .. '" class="tr mention-tr Latn">',
'</span>' }
else
tag = { '<span lang="' .. lang:getCode() .. '" class="tr Latn">', '</span>' }
end
elseif itemType == "ts" then
tag = { '<span class="ts mention-ts Latn">/', '/</span>' }
elseif itemType == "pos" then
tag = { '<span class="ann-pos">', '</span>' }
elseif itemType == "annotations" then
tag = { '<span class="mention-gloss-paren annotation-paren">(</span>',
'<span class="mention-gloss-paren annotation-paren">)</span>' }
end
if type(text) == "string" then
return tag[1] .. text .. tag[2]
else
return ""
end
end
-- Format the annotations (things following the linked term)
function export.format_link_annotations(data, face)
local output = {}
-- Interwiki link
if data.interwiki then
table_insert(output, data.interwiki)
end
-- Genders
if type(data.genders) ~= "table" then
data.genders = { data.genders }
end
if data.genders and #data.genders > 0 then
local m_gen = require("Module:gender and number")
table_insert(output, " " .. m_gen.format_list(data.genders, data.lang))
end
local annotations = {}
-- Transliteration and transcription
if data.tr or data.ts then
local kind
if face == "term" then
kind = face
else
kind = "default"
end
if data.tr and data.ts then
table_insert(annotations,
require("Module:script utilities").tag_translit(data.tr, data.lang, kind)
.. " " .. export.mark(data.ts, "ts"))
elseif data.ts then
table_insert(annotations, export.mark(data.ts, "ts"))
else
table_insert(annotations,
require("Module:script utilities").tag_translit(data.tr, data.lang, kind))
end
end
-- Gloss/translation
if data.gloss then
table_insert(annotations, export.mark(data.gloss, "gloss"))
end
-- Part of speech
if data.pos then
-- debug category for pos= containing transcriptions
if data.pos:find("/[^><]*/") then
data.pos = data.pos .. "[[Category:links likely containing transcriptions in pos]]"
end
pos_tags = pos_tags or mw.loadData("Module:links/data").pos_tags
table_insert(annotations, export.mark(pos_tags[data.pos] or data.pos, "pos"))
end
-- Literal/sum-of-parts meaning
if data.lit then
table_insert(annotations, "literally " .. export.mark(data.lit, "gloss"))
end
if #annotations > 0 then
table_insert(output, " " .. export.mark(table_concat(annotations, ", "), "annotations"))
end
return table_concat(output)
end
-- A version of {{l}} or {{m}} that can be called from other modules too
function export.full_link(data, face, allow_self_link, no_check_redundant_translit)
if type(data) ~= "table" then
error("The first argument to the function full_link must be a table. "
.. "See Module:links/documentation for more information.")
end
-- Create the link
local output = {}
local categories = {}
local link = ""
local annotations
phonetic_extraction = phonetic_extraction or mw.loadData("Module:links/data").phonetic_extraction
-- Is there any text to show?
if (data.term or data.alt) then
-- Try to detect the script if it was not provided
if not data.sc then
data.sc = require("Module:scripts").findBestScript(data.alt or data.term, data.lang)
else
-- Track uses of sc parameter
local best = require("Module:scripts").findBestScript(data.alt or data.term, data.lang)
require("Module:debug/track")("links/sc")
if data.sc:getCode() == best:getCode() then
require("Module:debug/track")("links/sc/redundant")
require("Module:debug/track")("links/sc/redundant/" .. data.sc:getCode())
else
require("Module:debug/track")("links/sc/needed")
require("Module:debug/track")("links/sc/needed/" .. data.sc:getCode())
end
end
local class = ""
-- Encode certain characters to avoid various delimiter-related issues at various stages. We need to encode < and >
-- because they end up forming part of CSS class names inside of <span ...> and will interfere with finding the end
-- of the HTML tag. I first tried converting them to URL encoding, i.e. %3C and %3E; they then appear in the URL as
-- %253C and %253E, which get mapped back to %3C and %3E when passed to [[Module:accel]]. But mapping them to <
-- and > somehow works magically without any further work; they appear in the URL as < and >, and get passed to
-- [[Module:accel]] as < and >. I have no idea who along the chain of calls is doing the encoding and decoding. If
-- someone knows, please modify this comment appropriately!
local encode_accel_char_map = {
["%"] = ".",
[" "] = "_",
["<"] = "<",
[">"] = ">",
}
local function encode_accel_param_chars(param)
local retval = param:gsub("[% <>]", encode_accel_char_map) -- discard second return value
return retval
end
local function encode_accel_param(prefix, param)
if not param then
return ""
end
if type(param) == "table" then
local filled_params = {}
-- There may be gaps in the sequence, especially for translit params.
local maxindex = 0
for k, v in pairs(param) do
if type(k) == "number" and k > maxindex then
maxindex = k
end
end
for i=1,maxindex do
filled_params[i] = param[i] or ""
end
-- [[Module:accel]] splits these up again.
param = table.concat(filled_params, "*~!")
end
-- This is decoded again by [[WT:ACCEL]].
return prefix .. encode_accel_param_chars(param)
end
if data.accel then
local form = data.accel.form and encode_accel_param_chars(data.accel.form) .. "-form-of" or ""
local gender = encode_accel_param("gender-", data.accel.gender)
local pos = encode_accel_param("pos-", data.accel.pos)
local translit = encode_accel_param("transliteration-",
data.accel.translit or (data.tr ~= "-" and data.tr or nil))
local target = encode_accel_param("target-", data.accel.target)
local lemma = encode_accel_param("origin-", data.accel.lemma)
local lemma_translit = encode_accel_param("origin_transliteration-", data.accel.lemma_translit)
local no_store = data.accel.no_store and "form-of-nostore" or ""
local accel =
form .. " " ..
gender .. " " ..
pos .. " " ..
translit .. " " ..
target .. " " ..
lemma .. " " ..
lemma_translit .. " " ..
no_store .. " "
class = "form-of lang-" .. data.lang:getCode() .. " " .. accel
end
-- Only make a link if the term has been given, otherwise just show the alt text without a link
link = require("Module:script utilities").tag_text(
data.term and export.language_link(data, allow_self_link)
or data.alt, data.lang, data.sc, face, class)
else
--[[ No term to show.
Is there at least a transliteration we can work from? ]]
link = require("Module:script utilities").request_script(data.lang, data.sc)
if link == "" or not data.tr or data.tr == "-" then
-- No link to show, and no transliteration either. Show a term request.
local category = ""
if mw.title.getCurrentTitle().nsText ~= "Template" then
table_insert(categories, "[[Category:" .. data.lang:getCanonicalName() .. " term requests]]")
end
link = "<small>[Term?]</small>"
end
end
table_insert(output, link)
if data.tr == "" or data.tr == "-" then
data.tr = nil
elseif phonetic_extraction[data.lang:getCode()] then
local m_phonetic = require(phonetic_extraction[data.lang:getCode()])
data.tr = data.tr or m_phonetic.getTranslit(export.remove_links(data.term))
elseif (data.term or data.alt) and not data.sc:getCode():find("Lati?n") then
-- Try to generate a transliteration, unless transliteration has been supplied and either
-- no_check_redundant_translit is given or we are in a high-memory entry. (Checking for redundant
-- transliteration can use up significant amounts of memory so we don't want to do it if memory
-- is tight. `no_check_redundant_translit` is currently set when called ultimately from
-- {{multitrans|...|no-check-redundant-translit=1}}.)
if not (data.tr and (
no_check_redundant_translit or
mw.loadData("Module:links/data").high_memory_entries[mw.title.getCurrentTitle().text]
)) then
local automated_tr = data.lang:transliterate(export.remove_links(data.alt or data.term), data.sc)
if automated_tr then
local manual_tr = data.tr
if manual_tr then
if manual_tr == automated_tr then
table_insert(categories,
"[[Category:Terms with redundant transliterations]]"
.. "[[Category:Terms with redundant transliterations/" .. data.lang:getCode() .. "]]")
else
-- Prevents Arabic root categories from flooding the tracking categories.
if mw.title.getCurrentTitle().nsText ~= "Category" then
table_insert(categories,
"[[Category:Terms with manual transliterations different from the automated ones]]"
.. "[[Category:Terms with manual transliterations different from the automated ones/" .. data.lang:getCode() .. "]]")
end
end
end
if (not manual_tr) or data.lang:overrideManualTranslit() then
data.tr = automated_tr
end
end
end
end
-- Link to the transliteration entry for languages that require this
if data.tr and data.lang:link_tr() then
data.tr = export.language_link { lang = data.lang, term = data.tr }
end
table_insert(output, export.format_link_annotations(data, face))
return table_concat(output) .. table_concat(categories)
end
--[[ Strips links: deletes category links,
the targets of piped links,
and all double square brackets. ]]
function export.remove_links(text)
if type(text) == "table" then
text = text.args[1]
end
if not text or text == "" then
return ""
end
text = mw.ustring.gsub(text, "%[%[Category:[^|%]]-|?[^|%]]-%]%]", "")
text = text:gsub("%[%[[^|%]]-|", "")
text = text:gsub("%[%[", "")
text = text:gsub("%]%]", "")
return text
end
function export.english_links(text)
local lang = require("Module:languages").getByCode("en")
-- Parentheses around function call to remove second return value, the
-- number of replacements.
return (text:gsub("%[%[([^%]]+)%]%]",
function(linktext)
local link = parseLink(linktext)
return makeLangLink(link, lang, nil, true, false)
end))
end
--[=[
This decodes old section encodings.
For example, Norwegian_Bokm.C3.A5l → Norwegian_Bokmål.
It isn't picky about whether the section encodings represent the UTF-8 encoding
of a real Unicode character, so it will mangle section names that contain
a period followed by two uppercase hex characters. At least such section names
are probably pretty rare.
Wiktionary adds an additional id="" attribute for sections
using a legacy encoding, if it is different from the modern minimally modified attribute.
It is like percent encoding (URI or URL encoding) except with "." instead of "%".
See [[mw:Manual:$wgFragmentMode]] and the code that does the encoding at
https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/core/+/7bf779524ab1fd8e1d74f79ea4840564d48eea4d/includes/parser/Sanitizer.php#893
]=]
-- The character class %x should not be used, as it includes the characters a-f,
-- which do not occur in these anchor encodings.
local capitalHex = "[0-9A-F]"
local function decodeAnchor(anchor)
return (anchor:gsub("%.(" .. capitalHex .. capitalHex .. ")",
function(hexByte)
return string.char(tonumber(hexByte, 16))
end))
end
function export.section_link(link)
if type(link) ~= "string" then
error("The first argument to section_link was a " .. type(link) .. ", but it should be a string.")
end
link = link:gsub("_", " ")
local numberSigns = select(2, mw.ustring.gsub(link, "#", ""))
if numberSigns > 1 then
error("The section link should only contain one number sign (#).")
end
link = mw.uri.decode(link, "WIKI")
local page, section = link:match("^([^#]*)#(.+)$")
if page == "" then
page = nil
end
if section then
section = decodeAnchor(section)
-- URI-encode (percent-encode) section to allow square brackets and
-- other dodgy characters in section name.
-- If not percent-encoded, they prevent the parser from creating a link.
-- Decode percent-encoding in the displayed text
if page then
return "[[" .. page .. "#" .. mw.uri.encode(section, "WIKI")
.. "|" .. page .. " § " .. section .. "]]"
else
return "[[#" .. mw.uri.encode(section, "WIKI")
.. "|§ " .. section .. "]]"
end
else
error("The function “section_link” could not find a number sign marking a section name.")
end
end
return export
os54grsal9oli8pqebeyim2kpu68njq
13328
13322
2022-08-03T08:39:41Z
Asinis632
1829
Scribunto
text/plain
local export = {}
--[=[
[[Unsupported titles]], pages with high memory usage,
extraction modules and part-of-speech names are listed
at [[Module:links/data]].
Other modules used:
[[Module:script utilities]]
[[Module:scripts]]
[[Module:languages]] and its submodules
[[Module:gender and number]]
[[Module:debug]]
]=]
-- These are prefixed with u to avoid confusion with the default string methods
-- of the same name.
local usub = mw.ustring.sub
local table_insert = table.insert
local table_concat = table.concat
local ignore_cap
local phonetic_extraction
local pos_tags
local unsupported_titles
function export.getLinkPage(target, lang)
unsupported_titles = unsupported_titles or mw.loadData("Module:links/data").unsupported_titles
if unsupported_titles[target] then
return "Unsupported titles/" .. unsupported_titles[target]
end
-- If the link contains unexpanded template parameters, then don't create a link.
if target:find("{{{") then
return nil
end
if target:sub(1, 1) == ":" or target:sub(1, 2) == "w:" or target:sub(1, 10) == "wikipedia:" then
return target
end
-- Remove diacritics from the page name
target = lang:makeEntryName(target)
if target:sub(1, 1) == "/" then
return ":" .. target
-- Link to appendix for reconstructed terms and terms in appendix-only languages
elseif target:sub(1, 1) == "*" and #target > 1 then
if lang:getCode() == "und" then
return nil
end
target = "Reconstruction:" .. lang:getCanonicalName() .. "/" .. usub(target, 2)
elseif lang:getType() == "reconstructed" then
error("The specified language " .. lang:getCanonicalName()
.. " is unattested, while the given word is not marked with '*' to indicate that it is reconstructed")
elseif lang:getType() == "appendix-constructed" then
target = "Appendix:" .. lang:getCanonicalName() .. "/" .. target
end
return target
end
-- Make a language-specific link from given link's parts
local function makeLangLink(link, lang, id, allow_self_link)
-- Temporary tracking code
local langCode = lang:getCode()
if langCode == "se" or langCode == "sia" or langCode:find("^sm[ajns]$")
or langCode:find("^sj[dektu]$") then
if link.display and link.display:find("'") then
require("Module:debug/track")("links/Sami apostrophe display")
elseif link.target and link.target:find("'") then
require("Module:debug/track")("links/Sami apostrophe target")
end
end
-- Find fragments (when link didn't come from parseLink).
-- Prevents {{l|en|word#Etymology 2|word}} from linking to [[word#Etymology 2#English]].
if link.fragment == nil then
-- Replace numeric character references with the corresponding character ( → '),
-- as they contain #, which causes the numeric character reference to be
-- misparsed (wa'a → waa → pagename wa&, fragment 29;a).
link.target = link.target:gsub("&#(%d+);",
function(number) return mw.ustring.char(tonumber(number)) end)
local first, second = link.target:match("^([^#]+)#(.+)$")
if first then
link.target, link.fragment = first, second
end
end
-- If there is no display form, then create a default one
if not link.display then
link.display = link.target
-- Strip the prefix from the displayed form
-- TODO: other interwiki links?
if link.display:sub(1, 1) == ":" and not mw.loadData("Module:links/data").unsupported_titles[link.display] then
link.display = link.display:sub(2) -- remove colon from beginning
else
local prefix = link.display:match("^([^:]+):")
local prefixes = {
w = true,
wikipedia = true,
}
if prefixes[prefix] then
link.display = link.display:sub(#prefix + 2) -- remove prefix plus colon
end
end
end
-- Process the target
link.target = export.getLinkPage(link.target, lang)
if not link.target then
return link.display
end
-- If the target is the same as the current page and there is no sense id
-- and linking to the same page hasn't been turned on, then return a "self-link"
-- like the software does.
if not (allow_self_link or id) and link.target:gsub("^:", "") == mw.title.getCurrentTitle().prefixedText then
return "<strong class=\"selflink\">" .. link.display .. "</strong>"
end
--[[
Add fragment
Do not add a section link to "Undetermined", as such sections do not exist and are invalid.
TabbedLanguages handles links without a section by linking to the "last visited" section,
but adding "Undetermined" would break that feature.
For localized prefixes that make syntax error, please use the format: ["xyz"] = true,
]]
local prefix = link.target:match("^:?([^:]+):")
local prefixes = {
w = true,
wikipedia = true,
Category = true,
}
if not prefixes[prefix] then
if link.fragment or link.target:find("#$") then
require("Module:debug/track") {
"links/fragment",
"links/fragment/" .. lang:getCode()
}
end
if not link.fragment and lang:getCode() ~= "und" then
if id then
link.fragment = require("Module:senseid").anchor(lang, id)
elseif not mw.ustring.find(link.target, "^Appendix:")
and not mw.ustring.find(link.target, "^Reconstruction:") then
link.fragment = lang:getCanonicalName()
end
end
-- This allows linking to pages like [[sms:a]] without it being treated weirdly.
link.target = link.target:gsub(":", ":")
end
return "[[" .. link.target .. (link.fragment and "#" .. link.fragment or "") .. "|" .. link.display .. "]]"
end
-- Split a link into its parts
local function parseLink(linktext)
local link = { target = linktext }
local first, second = link.target:match("^([^|]+)|(.+)$")
if first then
link.target = first
link.display = second
else
link.display = link.target
end
first, second = link.target:match("^(.+)#(.+)$")
if first then
link.target = first
link.fragment = second
else
-- So that makeLangLink does not look for a fragment again
link.fragment = false
end
return link
end
-- Creates a basic wikilink to the given term. If the text already contains
-- links, these are replaced with links to the correct section.
function export.language_link(data, allow_self_link)
if type(data) ~= "table" then
error("The first argument to the function language_link must be a table. See Module:links/documentation for more information.")
end
local text = data.term
ignore_cap = ignore_cap or mw.loadData("Module:links/data").ignore_cap
if ignore_cap[data.lang:getCode()] and text then
text = text:gsub("%^", "")
end
-- If the text begins with * and another character,
-- then act as if each link begins with *
local allReconstructed = false
if text:find("^*.") then
allReconstructed = true
end
-- Do we have embedded wikilinks?
if text:find("[[", nil, true) then
--[=[
[[Special:WhatLinksHere/Template:tracking/links/alt-ignored]]
[[Special:WhatLinksHere/Template:tracking/links/id-ignored]]
]=]
if data.alt then
require("Module:debug/track")("links/alt-ignored")
mw.log("(from Module:links)", "text with embedded wikilinks:", text,
"ignored alt:", data.alt, "lang:", data.lang:getCode())
end
if data.id then
require("Module:debug/track")("links/id-ignored")
mw.log("(from Module:links)", "text with embedded wikilinks:", text,
"ignored id:", data.id, "lang:", data.lang:getCode())
end
-- Begins and ends with a wikilink tag
if text:find("^%[%[(.+)%]%]$") then
-- There are no [ ] in between.
-- This makes the wikilink tag redundant.
if text:find("^%[%[[^%[%]]+%]%]$") then
require("Module:debug/track")("links/redundant wikilink")
else
local temp = text:gsub("^%[%[(.+)%]%]$", "%1")
temp = temp:gsub("%]%], %[%[", "|")
if not temp:find("[%[%]]") then
require("Module:debug/track")("links/list")
end
end
end
text = text:gsub("%[%[([^%]]+)%]%]",
function(linktext)
local link = parseLink(linktext)
if allReconstructed then
link.target = "*" .. link.target
end
return makeLangLink(link, data.lang, data.id, allow_self_link)
end)
-- Remove the extra * at the beginning if it's immediately followed
-- by a link whose display begins with * too
if allReconstructed then
text = text:gsub("^%*%[%[([^|%]]+)|%*", "[[%1|*")
end
else
-- There is no embedded wikilink, make a link using the parameters.
text = makeLangLink({ target = text, display = data.alt }, data.lang, data.id, allow_self_link)
end
return text
end
function export.mark(text, itemType, face, lang)
local tag = { "", "" }
if itemType == "gloss" then
tag = { '<span class="mention-gloss-double-quote">“</span><span class="mention-gloss">',
'</span><span class="mention-gloss-double-quote">”</span>' }
elseif itemType == "tr" then
if face == "term" then
tag = { '<span lang="' .. lang:getCode() .. '" class="tr mention-tr Latn">',
'</span>' }
else
tag = { '<span lang="' .. lang:getCode() .. '" class="tr Latn">', '</span>' }
end
elseif itemType == "ts" then
tag = { '<span class="ts mention-ts Latn">/', '/</span>' }
elseif itemType == "pos" then
tag = { '<span class="ann-pos">', '</span>' }
elseif itemType == "annotations" then
tag = { '<span class="mention-gloss-paren annotation-paren">(</span>',
'<span class="mention-gloss-paren annotation-paren">)</span>' }
end
if type(text) == "string" then
return tag[1] .. text .. tag[2]
else
return ""
end
end
-- Format the annotations (things following the linked term)
function export.format_link_annotations(data, face)
local output = {}
-- Interwiki link
if data.interwiki then
table_insert(output, data.interwiki)
end
-- Genders
if type(data.genders) ~= "table" then
data.genders = { data.genders }
end
if data.genders and #data.genders > 0 then
local m_gen = require("Module:gender and number")
table_insert(output, " " .. m_gen.format_list(data.genders, data.lang))
end
local annotations = {}
-- Transliteration and transcription
if data.tr or data.ts then
local kind
if face == "term" then
kind = face
else
kind = "default"
end
if data.tr and data.ts then
table_insert(annotations,
require("Module:script utilities").tag_translit(data.tr, data.lang, kind)
.. " " .. export.mark(data.ts, "ts"))
elseif data.ts then
table_insert(annotations, export.mark(data.ts, "ts"))
else
table_insert(annotations,
require("Module:script utilities").tag_translit(data.tr, data.lang, kind))
end
end
-- Gloss/translation
if data.gloss then
table_insert(annotations, export.mark(data.gloss, "gloss"))
end
-- Part of speech
if data.pos then
-- debug category for pos= containing transcriptions
if data.pos:find("/[^><]*/") then
data.pos = data.pos .. "[[Category:links likely containing transcriptions in pos]]"
end
pos_tags = pos_tags or mw.loadData("Module:links/data").pos_tags
table_insert(annotations, export.mark(pos_tags[data.pos] or data.pos, "pos"))
end
-- Literal/sum-of-parts meaning
if data.lit then
table_insert(annotations, "literally " .. export.mark(data.lit, "gloss"))
end
if #annotations > 0 then
table_insert(output, " " .. export.mark(table_concat(annotations, ", "), "annotations"))
end
return table_concat(output)
end
-- A version of {{l}} or {{m}} that can be called from other modules too
function export.full_link(data, face, allow_self_link, no_check_redundant_translit)
if type(data) ~= "table" then
error("The first argument to the function full_link must be a table. "
.. "See Module:links/documentation for more information.")
end
-- Create the link
local output = {}
local categories = {}
local link = ""
local annotations
phonetic_extraction = phonetic_extraction or mw.loadData("Module:links/data").phonetic_extraction
-- Is there any text to show?
if (data.term or data.alt) then
-- Try to detect the script if it was not provided
if not data.sc then
data.sc = require("Module:scripts").findBestScript(data.alt or data.term, data.lang)
else
-- Track uses of sc parameter
local best = require("Module:scripts").findBestScript(data.alt or data.term, data.lang)
require("Module:debug/track")("links/sc")
if data.sc:getCode() == best:getCode() then
require("Module:debug/track")("links/sc/redundant")
require("Module:debug/track")("links/sc/redundant/" .. data.sc:getCode())
else
require("Module:debug/track")("links/sc/needed")
require("Module:debug/track")("links/sc/needed/" .. data.sc:getCode())
end
end
local class = ""
-- Encode certain characters to avoid various delimiter-related issues at various stages. We need to encode < and >
-- because they end up forming part of CSS class names inside of <span ...> and will interfere with finding the end
-- of the HTML tag. I first tried converting them to URL encoding, i.e. %3C and %3E; they then appear in the URL as
-- %253C and %253E, which get mapped back to %3C and %3E when passed to [[Module:accel]]. But mapping them to <
-- and > somehow works magically without any further work; they appear in the URL as < and >, and get passed to
-- [[Module:accel]] as < and >. I have no idea who along the chain of calls is doing the encoding and decoding. If
-- someone knows, please modify this comment appropriately!
local encode_accel_char_map = {
["%"] = ".",
[" "] = "_",
["<"] = "<",
[">"] = ">",
}
local function encode_accel_param_chars(param)
local retval = param:gsub("[% <>]", encode_accel_char_map) -- discard second return value
return retval
end
local function encode_accel_param(prefix, param)
if not param then
return ""
end
if type(param) == "table" then
local filled_params = {}
-- There may be gaps in the sequence, especially for translit params.
local maxindex = 0
for k, v in pairs(param) do
if type(k) == "number" and k > maxindex then
maxindex = k
end
end
for i=1,maxindex do
filled_params[i] = param[i] or ""
end
-- [[Module:accel]] splits these up again.
param = table.concat(filled_params, "*~!")
end
-- This is decoded again by [[WT:ACCEL]].
return prefix .. encode_accel_param_chars(param)
end
if data.accel then
local form = data.accel.form and encode_accel_param_chars(data.accel.form) .. "-form-of" or ""
local gender = encode_accel_param("gender-", data.accel.gender)
local pos = encode_accel_param("pos-", data.accel.pos)
local translit = encode_accel_param("transliteration-",
data.accel.translit or (data.tr ~= "-" and data.tr or nil))
local target = encode_accel_param("target-", data.accel.target)
local lemma = encode_accel_param("origin-", data.accel.lemma)
local lemma_translit = encode_accel_param("origin_transliteration-", data.accel.lemma_translit)
local no_store = data.accel.no_store and "form-of-nostore" or ""
local accel =
form .. " " ..
gender .. " " ..
pos .. " " ..
translit .. " " ..
target .. " " ..
lemma .. " " ..
lemma_translit .. " " ..
no_store .. " "
class = "form-of lang-" .. data.lang:getCode() .. " " .. accel
end
-- Only make a link if the term has been given, otherwise just show the alt text without a link
link = require("Module:script utilities").tag_text(
data.term and export.language_link(data, allow_self_link)
or data.alt, data.lang, data.sc, face, class)
else
--[[ No term to show.
Is there at least a transliteration we can work from? ]]
link = require("Module:script utilities").request_script(data.lang, data.sc)
if link == "" or not data.tr or data.tr == "-" then
-- No link to show, and no transliteration either. Show a term request.
local category = ""
if mw.title.getCurrentTitle().nsText ~= "Templet" then
table_insert(categories, "[[Grup:" .. data.lang:getCanonicalName() .. " term requests]]")
end
link = "<small>[Term?]</small>"
end
end
table_insert(output, link)
if data.tr == "" or data.tr == "-" then
data.tr = nil
elseif phonetic_extraction[data.lang:getCode()] then
local m_phonetic = require(phonetic_extraction[data.lang:getCode()])
data.tr = data.tr or m_phonetic.getTranslit(export.remove_links(data.term))
elseif (data.term or data.alt) and not data.sc:getCode():find("Lati?n") then
-- Try to generate a transliteration, unless transliteration has been supplied and either
-- no_check_redundant_translit is given or we are in a high-memory entry. (Checking for redundant
-- transliteration can use up significant amounts of memory so we don't want to do it if memory
-- is tight. `no_check_redundant_translit` is currently set when called ultimately from
-- {{multitrans|...|no-check-redundant-translit=1}}.)
if not (data.tr and (
no_check_redundant_translit or
mw.loadData("Module:links/data").high_memory_entries[mw.title.getCurrentTitle().text]
)) then
local automated_tr = data.lang:transliterate(export.remove_links(data.alt or data.term), data.sc)
if automated_tr then
local manual_tr = data.tr
if manual_tr then
if manual_tr == automated_tr then
table_insert(categories,
"[[Category:Terms with redundant transliterations]]"
.. "[[Category:Terms with redundant transliterations/" .. data.lang:getCode() .. "]]")
else
-- Prevents Arabic root categories from flooding the tracking categories.
if mw.title.getCurrentTitle().nsText ~= "Grup" then
table_insert(categories,
"[[Grup:Terms with manual transliterations different from the automated ones]]"
.. "[[Category:Terms with manual transliterations different from the automated ones/" .. data.lang:getCode() .. "]]")
end
end
end
if (not manual_tr) or data.lang:overrideManualTranslit() then
data.tr = automated_tr
end
end
end
end
-- Link to the transliteration entry for languages that require this
if data.tr and data.lang:link_tr() then
data.tr = export.language_link { lang = data.lang, term = data.tr }
end
table_insert(output, export.format_link_annotations(data, face))
return table_concat(output) .. table_concat(categories)
end
--[[ Strips links: deletes category links,
the targets of piped links,
and all double square brackets. ]]
function export.remove_links(text)
if type(text) == "table" then
text = text.args[1]
end
if not text or text == "" then
return ""
end
text = mw.ustring.gsub(text, "%[%[Grup:[^|%]]-|?[^|%]]-%]%]", "")
text = text:gsub("%[%[[^|%]]-|", "")
text = text:gsub("%[%[", "")
text = text:gsub("%]%]", "")
return text
end
function export.english_links(text)
local lang = require("Module:languages").getByCode("en")
-- Parentheses around function call to remove second return value, the
-- number of replacements.
return (text:gsub("%[%[([^%]]+)%]%]",
function(linktext)
local link = parseLink(linktext)
return makeLangLink(link, lang, nil, true, false)
end))
end
--[=[
This decodes old section encodings.
For example, Norwegian_Bokm.C3.A5l → Norwegian_Bokmål.
It isn't picky about whether the section encodings represent the UTF-8 encoding
of a real Unicode character, so it will mangle section names that contain
a period followed by two uppercase hex characters. At least such section names
are probably pretty rare.
Wiktionary adds an additional id="" attribute for sections
using a legacy encoding, if it is different from the modern minimally modified attribute.
It is like percent encoding (URI or URL encoding) except with "." instead of "%".
See [[mw:Manual:$wgFragmentMode]] and the code that does the encoding at
https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/core/+/7bf779524ab1fd8e1d74f79ea4840564d48eea4d/includes/parser/Sanitizer.php#893
]=]
-- The character class %x should not be used, as it includes the characters a-f,
-- which do not occur in these anchor encodings.
local capitalHex = "[0-9A-F]"
local function decodeAnchor(anchor)
return (anchor:gsub("%.(" .. capitalHex .. capitalHex .. ")",
function(hexByte)
return string.char(tonumber(hexByte, 16))
end))
end
function export.section_link(link)
if type(link) ~= "string" then
error("The first argument to section_link was a " .. type(link) .. ", but it should be a string.")
end
link = link:gsub("_", " ")
local numberSigns = select(2, mw.ustring.gsub(link, "#", ""))
if numberSigns > 1 then
error("The section link should only contain one number sign (#).")
end
link = mw.uri.decode(link, "WIKI")
local page, section = link:match("^([^#]*)#(.+)$")
if page == "" then
page = nil
end
if section then
section = decodeAnchor(section)
-- URI-encode (percent-encode) section to allow square brackets and
-- other dodgy characters in section name.
-- If not percent-encoded, they prevent the parser from creating a link.
-- Decode percent-encoding in the displayed text
if page then
return "[[" .. page .. "#" .. mw.uri.encode(section, "WIKI")
.. "|" .. page .. " § " .. section .. "]]"
else
return "[[#" .. mw.uri.encode(section, "WIKI")
.. "|§ " .. section .. "]]"
end
else
error("The function “section_link” could not find a number sign marking a section name.")
end
end
return export
dcueswq1ho17axmspdv33zh1ngz75gr
Module:links/data
828
3652
13323
10998
2022-08-03T08:02:34Z
Asinis632
1829
Scribunto
text/plain
local data = {}
data.ignore_cap = {
["ko"] = true,
}
data.phonetic_extraction = {
["th"] = "Module:th",
["km"] = "Module:km",
}
data.pos_tags = {
["a"] = "adjective",
["adv"] = "adverb",
["int"] = "interjection",
["n"] = "noun",
["pron"] = "pronoun",
["v"] = "verb",
["vi"] = "intransitive verb",
["vt"] = "transitive verb",
["vti"] = "transitive and intransitive verb",
}
data.high_memory_entries = {
"a",
"animal",
"book",
"coffee",
"do",
"e",
"language",
"night",
"o",
"smoke",
"son",
"sun",
"water",
"wind",
}
local U = mw.ustring.char
local soft_hyphen = U(0xAD)
--[[ The "actual title" is the page name with the prefix "Unsupported titles/" removed.
["displayed_title"] = "actual title" ]]
data.unsupported_titles = {
[" "] = "Space",
["{"] = "Left curly bracket",
["}"] = "Right curly bracket",
["["] = "Left square bracket",
["]"] = "Right square bracket",
["<"] = "Less than",
[">"] = "Greater than",
["=<"] = "Equal less than",
["=>"] = "Equal greater than",
[">="] = "Greater than equal",
["<="] = "Less than equal",
["->"] = "Hyphen greater than",
["<-"] = "Less than hyphen",
[">_<"] = "Greater than low line less than",
["::"] = "Double colon",
[": :"] = "Enclosing colons",
[":/"] = "Colon slash",
[":="] = "Colon equals",
[":Þ"] = "Colon capital thorn",
[":þ"] = "Colon lowercase thorn",
[":("] = "Colon left paren",
[":)"] = "Colon right paren",
[":3"] = "Colon three",
["<>"] = "Less than greater than",
["<3"] = "Less than three",
["</3"] = "Less than slash three",
["< >"] = "Enclosing less than greater than",
["< />"] = "Less than trailing slash greater than",
["< > </ >"] = "HTML start tag end tag",
["<!-- -->"] = "HTML comment",
["<g>"] = "g tag",
[":-("] = "Colon hyphen left paren",
[":-)"] = "Colon hyphen right paren",
["|"] = "Vertical line",
["||"] = "Vertical line vertical line",
["| |"] = "Enclosing vertical lines",
["C#"] = "C sharp",
["#"] = "Number sign",
["# #"] = "Enclosing number signs",
["&"] = "Amp",
[":"] = "Colon",
[".."] = "Double period",
["."] = "Full stop",
["_"] = "Low line",
["-_-"] = "Low line interfix",
[U(0xFFFD)] = "Replacement character",
[U(0x1680)] = "Ogham space",
["[ ]"] = "Square brackets",
["{ }"] = "Curly brackets",
["[…]"] = "Square bracketed ellipsis",
["_ _"] = "Enclosing low lines",
["C|N>K"] = "C through N to K",
["#MeToo"] = "MeToo",
["о/."] = "о slash dot",
["กรุงเทพมหานคร อมรรัตนโกสินทร์ มหินทรายุธยา มหาดิลกภพ นพรัตนราชธานีบูรีรมย์ อุดมราชนิเวศน์มหาสถาน อมรพิมานอวตารสถิต สักกะทัตติยวิษณุกรรมประสิทธิ์"] = "Thai name of Bangkok",
["λοπαδοτεμαχοσελαχογαλεοκρανιολειψανοδριμυποτριμματοσιλφιοκαραβομελιτοκατακεχυμενοκιχλ" .. soft_hyphen .. "επικοσσυφοφαττοπεριστεραλεκτρυονοπτοκεφαλλιοκιγκλοπελειολαγῳοσιραιοβαφητραγανοπτερύγων"] = "Ancient Greek dish",
[":≠"] = ":≠",
["S:t"] = "S:t",
["S:ta"] = "S:ta",
["S:t Michel"] = "S:t Michel",
["c:a"] = "c:a",
["eq #"] = "eq number sign",
["hr #"] = "hr number sign",
["n:a"] = "n:a",
["n:o"] = "n:o",
["n:r"] = "n:r",
["s:a"] = "s:a",
["st:a"] = "st:a",
["v:a"] = "v:a",
}
for i, item in ipairs(data.high_memory_entries) do
data.high_memory_entries[i] = nil
data.high_memory_entries[item] = true
end
return data
7zsizb8zglitbtewtcqk13alr4hasb9
Templet:descendant
10
4130
13312
11593
2022-08-03T06:17:48Z
Asinis632
1829
wikitext
text/x-wiki
{{#invoke:etymology/templates/descendant|descendant}}<noinclude>
{{documentation}}
</noinclude>
5i762qwxh1fn2n8ve51agjddncrfsgo
kondom
0
5290
13310
2022-08-03T06:12:31Z
Asinis632
1829
Created page with "{{also|Kondom}} ==Afar== ===Etymology=== From {{bor|aa|en|condom}}. ===Pronunciation=== * {{aa-IPA|kóndom}} ===Noun=== {{aa-noun|kóndom|g=m|pl=kondomwá|gpl=f}} # [[condom]] ====References==== * {{R:aa:Hassan Kamil:2015}} {{c|aa|Birth control}} ---- ==Cebuano== ===Etymology=== Borrowed from {{bor|ceb|en|condom}}. ===Pronunciation=== * {{hyphenation|ceb|kon|dom}} ===Noun=== {{ceb-noun}} # [[condom]] ===Verb=== {{ceb-verb}} # to [[put on]] a condom {{topic..."
wikitext
text/x-wiki
{{also|Kondom}}
==Afar==
===Etymology===
From {{bor|aa|en|condom}}.
===Pronunciation===
* {{aa-IPA|kóndom}}
===Noun===
{{aa-noun|kóndom|g=m|pl=kondomwá|gpl=f}}
# [[condom]]
====References====
* {{R:aa:Hassan Kamil:2015}}
{{c|aa|Birth control}}
----
==Cebuano==
===Etymology===
Borrowed from {{bor|ceb|en|condom}}.
===Pronunciation===
* {{hyphenation|ceb|kon|dom}}
===Noun===
{{ceb-noun}}
# [[condom]]
===Verb===
{{ceb-verb}}
# to [[put on]] a condom
{{topics|ceb|Birth control}}
----
==Czech==
===Etymology===
From {{der|cs|en|condom}}.
===Pronunciation===
* {{cs-IPA}}
* {{hyphenation|cs|kon|dom}}
===Noun===
{{cs-noun|g=m-in}}
# [[condom]]
#: {{syn|cs|prezervativ|guma|šprcka|šprcguma}}
====Declension====
{{cs-decl-noun
|kondom|kondomu|kondomu|kondom|kondome|kondomu|kondomem
|kondomy|kondomů|kondomům|kondomy|kondomy|kondomech|kondomy
}}
===Further reading===
* {{R:PSJC}}
* {{R:SSJC}}
{{c|cs|Birth control}}
----
==Danish==
{{wikipedia|lang=da}}
===Pronunciation===
* {{IPA|da|/kɔndoːm/|[kʰʌnˈd̥oːˀm]}} or {{IPA|da|/kondoːm/|[kʰɔnˈd̥oːˀm]|[kʰonˈd̥oːˀm]}}
===Noun===
{{da-noun|et|er}}
# [[condom]] {{gloss|flexible sleeve}}
#: {{syn|da|præservativ|gummi}}
====Declension====
{{da-noun-infl|et|er}}
====Descendants====
* {{desc|kl|kondomi}}
{{c|da|Birth control}}
----
==Indonesian==
===Pronunciation===
* {{IPA|id|[ˈkɔndɔm]|qual1=}}
* {{hyphenation|id|kon|dom}}
* {{rhymes|id|dom|om|m|s=2}}
===Etymology 1===
From {{bor|id|nl|condoom}}, from {{der|id|en|condom}}.
* The sense of protective case or cover is comparable to the Dutch synonym {{m|nl|kous|t=condom, mantle|lit=stocking, sock}}.
====Noun====
{{id-noun}}
# {{lb|id|literal}} [[condom]]: A flexible sleeve made of latex or other impermeable material such as sheepskin, worn over an erect penis during sexual intercourse as a contraceptive or as a way to prevent the spread of STDs.
# {{lb|id|colloquial}} [[protective]] [[case]] or [[cover]].
====Derived terms====
{{der4|id|
| berkondom
|}}
===Etymology 2===
{{blend|id|kondisi|domisili}}.
====Noun====
{{id-noun}}
# {{lb|id|slang|dated}} [[condition]] and [[situation]]
===Further reading===
* {{R:KBBI Daring}}
{{c|id|Birth control}}
----
==Malay==
{{wikipedia|lang=ms}}
===Etymology===
Borrowed from {{bor|ms|en|condom}}.
===Noun===
{{ms-noun|j=کوندوم}}
# [[condom]]
====Further reading====
* {{R:PRPM}}
{{c|ms|Birth control}}
----
==Norwegian Bokmål==
{{wikipedia|lang=no}}
===Etymology===
From {{der|nb|en|condom}}
===Noun===
{{nb-noun-n3}}
# a {{l|en|condom}}
===References===
* {{R:The Bokmål Dictionary}}
{{c|nb|Birth control}}
----
==Norwegian Nynorsk==
{{wikipedia|lang=nn}}
===Etymology===
From {{der|nn|en|condom}}
===Noun===
{{nn-noun-n1}}
# a {{l|en|condom}}
===References===
* {{R:The Nynorsk Dictionary}}
{{c|nn|Birth control}}
----
==Polish==
{{wp|lang=pl}}
===Etymology===
{{bor+|pl|en|condom}}.
===Pronunciation===
{{pl-p|a=Pl-kondom.ogg}}
===Noun===
{{pl-noun|m-in}}
# [[condom]]
#: {{syn|pl|prezerwatywa}}
====Declension====
{{pl-decl-noun
|kondom|kondomy
|kondomu|kondomów
|kondomowi|kondomom
|kondom|kondomy
|kondomem|kondomami
|kondomie|kondomach
|kondomie|kondomy
}}
===Further reading===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
{{C|pl|Birth control}}
----
==Serbo-Croatian==
===Etymology===
From {{bor|sh|en|condom}}.
===Pronunciation===
* {{IPA|sh|/kǒndoːm/}}
* {{hyphenation|sh|kon|dom}}
===Noun===
{{sh-noun|g=m|head=kòndōm}}
# [[condom]]
====Declension====
{{sh-decl-noun
|kòndōm|kondomi
|kondóma|kondoma
|kondomu|kondomima
|kondom|kondome
|kondome|kondomi
|kondomu|kondomima
|kondomom|kondomima
}}
{{c|sh|Birth control}}
----
==Slovene==
===Pronunciation===
* {{sl-IPA|kondọ̑m}}
===Noun===
{{sl-noun|kondọ̑m|m-in}}
# [[condom]]
#: {{syn|sl|preservatív}}
====Inflection====
{{sl-decl-noun-m|kondóm}}
{{c|sl|Birth control}}
----
==Swedish==
{{wikipedia|lang=sv}}
===Etymology===
From {{der|sv|en|condom}}.
===Noun===
{{sv-noun|c}}
# a {{l|en|condom}}
#: {{syn|sv|gummi|kådis}} {{q|both slang}}
====Declension====
{{sv-infl-noun-c-r|2=kondome}}
{{topics|sv|Birth control}}
----
==Tagalog==
===Etymology===
Borrowed from {{bor|tl|en|condom}}.
===Pronunciation===
* {{hyph|tl|kon|dom}}
* {{tl-IPA}}
===Noun===
{{tl-noun}}
# [[condom]]
===Further reading===
* {{R:KWF Diksiyonaryo}}
{{C|tl|Birth control}}
----
==Tok Pisin==
===Etymology===
From {{der|tpi|en|condom}}.
===Noun===
{{head|tpi|noun}}
# [[condom]]
{{c|tpi|Birth control}}
----
==Turkish==
===Etymology===
Borrowed from {{bor|tr|fr|condom}}.
===Noun===
{{tr-noun|u|lar}}
# [[condom]]
#: {{syn|tr|prezervatif}}
====Declension====
{{tr-infl-noun-c|o}}
{{c|tr|Birth control}}
68hi5usmzccndhqtffhup5cdzq1um2f
13311
13310
2022-08-03T06:14:16Z
Asinis632
1829
wikitext
text/x-wiki
{{also|Kondom}}
==Afar==
===Etymology===
From {{bor|aa|en|condom}}.
===Pronunciation===
* {{aa-IPA|kóndom}}
===Noun===
{{aa-noun|kóndom|g=m|pl=kondomwá|gpl=f}}
# [[condom]]
====References====
* {{R:aa:Hassan Kamil:2015}}
{{c|aa|Birth control}}
----
==Cebuano==
===Etymology===
Borrowed from {{bor|ceb|en|condom}}.
===Pronunciation===
* {{hyphenation|ceb|kon|dom}}
===Noun===
{{ceb-noun}}
# [[condom]]
===Verb===
{{ceb-verb}}
# to [[put on]] a condom
{{topics|ceb|Birth control}}
----
==Czech==
===Etymology===
From {{der|cs|en|condom}}.
===Pronunciation===
* {{cs-IPA}}
* {{hyphenation|cs|kon|dom}}
===Noun===
{{cs-noun|g=m-in}}
# [[condom]]
#: {{syn|cs|prezervativ|guma|šprcka|šprcguma}}
====Declension====
{{cs-decl-noun
|kondom|kondomu|kondomu|kondom|kondome|kondomu|kondomem
|kondomy|kondomů|kondomům|kondomy|kondomy|kondomech|kondomy
}}
===Further reading===
* {{R:PSJC}}
* {{R:SSJC}}
{{c|cs|Birth control}}
----
==Danish==
{{wikipedia|lang=da}}
===Pronunciation===
* {{IPA|da|/kɔndoːm/|[kʰʌnˈd̥oːˀm]}} or {{IPA|da|/kondoːm/|[kʰɔnˈd̥oːˀm]|[kʰonˈd̥oːˀm]}}
===Noun===
{{da-noun|et|er}}
# [[condom]] {{gloss|flexible sleeve}}
#: {{syn|da|præservativ|gummi}}
====Declension====
{{da-noun-infl|et|er}}
====Descendants====
* {{desc|kl|kondomi}}
{{c|da|Birth control}}
----
==Indonesian==
===Pronunciation===
* {{IPA|id|[ˈkɔndɔm]|qual1=}}
* {{hyphenation|id|kon|dom}}
* {{rhymes|id|dom|om|m|s=2}}
===Etymology 1===
From {{bor|id|nl|condoom}}, from {{der|id|en|condom}}.
* The sense of protective case or cover is comparable to the Dutch synonym {{m|nl|kous|t=condom, mantle|lit=stocking, sock}}.
====Noun====
{{id-noun}}
# {{lb|id|literal}} [[condom]]: A flexible sleeve made of latex or other impermeable material such as sheepskin, worn over an erect penis during sexual intercourse as a contraceptive or as a way to prevent the spread of STDs.
# {{lb|id|colloquial}} [[protective]] [[case]] or [[cover]].
====Derived terms====
{{der4|id|
| berkondom
|}}
===Etymology 2===
{{blend|id|kondisi|domisili}}.
====Noun====
{{id-noun}}
# {{lb|id|slang|dated}} [[condition]] and [[situation]]
===Further reading===
* {{R:KBBI Daring}}
{{c|id|Birth control}}
----
==Malay==
{{wikipedia|lang=ms}}
===Etymology===
Borrowed from {{bor|ms|en|condom}}.
===Noun===
{{ms-noun|j=کوندوم}}
# [[condom]]
====Further reading====
* {{R:PRPM}}
{{c|ms|Birth control}}
----
==Norwegian Bokmål==
{{wikipedia|lang=no}}
===Etymology===
From {{der|nb|en|condom}}
===Noun===
{{nb-noun-n3}}
# a {{l|en|condom}}
===References===
* {{R:The Bokmål Dictionary}}
{{c|nb|Birth control}}
----
==Norwegian Nynorsk==
{{wikipedia|lang=nn}}
===Etymology===
From {{der|nn|en|condom}}
===Noun===
{{nn-noun-n1}}
# a {{l|en|condom}}
===References===
* {{R:The Nynorsk Dictionary}}
{{c|nn|Birth control}}
----
==Polish==
{{wp|lang=pl}}
===Etymology===
{{bor+|pl|en|condom}}.
===Pronunciation===
{{pl-p|a=Pl-kondom.ogg}}
===Noun===
{{pl-noun|m-in}}
# [[condom]]
#: {{syn|pl|prezerwatywa}}
====Declension====
{{pl-decl-noun
|kondom|kondomy
|kondomu|kondomów
|kondomowi|kondomom
|kondom|kondomy
|kondomem|kondomami
|kondomie|kondomach
|kondomie|kondomy
}}
===Further reading===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
{{C|pl|Birth control}}
----
{{-sr-}}
===Etymology===
From {{bor|sh|en|condom}}.
===Pronunciation===
* {{IPA|sh|/kǒndoːm/}}
* {{hyphenation|sh|kon|dom}}
===Noun===
{{sh-noun|g=m|head=kòndōm}}
# [[condom]]
====Declension====
{{sh-decl-noun
|kòndōm|kondomi
|kondóma|kondoma
|kondomu|kondomima
|kondom|kondome
|kondome|kondomi
|kondomu|kondomima
|kondomom|kondomima
}}
{{c|sh|Birth control}}
----
==Slovene==
===Pronunciation===
* {{sl-IPA|kondọ̑m}}
===Noun===
{{sl-noun|kondọ̑m|m-in}}
# [[condom]]
#: {{syn|sl|preservatív}}
====Inflection====
{{sl-decl-noun-m|kondóm}}
{{c|sl|Birth control}}
----
==Swedish==
{{wikipedia|lang=sv}}
===Etymology===
From {{der|sv|en|condom}}.
===Noun===
{{sv-noun|c}}
# a {{l|en|condom}}
#: {{syn|sv|gummi|kådis}} {{q|both slang}}
====Declension====
{{sv-infl-noun-c-r|2=kondome}}
{{topics|sv|Birth control}}
----
==Tagalog==
===Etymology===
Borrowed from {{bor|tl|en|condom}}.
===Pronunciation===
* {{hyph|tl|kon|dom}}
* {{tl-IPA}}
===Noun===
{{tl-noun}}
# [[condom]]
===Further reading===
* {{R:KWF Diksiyonaryo}}
{{C|tl|Birth control}}
----
{{-tpi-}}
===Etymology===
From {{der|tpi|en|condom}}.
===Noun===
{{head|tpi|noun}}
# [[condom]]
{{c|tpi|Birth control}}
----
{{-tr-}}
===Etymology===
Borrowed from {{bor|tr|fr|condom}}.
===Noun===
{{tr-noun|u|lar}}
# [[condom]]
#: {{syn|tr|prezervatif}}
====Declension====
{{tr-infl-noun-c|o}}
{{c|tr|Birth control}}
7pvgob1o69n8s555wt7ebm2q3w3mnxv
Module:etymology/templates/descendant
828
5291
13313
2022-08-03T06:18:33Z
Asinis632
1829
Created page with "local export = {} local listToSet = require("Module:table/listToSet") local rsplit = mw.text.split local error_on_no_descendants = false local function qualifier(content) if content then return '<span class="ib-brac qualifier-brac">(</span><span class="ib-content qualifier-content">' .. content .. '</span><span class="ib-brac qualifier-brac">)</span>' end end local function track(page) return require("Module:debug/track")("descendant/" .. page) end local func..."
Scribunto
text/plain
local export = {}
local listToSet = require("Module:table/listToSet")
local rsplit = mw.text.split
local error_on_no_descendants = false
local function qualifier(content)
if content then
return '<span class="ib-brac qualifier-brac">(</span><span class="ib-content qualifier-content">' .. content .. '</span><span class="ib-brac qualifier-brac">)</span>'
end
end
local function track(page)
return require("Module:debug/track")("descendant/" .. page)
end
local function ine(arg)
if arg == "" then
return nil
else
return arg
end
end
local function add_tooltip(text, tooltip)
return '<span class="desc-arr" title="' .. tooltip .. '">' .. text .. '</span>'
end
local m_dialect_tags
local function memoize_require_dialect_tags()
if not m_dialect_tags then
m_dialect_tags = require("Module:dialect tags")
end
return m_dialect_tags
end
-- Replace comma+whitespace in the non-modifier parts of an alternating run (after parse_balanced_segment_run() is
-- called). See split_on_comma() in [[Module:dialect tags]].
local function escape_comma_whitespace_in_alternating_run(run)
local need_tempcomma_undo = false
for i, seg in ipairs(run) do
if i % 2 == 1 then
local this_need_tempcomma_undo
if seg:find(",") then
run[i], this_need_tempcomma_undo = memoize_require_dialect_tags().escape_comma_whitespace(seg)
end
need_tempcomma_undo = need_tempcomma_undo or this_need_tempcomma_undo
end
end
return need_tempcomma_undo
end
-- Params that modify a descendant term (as also supported by {{l}}, {{m}}). Doesn't include gloss=, which we
-- handle specially.
local param_term_mods = {"alt", "g", "id", "lit", "pos", "sc", "t", "tr", "ts"}
local param_term_mod_set = listToSet(param_term_mods)
-- Boolean params indicating whether a descendant term (or all terms) are particular sorts of borrowings.
local bortypes = {"inh", "bor", "lbor", "slb", "obor", "translit", "der", "clq", "pclq", "sml", "unc"}
local bortype_set = listToSet(bortypes)
-- Aliases of clq=.
local calque_aliases = {"cal", "calq", "calque"}
local calque_alias_set = listToSet(calque_aliases)
-- Aliases of pclq=.
local partial_calque_aliases = {"pcal", "pcalq", "pcalque"}
local partial_calque_alias_set = listToSet(partial_calque_aliases)
-- Miscellaneous list params.
local misc_list_params = {"q", "qq", "tag"}
local misc_list_param_set = listToSet(misc_list_params)
local function desc_or_desc_tree(frame, desc_tree)
local params
if desc_tree then
params = {
[1] = {required = true, default = "gem-pro"},
[2] = {required = true, list = true, allow_holes = true, default = "*fuhsaz"},
["notext"] = {type = "boolean"},
["noalts"] = {type = "boolean"},
["noparent"] = {type = "boolean"},
}
else
params = {
[1] = {required = true},
[2] = {list = true, allow_holes = true},
["alts"] = {type = "boolean"}
}
end
-- Add a "regular" list param such as g=, gloss=, lit=, etc. "Regular" here means that `param` and `param1` are
-- the same thing. `type` if given is the param type (e.g. "boolean") and `alias_of` is used for params that are
-- aliases of other params.
local function add_regular_list_param(param, type, alias_of)
params[param] = {type = type, alias_of = alias_of, list = true, allow_holes = true}
end
-- Add an index-separated list param such as bor=, calq=, qq=, etc. "Index-separated" means that `param` and
-- `param1` are different. Non-numbered `param` is accessible as `args.param` while numbered `param1`, `param2`,
-- etc. are accessible as `args.partparam[1]`, `args.partparam[2]`, etc. `type` if given is the param type (e.g.
-- "boolean") and `alias_of` is used for params that are aliases of other params.
local function add_index_separated_list_param(param, type, alias_of)
params[param] = {alias_of = alias_of, type = type}
params["part" .. param] = {alias_of = alias_of and "part" .. alias_of or nil, type = type,
list = param, allow_holes = true, require_index = true}
end
for _, term_mod in ipairs(param_term_mods) do
add_regular_list_param(term_mod)
end
-- Handle gloss= specially because it's an alias.
add_regular_list_param("gloss", nil, "t")
for _, bortype in ipairs(bortypes) do
add_index_separated_list_param(bortype, "boolean")
end
for _, calque_alias in ipairs(calque_aliases) do
add_index_separated_list_param(calque_alias, "boolean", "clq")
end
for _, partial_calque_alias in ipairs(partial_calque_aliases) do
add_index_separated_list_param(partial_calque_alias, "boolean", "pclq")
end
for _, misc_list_param in ipairs(misc_list_params) do
add_index_separated_list_param(misc_list_param)
end
-- Add other single params.
for k, v in pairs({
["sclb"] = {type = "boolean"},
["nolb"] = {type = "boolean"},
["sandbox"] = {type = "boolean"},
}) do
params[k] = v
end
local namespace = mw.title.getCurrentTitle().nsText
local parent_args
if frame.args[1] then
parent_args = frame.args
else
parent_args = frame:getParent().args
end
-- Error to catch most uses of old-style parameters.
if ine(parent_args[4]) and not ine(parent_args[3]) and not ine(parent_args.tr2) and not ine(parent_args.ts2)
and not ine(parent_args.t2) and not ine(parent_args.gloss2) and not ine(parent_args.g2)
and not ine(parent_args.alt2) then
error("You specified a term in 4= and not one in 3=. You probably meant to use t= to specify a gloss instead. "
.. "If you intended to specify two terms, put the second term in 3=.")
end
if not ine(parent_args[3]) and not ine(parent_args.alt2) and not ine(parent_args.tr2) and not ine(parent_args.ts2)
and ine(parent_args.g2) then
error("You specified a gender in g2= but no term in 3=. You were probably trying to specify two genders for "
.. "a single term. To do that, put both genders in g=, comma-separated.")
end
-- FIXME: Remove this after a few days.
if parent_args.q or parent_args.q1 or parent_args.q2 or parent_args.q3 or parent_args.q4 or parent_args.q5
or parent_args.q6 or parent_args.q7 or parent_args.q8 or parent_args.q9 then
track("q")
error("Please use qq= not q=. q= will be switching to put the qualifier *before* the term, not after.")
end
local args = require("Module:parameters").process(parent_args, params)
if args.sandbox then
if namespace == "" or namespace == "Reconstruction" then
error("The sandbox module, Module:descendants tree/sandbox, should not be used in entries.")
end
end
local m_desctree
if desc_tree or args["alts"] then
if args.sandbox or require("Module:yesno")(frame.args.sandbox, false) then
m_desctree = require("Module:descendants tree/sandbox")
else
m_desctree = require("Module:descendants tree")
end
end
local lang = args[1]
local terms = args[2]
if mw.title.getCurrentTitle().nsText == "Template" then
lang = lang or "en"
if #terms == 0 then
terms = {"word"}
terms.maxindex = 1
end
end
local m_languages = require("Module:languages")
lang = m_languages.getByCode(lang, 1, "allow etym")
local entryLang = m_languages.getNonEtymological(lang)
if not desc_tree and entryLang:getType() == "family" then
error("Cannot use language family code in [[Template:desc]].")
end
if lang:getCode() ~= entryLang:getCode() then
-- [[Special:WhatLinksHere/Template:tracking/descendant/etymological]]
track("etymological")
track("etymological/" .. lang:getCode())
end
local languageName = lang:getCanonicalName()
local label
if args["sclb"] then
local sc = args["sc"][1] and require("Module:scripts").getByCode(args["sc"][1], "sc")
local term = terms[1]
if sc then
label = sc:getCanonicalName()
else
label = require("Module:scripts").findBestScript(term, lang):getCanonicalName()
end
else
label = languageName
end
-- Find the maximum index among any of the list parameters.
local maxmaxindex = terms.maxindex
for k, v in pairs(args) do
if type(v) == "table" and v.maxindex and v.maxindex > maxmaxindex then
maxmaxindex = v.maxindex
end
end
-- Convert a raw tag= param (or nil) to a list of formatted dialect tags; unrecognized tags are passed through
-- unchanged. Return nil if nil passed in.
local function tags_to_dialects(tags)
if not tags then
return nil
end
local m_dialect_tags = memoize_require_dialect_tags()
return m_dialect_tags.make_dialects(m_dialect_tags.split_on_comma(tags), lang)
end
-- Return a function of one argument `arg` (a param name), which fetches args[`arg`] if index == 0, else
-- args["part" .. `arg`][index].
local function get_val(index)
return function(arg)
if index == 0 then
return args[arg]
else
return args["part" .. arg][index]
end
end
end
-- Return the arrow text for the `index`th term, or the overall arrow text if index == 0.
local function get_arrow(index)
local val = get_val(index)
local arrow
if val("bor") then
arrow = add_tooltip("→", "borrowed")
elseif val("lbor") then
arrow = add_tooltip("→", "learned borrowing")
elseif val("slb") then
arrow = add_tooltip("→", "semi-learned borrowing")
elseif val("obor") then
arrow = add_tooltip("→", "orthographic borrowing")
elseif args["translit"] then
arrow = add_tooltip("→", "transliteration")
elseif val("clq") then
arrow = add_tooltip("→", "calque")
elseif val("pclq") then
arrow = add_tooltip("→", "partial calque")
elseif val("sml") then
arrow = add_tooltip("→", "semantic loan")
elseif val("inh") or (val("unc") and not val("der")) then
arrow = add_tooltip(">", "inherited")
else
arrow = ""
end
-- allow der=1 in conjunction with bor=1 to indicate e.g. English "pars recta"
-- derived and borrowed from Latin "pars".
if val("der") then
arrow = arrow .. add_tooltip("⇒", "reshaped by analogy or addition of morphemes")
end
if val("unc") then
arrow = arrow .. add_tooltip("?", "uncertain")
end
if arrow ~= "" then
arrow = arrow .. " "
end
return arrow
end
-- Return the pre-qualifier text for the `index`th term, or the overall pre-qualifier text if index == 0.
local function get_pre_qualifiers(index)
local val = get_val(index)
local quals
if index > 0 then
quals = tags_to_dialects(val("tag"))
end
if val("q") then
quals = quals or {}
table.insert(quals, val("q"))
end
if quals then
return require("Module:qualifier").format_qualifier(quals) .. " "
else
return ""
end
end
-- Return the post-qualifier text for the `index`th term, or the overall post-qualifier text if index == 0.
local function get_post_qualifiers(index)
local val = get_val(index)
local postqs = {}
if val("inh") then
table.insert(postqs, qualifier("inherited"))
end
if val("lbor") then
table.insert(postqs, qualifier("learned"))
end
if val("slb") then
table.insert(postqs, qualifier("semi-learned"))
end
if val("translit") then
table.insert(postqs, qualifier("transliteration"))
end
if val("clq") then
table.insert(postqs, qualifier("calque"))
end
if val("pclq") then
table.insert(postqs, qualifier("partial calque"))
end
if val("sml") then
table.insert(postqs, qualifier("semantic loan"))
end
if val("qq") then
table.insert(postqs, require("Module:qualifier").format_qualifier(val("qq")))
end
if index == 0 then
local dialects = tags_to_dialects(val("tag"))
if dialects then
table.insert(postqs, memoize_require_dialect_tags().post_format_dialects(dialects))
end
end
if #postqs > 0 then
return " " .. table.concat(postqs, " ")
else
return ""
end
end
local parts = {}
local descendants = {}
local saw_descendants = false
local seen_terms = {}
local put
local use_semicolon = false
local ind = 0
for i = 1, maxmaxindex do
local term = terms[i]
if term ~= ";" then
ind = ind + 1
local alt = args["alt"][ind]
local id = args["id"][ind]
local sc = args["sc"][ind] and require("Module:scripts").getByCode(args["sc"][ind], "sc" .. (ind == 1 and "" or ind)) or nil
local tr = args["tr"][ind]
local ts = args["ts"][ind]
local gloss = args["t"][ind]
local pos = args["pos"][ind]
local lit = args["lit"][ind]
local g = args["g"][ind] and rsplit(args["g"][ind], "%s*,%s*") or {}
local link
local termobj = {
lang = entryLang,
}
-- Initialize `termobj` with indexed modifier params such as t1, t2, etc. and alt1, alt2, etc. Inline
-- modifiers specified using the <...> notation override these.
local function reinit_termobj(term)
termobj.term = term
termobj.sc = sc
termobj.term = term
termobj.alt = alt
termobj.id = id
termobj.tr = tr
termobj.ts = ts
termobj.genders = g
termobj.gloss = gloss
termobj.pos = pos
termobj.lit = lit
end
-- Construct a link out of `termobj`.
local function get_link()
local link = ""
-- If an individual term has a literal comma in it, use semicolons for all joiners. Otherwise we use
-- semicolon only if the user specified a literal semicolon as a term.
if termobj.term and termobj.term:find(",") then
use_semicolon = true
end
if termobj.term ~= "-" then -- including term == nil
link = require("Module:links").full_link(termobj, nil, true)
elseif termobj.ts or termobj.gloss or #termobj.genders > 0 then
-- [[Special:WhatLinksHere/Template:tracking/descendant/no term]]
track("no term")
termobj.term = nil
link = require("Module:links").full_link(termobj, nil, true)
link = link
:gsub("<small>%[Term%?%]</small> ", "")
:gsub("<small>%[Term%?%]</small> ", "")
:gsub("%[%[Category:[^%[%]]+ term requests%]%]", "")
else -- display no link at all
-- [[Special:WhatLinksHere/Template:tracking/descendant/no term or annotations]]
track("no term or annotations")
end
return link
end
-- Check for new-style argument, e.g. מרים<tr:Miryem>. But exclude HTML entry with <span ...>, <i ...>,
-- <br/> or similar in it, caused by wrapping an argument in {{l|...}}, {{af|...}} or similar. Basically,
-- all tags of the sort we parse here should consist of less-than + letters + greater-than, e.g. <bor>, or
-- less-than + letters + colon + arbitrary text with balanced angle brackets + greater-than, e.g. <tr:...>,
-- so if we see a tag on the outer level that isn't in this format, we don't try to parse it. The
-- restriction to the outer level is to allow generated HTML inside of e.g. qualifier tags, such as
-- foo<q:similar to {{m|fr|bar}}>.
if term and term:find("<") and not term:find("<[a-z]*[^a-z:>]") then
if not put then
put = require("Module:parse utilities")
end
local run = put.parse_balanced_segment_run(term, "<", ">")
-- Split the non-modifier parts of an alternating run on comma, but not on comma+whitespace.
local need_tempcomma_undo = escape_comma_whitespace_in_alternating_run(run)
local comma_separated_runs
if need_tempcomma_undo then
comma_separated_runs =
put.split_alternating_runs_and_frob_raw_text(run, ",",
memoize_require_dialect_tags().unescape_comma_whitespace)
else
comma_separated_runs = put.split_alternating_runs(run, ",")
end
local sub_links = {}
local function parse_err(msg)
local parts = {}
for _, run in ipairs(comma_separated_runs) do
table.insert(parts, table.concat(run))
end
error(msg .. ": " .. (i + 1) .. "=" .. table.concat(parts, ","))
end
for j, run in ipairs(comma_separated_runs) do
reinit_termobj(run[1])
local seen_mods = {}
for k = 2, #run - 1, 2 do
if run[k + 1] ~= "" then
parse_err("Extraneous text '" .. run[k + 1] .. "' after modifier")
end
local modtext = run[k]:match("^<(.*)>$")
if not modtext then
parse_err("Internal error: Modifier '" .. modtext .. "' isn't surrounded by angle brackets")
end
local prefix, arg = modtext:match("^([a-z]+):(.*)$")
if prefix then
if seen_mods[prefix] then
parse_err("Modifier '" .. prefix .. "' occurs twice, second occurrence " .. run[k])
end
seen_mods[prefix] = true
if prefix == "t" or prefix == "gloss" then
termobj.gloss = arg
elseif prefix == "g" then
termobj.genders = rsplit(arg, "%s*,%s*")
elseif prefix == "sc" then
termobj.sc = require("Module:scripts").getByCode(arg, "" .. (i + 1) .. ":sc")
elseif param_term_mod_set[prefix] then
termobj[prefix] = arg
elseif misc_list_param_set[prefix] then
if j < #comma_separated_runs then
parse_err("Modifier " .. run[k] .. " should come after the last term")
end
args["part" .. prefix][ind] = arg
else
parse_err("Unrecognized prefix '" .. prefix .. "' in modifier " .. run[k])
end
elseif j < #comma_separated_runs then
parse_err("Modifier " .. run[k] .. " should come after the last term")
else
if seen_mods[modtext] then
parse_err("Modifier '" .. modtext .. "' occurs twice")
end
seen_mods[modtext] = true
if bortype_set[modtext] then
args["part" .. modtext][ind] = true
elseif calque_alias_set[modtext] then
args.partclq[ind] = true
elseif partial_calque_alias_set[modtext] then
args.partpclq[ind] = true
else
parse_err("Unrecognized modifier '" .. modtext .. "'")
end
end
end
local sub_link = get_link()
if sub_link ~= "" then
table.insert(sub_links, sub_link)
end
end
link = table.concat(sub_links, "/")
elseif term and term:find(",") then
local sub_terms = memoize_require_dialect_tags().split_on_comma(term)
local sub_links = {}
for _, sub_term in ipairs(sub_terms) do
reinit_termobj(sub_term)
local sub_link = get_link()
if sub_link ~= "" then
table.insert(sub_links, sub_link)
end
end
link = table.concat(sub_links, "/")
else
reinit_termobj(term)
link = get_link()
end
local arrow = get_arrow(ind)
local preqs = get_pre_qualifiers(ind)
local postqs = get_post_qualifiers(ind)
local alts
if desc_tree and term and term ~= "-" then
table.insert(seen_terms, term)
-- This is what I ([[User:Benwing2]]) had in Nov 2020 when I first implemented this.
-- Since then, [[User:Fytcha]] added `true` as the fourth param.
-- descendants[ind] = m_desctree.getDescendants(entryLang, term, id, maxmaxindex > 1)
descendants[ind] = m_desctree.getDescendants(entryLang, term, id, true)
if descendants[ind] then
saw_descendants = true
end
end
descendants[ind] = descendants[ind] or ""
if term and (desc_tree and not args["noalts"] or not desc_tree and args["alts"]) then
-- [[Special:WhatLinksHere/Template:tracking/descendant/alts]]
track("alts")
alts = m_desctree.getAlternativeForms(entryLang, term, id)
else
alts = ""
end
local linktext = table.concat{preqs, link, alts, postqs}
if not args["notext"] then
linktext = arrow .. linktext
end
if linktext ~= "" then
if i > 1 then
table.insert(parts, terms[i - 1] == ";" and "; " or ", ")
end
table.insert(parts, linktext)
end
end
end
if error_on_no_descendants and desc_tree and not saw_descendants then
if #seen_terms == 0 then
error("[[Template:desctree]] invoked but no terms to retrieve descendants from")
elseif #seen_terms == 1 then
error("No Descendants section was found in the entry [[" .. seen_terms[1] ..
"]] under the header for " .. entryLang:getCanonicalName() .. ".")
else
for i, term in ipairs(seen_terms) do
seen_terms[i] = "[[" .. term .. "]]"
end
error("No Descendants section was found in any of the entries " ..
table.concat(seen_terms, ", ") .. " under the header for " .. entryLang:getCanonicalName() .. ".")
end
end
descendants = table.concat(descendants)
if args["noparent"] then
return descendants
end
local initial_arrow = get_arrow(0)
local initial_preqs = get_pre_qualifiers(0)
local final_postqs = get_post_qualifiers(0)
if use_semicolon then
for i = 2, #parts - 1, 2 do
parts[i] = ";"
end
end
local all_linktext = initial_preqs .. table.concat(parts) .. final_postqs .. descendants
if args["notext"] then
return all_linktext
elseif args["nolb"] then
return initial_arrow .. all_linktext
else
return table.concat{initial_arrow, label, ":", all_linktext ~= "" and " " or "", all_linktext}
end
end
function export.descendant(frame)
return desc_or_desc_tree(frame, false) .. require("Module:TemplateStyles")("Module:etymology/style.css")
end
function export.descendants_tree(frame)
return desc_or_desc_tree(frame, true)
end
return export
jq02tjb4jdodeuiktpd9vgoqr3nif3o
Module:table/listToSet
828
5292
13314
2022-08-03T06:20:59Z
Asinis632
1829
Created page with "--[[ { "a", "b", "c" } -> { ["a"] = true, ["b"] = true, ["c"] = true } --]] return function(t) -- checkType("listToSet", 1, t, "table") local set = {} for _, item in ipairs(t) do set[item] = true end return set end"
Scribunto
text/plain
--[[
{ "a", "b", "c" } -> { ["a"] = true, ["b"] = true, ["c"] = true }
--]]
return function(t)
-- checkType("listToSet", 1, t, "table")
local set = {}
for _, item in ipairs(t) do
set[item] = true
end
return set
end
hbvxu7fbovj7kgywa51p83eop5r8sf9
Templet:aa-IPA
10
5293
13315
2022-08-03T06:56:36Z
Asinis632
1829
Created page with "<includeonly>{{#invoke:aa-IPA|show}}</includeonly><noinclude>{{documentation}}[[Category:Afar templates]][[Category:Pronunciation templates]]</noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:aa-IPA|show}}</includeonly><noinclude>{{documentation}}[[Category:Afar templates]][[Category:Pronunciation templates]]</noinclude>
pybx6lwz3zp6fwmcj5o8gqwj7xatu1v
13316
13315
2022-08-03T06:58:13Z
Asinis632
1829
wikitext
text/x-wiki
<includeonly>{{#invoke:aa-IPA|show}}</includeonly><noinclude>{{documentation}}[[Grup:Afar templetes]][[Grup:Pronunciation templetes]]</noinclude>
rp2m5f33yz6v7ppame4lf8x6ssgvf85
Module:aa-IPA
828
5294
13317
2022-08-03T06:59:54Z
Asinis632
1829
Created page with "local export = {} local m_IPA = require("Module:IPA") local m_a = require("Module:accent qualifier") local lang = require("Module:languages").getByCode("aa") local s = mw.ustring.gsub local title = mw.title.getCurrentTitle().text local C = "[bcdfghjklmnpqrstwxyzʃ]" local c = { {"sh", "ʃ"}, {"(" .. C .. "?)á", "ˈ%1a"}, {"(" .. C .. "?)é", "ˈ%1e"}, {"(" .. C .. "?)í", "ˈ%1i"}, {"(" .. C .. "?)ó", "ˈ%1o"}, {"(" .. C .. "?)ú", "ˈ%1u"}, {"(" .. C .. "?)à..."
Scribunto
text/plain
local export = {}
local m_IPA = require("Module:IPA")
local m_a = require("Module:accent qualifier")
local lang = require("Module:languages").getByCode("aa")
local s = mw.ustring.gsub
local title = mw.title.getCurrentTitle().text
local C = "[bcdfghjklmnpqrstwxyzʃ]"
local c = {
{"sh", "ʃ"},
{"(" .. C .. "?)á", "ˈ%1a"},
{"(" .. C .. "?)é", "ˈ%1e"},
{"(" .. C .. "?)í", "ˈ%1i"},
{"(" .. C .. "?)ó", "ˈ%1o"},
{"(" .. C .. "?)ú", "ˈ%1u"},
{"(" .. C .. "?)à", "ˌ%1a"},
{"(" .. C .. "?)è", "ˌ%1e"},
{"(" .. C .. "?)ì", "ˌ%1i"},
{"(" .. C .. "?)ò", "ˌ%1o"},
{"(" .. C .. "?)ù", "ˌ%1u"},
{"(.)%1", "%1ː"},
{"r", "ɾ"},
{"a", "ʌ"},
{"ɾˈɾ", "rˈr"},
{"ʌː", "aː"},
{"ɾː", "rː"},
{"c", "ħ"},
{"g", "ɡ"},
{"j", "d͡ʒ"},
{"q", "ʕ"},
{"x", "ɖ"},
{"y", "j"},
{"([ktp])m", "%1ʰm"}
}
function export.pronunciation_phonemic(word)
word = mw.ustring.lower(word)
for a = 1, #c do
word = s(word, c[a][1], c[a][2])
end
return word
end
function export.syllabify(term) --split for hyphenation
local H, i = {}, 0
for a in string.gmatch(s(term, "([aeiou]" .. C .. "?)(" .. C .. ")%f[aeiou]", "%1.%2"), "[^%.-/]+") do
i = i+1
H[i] = a
end
return H
end
function export.show(frame)
local args = frame:getParent().args
local p, results, results_SA = {}, {}, {}
if not args[1] or (args[1] == "") then
error("Please put the word as the first positional parameter!")
else
for index, item in ipairs(args) do
table.insert(p, (item ~= "") and item or nil)
end
end
local separate_SA = false --default
for _, word in ipairs(p) do
word = export.pronunciation_phonemic(word)
table.insert(results, {pron = "/" .. word .. "/"})
table.insert(results_SA, {pron = "/" .. s(s(word, "j(ˈ?)s", "j%1ʃ"), "si", "ʃi") .. "/"})
if word ~= s(s(word, "j(ˈ?)s", "j%1ʃ"), "si", "ʃi") then --different Southern Afar pronunciation
separate_SA = true
end
end
local H = ""
if mw.ustring.match(title, "^[^%-].+[^%-]$") then
H = export.syllabify(title)
table.insert(H, 1, "aa") -- language code argument, ie. MOD:hyphenation format, next L
H = "\n* " .. require("Module:hyphenation").hyphenate(H)
end
if separate_SA then --Northern & Southern
return "* " .. m_a.show({"Northern Afar"}) .. " " .. m_IPA.format_IPA_full(lang, results) .. "\n* " .. m_a.show({"Southern Afar"}) .. " " .. m_IPA.format_IPA_full(lang, results_SA) .. H
else --unified
return "* " .. m_IPA.format_IPA_full(lang, results) .. H
end
end
return export
58ps3z7ce2n57ii8nzytur1svd79lml
Templet:aa-noun
10
5295
13318
2022-08-03T07:01:19Z
Asinis632
1829
Created page with "{{#if:{{{head2|}}}|{{head|aa|noun|head={{{1|}}}|g={{#switch:{{{g|}}}|m|f={{{g}}}|?}}}} ''or'' }}{{head|aa|noun |head={{{head2|{{{1|{{{head|{{SUBPAGENAME}}<sup title="stress missing">?</sup>}}}}}}}}} |g={{#switch:{{{g2|{{{g|}}}}}}|m|f={{{g2|{{{g|}}}}}}|mf=m|=?}} }}<!-- --> {{#if:{{{f|{{{m|{{{sg|{{{pl|}}}}}}}}}}}}|''(}}<!-- -->{{#if:{{{f|}}}|feminine '''''{{l-self|aa|{{{f}}}|accel-form=f}}'''''{{#if:{{{sg|{{{pl|}}}}}}|, }}}}<!-- -->{{#if:{{{m|}}}|masc..."
wikitext
text/x-wiki
{{#if:{{{head2|}}}|{{head|aa|noun|head={{{1|}}}|g={{#switch:{{{g|}}}|m|f={{{g}}}|?}}}} ''or'' }}{{head|aa|noun
|head={{{head2|{{{1|{{{head|{{SUBPAGENAME}}<sup title="stress missing">?</sup>}}}}}}}}}
|g={{#switch:{{{g2|{{{g|}}}}}}|m|f={{{g2|{{{g|}}}}}}|mf=m|=?}}
}}<!--
--> {{#if:{{{f|{{{m|{{{sg|{{{pl|}}}}}}}}}}}}|''(}}<!--
-->{{#if:{{{f|}}}|feminine '''''{{l-self|aa|{{{f}}}|accel-form=f}}'''''{{#if:{{{sg|{{{pl|}}}}}}|, }}}}<!--
-->{{#if:{{{m|}}}|masculine '''''{{l-self|aa|{{{m}}}|accel-form=m}}'''''{{#if:{{{sg|{{{pl|}}}}}}|, }}}}<!--
-->{{#if:{{{sg|}}}|singulative '''''{{l-self|aa|{{{sg}}}|accel-form=s}}''''' {{g|{{{gsg|?}}}}}{{#if:{{{sg2|}}}| or |{{#if:{{{pl|}}}|, }}}}<!--
-->{{#if:{{{sg2|}}}|'''''{{l-self|aa|{{{sg2}}}|accel-form=s}}''''' {{g|{{{gsg2|{{{gsg|?}}}}}}}}{{#if:{{{sg3|}}}| or |{{#if:{{{pl|}}}|, }}}}<!--
-->{{#if:{{{sg3|}}}|'''''{{l-self|aa|{{{sg3}}}|accel-form=s}}''''' {{g|{{{gsg3|{{{gsg2|{{{gsg|?}}}}}}}}}}}{{#if:{{{sg4|}}}| or |{{#if:{{{pl|}}}|, }}}}<!--
-->{{#if:{{{sg4|}}}|'''''{{l-self|aa|{{{sg4}}}|accel-form=s}}''''' {{g|{{{gsg4|{{{gsg3|{{{gsg2|{{{gsg|?}}}}}}}}}}}}}}{{#if:{{{pl|}}}|, }}}}}}}}}}<!--
-->{{#if:{{{pl|}}}|plural '''''{{l-self|aa|{{{pl}}}|accel-form=p}}''''' {{g|{{{gpl|?}}}}}<!--
-->{{#if:{{{pl2|}}}| or '''''{{l-self|aa|{{{pl2}}}|accel-form=p}}''''' {{g|{{{gpl2|{{{gpl|?}}}}}}}}<!--
-->{{#if:{{{pl3|}}}| or '''''{{l-self|aa|{{{pl3}}}|accel-form=p}}''''' {{g|{{{gpl3|{{{gpl2|{{{gpl|?}}}}}}}}}}}<!--
-->{{#if:{{{pl4|}}}| or '''''{{l-self|aa|{{{pl4}}}|accel-form=p}}''' {{g|{{{gpl4|{{{gpl3|{{{gpl2|{{{gpl|?}}}}}}}}}}}}}}}}}}}}}}<!--
-->{{#if:{{{f|{{{m|{{{sg|{{{pl|}}}}}}}}}}}}|)''}}<!--
-->{{#ifeq:{{{1|{{{head|}}}}}}||{{categorize|aa|Requests for tone in Afar entries}}}}{{#ifeq:{{{g|}}}||{{categorize|aa|Requests for gender in Afar entries}}}}<!--
--><noinclude>{{documentation}}</noinclude>
boxn4b0pnuw7canoob9tvrvhc8f9j8w
Templet:R:aa:Hassan Kamil:2015
10
5296
13319
2022-08-03T07:02:58Z
Asinis632
1829
Created page with "{{cite-book|author=Mohamed Hassan Kamil|title=L’afar: description grammaticale d’une langue couchitique (Djibouti, Erythrée et Ethiopie)|page={{{page|{{{p|{{{1|}}}}}}}}}|url=https://tel.archives-ouvertes.fr/tel-01368253/document|location=Paris|publisher=Université Sorbonne Paris Cité (doctoral thesis)|year=2015}}<noinclude>[[Category:Afar reference templates|Hassan Kamil 2015]]</noinclude>"
wikitext
text/x-wiki
{{cite-book|author=Mohamed Hassan Kamil|title=L’afar: description grammaticale d’une langue couchitique (Djibouti, Erythrée et Ethiopie)|page={{{page|{{{p|{{{1|}}}}}}}}}|url=https://tel.archives-ouvertes.fr/tel-01368253/document|location=Paris|publisher=Université Sorbonne Paris Cité (doctoral thesis)|year=2015}}<noinclude>[[Category:Afar reference templates|Hassan Kamil 2015]]</noinclude>
dy3c6ljlcjnomkqj8ggjvx0a8jvojst
Templet:g
10
5297
13320
2022-08-03T07:14:07Z
Asinis632
1829
Created page with "{{#invoke:gender and number|show_list|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}}}<!-- --><noinclude>{{documentation}}</noinclude>"
wikitext
text/x-wiki
{{#invoke:gender and number|show_list|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
rg6pfjwl4kkmry9r70c0oqjm4mxjvf2
Templet:ceb-noun
10
5298
13324
2022-08-03T08:04:07Z
Asinis632
1829
Created page with "<includeonly>{{#invoke:ceb-headword|show|nouns}}</includeonly><noinclude>{{documentation}}[[Category:Cebuano headword-line templates]]</noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:ceb-headword|show|nouns}}</includeonly><noinclude>{{documentation}}[[Category:Cebuano headword-line templates]]</noinclude>
egjyrxhijye6jf0ctdo60by1bhijuen
Module:ceb-headword
828
5300
13325
2022-08-03T08:05:09Z
Asinis632
1829
Created page with "local export = {} local pos_functions = {} local lang = require("Module:languages").getByCode("ceb") local PAGENAME = mw.title.getCurrentTitle().text local script = require("Module:scripts").findBestScript(PAGENAME, lang) -- Latn function export.show(frame) local tracking_categories = {} local args = frame:getParent().args local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") local head..."
Scribunto
text/plain
local export = {}
local pos_functions = {}
local lang = require("Module:languages").getByCode("ceb")
local PAGENAME = mw.title.getCurrentTitle().text
local script = require("Module:scripts").findBestScript(PAGENAME, lang) -- Latn
function export.show(frame)
local tracking_categories = {}
local args = frame:getParent().args
local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
local head = {} -- supports multiple headword
if args["head"] or args[1] then table.insert(head, args["head"] or args[1]) end
if args["head2"] or args[2] then table.insert(head, args["head2"] or args[2]) end
if args["head3"] or args[3] then table.insert(head, args["head3"] or args[3]) end
local data = {lang = lang, sc = script, pos_category = poscat, categories = {}, heads = head, translits = {"-"}, inflections = {}}
if pos_functions[poscat] then
pos_functions[poscat](args, data)
end
local content = mw.title.new(PAGENAME):getContent()
return require("Module:headword").full_headword(data) .. require("Module:utilities").format_categories(tracking_categories, lang)
end
pos_functions["verbs"] = function(args, data)
params = {
[1] = {alias_of = 'head'},
[2] = {alias_of = 'inch'}, --Nasugdan. Use with affixed verbs only
[3] = {alias_of = 'imp'},
head = {list = true},
head2= {},
head3= {},
inch = {list = true},
imp = {list = true}
}
local args = require("Module:parameters").process(args,params)
data.heads = args.head
data.id = args.id
local pattern = args.pattern
args.inch.label = "inchoative"
args.imp.label = "imperative"
args.inch.accel = {form = "realis"}
args.imp.accel = {form = "imperative"}
if #args.inch > 0 then table.insert(data.inflections, args.inch) end
if #args.imp > 0 then table.insert(data.inflections, args.imp) end
end
pos_functions["adjectives"] = function(args, data)
params = {
[1] = {alias_of = 'head'},
[2] = {alias_of = 'comp_sup'},
[3] = {alias_of = 'abs_sup'},
[4] = {alias_of = 'plural'}, -- See notes.
head = {list = true},
head2= {},
head3= {},
plural = {list = true}, -- Some adjectives only
comp_sup = {list = true},
abs_sup = {list = true}
}
local args = require("Module:parameters").process(args,params)
data.heads = args.head
data.id = args.id
local pattern = args.pattern
args.comp_sup.label = "comp_sup"
args.abs_sup.label = "abs_sup"
args.plural.label = "plural"
args.comp_sup.accel = {form = "comparative|superlative"}
args.abs_sup.accel = {form = "absolutive|superlative"}
args.plural.accel = {form = "plural"}
if #args.comp_sup > 0 then table.insert(data.inflections, args.comp_sup) end
if #args.abs_sup > 0 then table.insert(data.inflections, args.abs_sup) end
if #args.plural > 0 then table.insert(data.inflections, args.plural) end
end
pos_functions["nouns"] = function(args, data)
params = {
[1] = {alias_of = 'head'},
[2] = {alias_of = 'plural'}, -- Special plural cases only
head = {list = true},
head2= {},
head3= {},
plural = {list = true}
}
local args = require("Module:parameters").process(args,params)
data.heads = args.head
data.id = args.id
local pattern = args.pattern
args.plural.label = "plural"
args.plural.accel = {form = "plural"}
if #args.plural > 0 then table.insert(data.inflections, args.plural) end
end
return export
m1ud93tfot0gtju48t9s38v0fsvhnki
condom
0
5301
13326
2022-08-03T08:07:08Z
Asinis632
1829
Created page with "{{also|Condom}} ==English== {{wikipedia}} [[File:Kondom.jpg|200px|thumb|right|A rolled-up '''condom'''.]] ===Alternative forms=== * {{l|en|condum}} ===Etymology=== {{unk|en}}. Many speculations exist. Possibly derived from {{cog|it|guantone}}, from {{m|it|guanto||a glove}} ===Pronunciation=== * {{a|UK}} {{IPA|en|/ˈkɒn.dɒm/|/ˈkɒn.dəm/}} * {{a|US}} {{IPA|en|/ˈkɑn.dəm/|/ˈkʌn.dəm/}} * {{audio|en|en-us-condom.ogg|Audio (US)}} ===Noun=== {{en-noun}} # A flexib..."
wikitext
text/x-wiki
{{also|Condom}}
==English==
{{wikipedia}}
[[File:Kondom.jpg|200px|thumb|right|A rolled-up '''condom'''.]]
===Alternative forms===
* {{l|en|condum}}
===Etymology===
{{unk|en}}. Many speculations exist. Possibly derived from {{cog|it|guantone}}, from {{m|it|guanto||a glove}}
===Pronunciation===
* {{a|UK}} {{IPA|en|/ˈkɒn.dɒm/|/ˈkɒn.dəm/}}
* {{a|US}} {{IPA|en|/ˈkɑn.dəm/|/ˈkʌn.dəm/}}
* {{audio|en|en-us-condom.ogg|Audio (US)}}
===Noun===
{{en-noun}}
# A flexible sleeve made of [[latex]] or other [[impermeable]] material such as sheepskin, worn over an erect [[penis]] during sexual intercourse as a [[contraceptive]] or as a way to prevent the spread of [[STD]]s.
#: {{syn|en|Thesaurus:condom}}
#: {{ux|en|buy a pack of '''condoms'''}}
#: {{ux|en|flavoured '''condom'''}}
#: {{ux|en|ribbed '''condoms'''}}
====Synonyms====
{{top2}}
* {{l|en|dinger}} {{qualifier|Australian slang}}
* {{l|en|franger}} {{qualifier|Australian slang}}
* {{l|en|French letter}} {{qualifier|UK}}
* {{l|en|johnny}} {{qualifier|UK slang}}
{{mid2}}
* {{l|en|rubber}} {{qualifier|US slang}}
* {{l|en|raincoat}} {{qualifier|slang}}
* {{l|en|protection}} {{qualifier|euphemism}}
* {{l|en|jimmy hat}} {{qualifier|slang}}
* {{l|en|condie}} {{qualifier|slang}}
{{bottom}}
====Derived terms====
{{der3|en|condomed|condomize|condomless|condomlike|female condom}}
====Descendants====
* {{desc|fi|kondomi|bor=1}}
* {{desc|id|kondom|bor=1}}
* {{desc|ja|-|bor=1}} {{ja-r|コンドーム}}
* {{desc|ko|콘돔|bor=1}}
* {{desc|ms|kondom|bor=1}}
* {{desc|sw|kondomu|bor=1}}
====Translations====
{{trans-top|flexible sleeve worn on the penis}}
* Afrikaans: {{t+|af|kondoom}}
* Albanian: {{t|sq|prezervativ|m}}
* Arabic: {{t|ar|عَازِل ذَكَرِيّ|m}}, {{t|ar|وَاقٍ ذَكَرِيّ|m}}, {{t|ar|كُونْدُوم|m}}, {{t|ar|كَانْدُوم|m}} {{qualifier|colloquial|dialectal}}, {{t|ar|عَازِل طِبِّيّ|m}}
*: Egyptian Arabic: {{t|arz|كوندوم|m|tr=kondom}}, {{t|arz|كاندوم|m|tr=kandom}}
*: Moroccan Arabic: {{t|ary|جلدة|f|tr=jalda}}, {{t|ary|واقي|m|tr=wāqi}}
* Armenian: {{t+|hy|պահպանակ}}, {{t|hy|գանդոն}} {{qualifier|vulgar}}
* Asturian: {{t|ast|condón|m}}, {{t|ast|preservativu|m}}
* Azerbaijani: {{t|az|prezervativ}}, {{t|az|kondom}}, {{t|az|qoruyucu}}
* Basque: {{t|eu|kondoi}}, {{t|eu|preserbatibo}}
* Belarusian: {{t|be|прэзерваты́ў|m}}, {{t|be|кандо́м|m}}, {{t|be|начэ́пнік|m}}
* Bengali: {{t|bn|কন্ডম}}
* Breton: {{t|br|stevell|f}}, {{t+|br|tog|m}}
* Bulgarian: {{t+|bg|кондо́м|m}}, {{t+|bg|презервати́в|m}}
* Burmese: {{t|my|ကွန်ဒုံး}}
* Catalan: {{t+|ca|preservatiu|m}}, {{t+|ca|condó|m}}, {{t+|ca|condom|m}}
* Chinese:
*: Cantonese: {{t|yue|避孕套|tr=bei6 jan6 tou3}}, {{t|yue|安全套|tr=on1 cyun4 tou3}}, {{t|yue|如意套|tr=jyu4 ji3 tou3}} {{qualifier|Singapore, Malaysia}}, {{t|yue|套|tr=tou3}} {{qualifier|colloquial}}
*: Mandarin: {{t+|cmn|避孕套|tr=bìyùntào}}, {{t+|cmn|安全套|tr=ānquántào}}, {{t+|cmn|保險套}}, {{t+|cmn|保险套|tr=bǎoxiǎntào}}, {{t+|cmn|衛生套}}, {{t+|cmn|卫生套|tr=wèishēngtào}}, {{t+|cmn|陰莖套}}, {{t+|cmn|阴茎套|tr=yīnjīngtào}}, {{t|cmn|如意套|tr=rúyìtào}} {{qualifier|Singapore & Malaysia}}, {{t+|cmn|套兒}}, {{t+|cmn|套儿|tr=tàor}} {{qualifier|colloquial}}, {{t+|cmn|套套|tr=tàotao}} {{qualifier|colloquial}}
*: Min Nan: {{t|nan|保險套}}, {{t|nan|保险套|tr=pó-hiám-thò}}, {{t|nan|sak-khù}}, {{t|nan|sak-khuh}}
* Cornish: {{t|kw|kondom|m}}
* Czech: {{t+|cs|kondom|m}}, {{t|cs|prezervativ|m}}
* Danish: {{t+|da|kondom}}, {{t|da|præservativ}}
* Dutch: {{t+|nl|condoom|m}}, {{t|nl|capotje|n}}, {{t+|nl|regenjasje|n}} {{qualifier|jocular}}
* Elfdalian: {{t|ovd|tjytågummi|n}}
* Esperanto: {{t|eo|kondomo}}, {{t|eo|preventilo}}, {{t|eo|penisingo}}
* Estonian: {{t+|et|kondoom}}, {{t|et|preservatiiv}}, {{t|et|kumm}} {{qualifier|slang}}, {{t|et|kandoss}} {{qualifier|slang}}
* Faroese: {{t|fo|hít|f}}
* Finnish: {{t+|fi|kondomi}}, {{t+|fi|kortsu}} {{qualifier|colloquial}}, {{t+|fi|kumi}} {{qualifier|colloquial}}, {{t+|fi|spärdäri}} {{qualifier|slang}}
* French: {{t+|fr|préservatif|m}}, {{t+|fr|capote anglaise|f}}, {{t+|fr|capote|f}} {{qualifier|informal}}, {{t+|fr|condom|m}} {{qualifier|Quebec}}
* Galician: {{t+|gl|preservativo|m}}, {{t+|gl|condón|m}} {{qualifier|colloquial}}, {{t|gl|profiláctico|m}}
* Georgian: {{t|ka|პრეზერვატივი}}, {{t|ka|განდონი}} {{qualifier|vulgar}}
* German: {{t+|de|Präservativ|n}}, {{t+|de|Kondom|n}}, {{t+|de|Präser|m}}, {{t+|de|Pariser|m}}, {{t+|de|Gummi|n}} {{qualifier|colloquial}}, {{t|de|Fuffzicher|m}} {{qualifier|East German|colloquial}}; {{t|de|Verhüterli|n}} {{qualifier|Switzerland|colloquial}}, {{t|de|Ficktüte|f}} {{qualifier|vulgar}}, {{t|de|Nahkampfsocke|f}} {{qualifier|slang}}, {{t+|de|Überzieher|m}}
* Greek: {{t+|el|προφυλακτικό|n}}
* Greenlandic: {{t|kl|kondomi}}, {{t|kl|usuup-puua}}
* Gujarati: {{t|gu|નિરોધ|m}}
* Hebrew: {{t+|he|קוֹנְדּוֹם|m|tr=kondóm}}
* Hindi: {{t+|hi|निरोध|m}}, {{t+|hi|कंडोम|?}}
* Hungarian: {{t+|hu|óvszer}}, {{t+|hu|kondom}}, {{t|hu|koton}} {{qualifier|colloquial}}, {{t+|hu|gumi}} {{qualifier|colloquial}}
* Icelandic: {{t+|is|smokkur|m}}
* Indonesian: {{t+|id|kondom}}
* Interlingua: {{t|ia|preservativo}}, {{t|ia|condom}}
* Irish: {{t|ga|coiscín|m}}
{{trans-mid}}
* Italian: {{t+|it|preservativo|m}}, {{t+|it|profilattico|m}}, {{t+|it|condom|m}}
* Japanese: {{t+|ja|コンドーム|tr=kondōmu}}
* Kalmyk: {{t|xal|белгвч}}
* Kannada: {{t|kn|ಕಾಂಡಮ್}}
* Kashmiri: {{t|ks|कंडोम}}
* Kashubian: {{t|csb|prezerwatiwa|f}}
* Kazakh: {{t|kk|үрпекқап}}, {{t|kk|мүшеқап}}
* Khmer: {{t|km|ស្រោមក្ត|tr=sraom kdɑɑ}}, {{t|km|អាវភ្លៀង|tr=aav pliəng}}
* Korean: {{t+|ko|콘돔}}
* Kyrgyz: {{t|ky|презерватив}}
* Lao: {{t|lo|ຖົງຢາງ}}
* Latvian: {{t|lv|prezervatīvs|m}}
* Lithuanian: {{t|lt|prezervatyvas|m}}
* Macedonian: {{t|mk|кондо́м|m}}, {{t|mk|презервати́в|m}}, {{t|mk|курто́н|m}} {{qualifier|vulgar}}, {{t|mk|накурник|m}}
* Malay: {{t+|ms|kondom}}
* Malayalam: {{t+|ml|ഉറ}}, {{t|ml|ഗർഭനിരോധന ഉറ}}
* Maltese: {{t|mt|kondo}}
* Maori: {{t|mi|pūkoro ure}}
* Marathi: {{t|mr|निरोध}}, {{t|mr|कॉन्डोम}}
* Mongolian: {{t+|mn|бэлгэвч}}
* Navajo: {{t|nv|akááʼ ałtsoozígíí}}
* Norman: {{t|nrf|capote|f}}
* Northern Sami: {{t|se|kondoma}}, {{t|se|gumme}}
* Norwegian: {{t|no|kondom|m|n}}, {{t|no|gummi|m|n}} {{qualifier|slang}}
* Occitan: {{t|oc|preservatiu|m}}, {{t|oc|condòm|m}}
* Ojibwe: {{t|oj|biindaʼoojigan}}
* Persian: {{t+|fa|کاپوت|tr=kâput}}, {{t+|fa|کاندوم|tr=kândom}}
* Polish: {{t+|pl|prezerwatywa|f}}, {{t+|pl|kondom|m}} {{qualifier|outdated}}
* Portuguese: {{t+|pt|preservativo|m}}, {{t+|pt|camisa-de-vênus|f}}, {{t+|pt|camisinha|f}}, {{t+|pt|capa|f}} (colloquial), {{t+|pt|jeito|m}}
* Punjabi: {{t|pa|ਨਿਰੋਧ|m}}
* Romanian: {{t+|ro|prezervativ|n}}
* Romansch: {{t|rm|condom|m}}, {{t|rm|preservativ|m}}
* Russian: {{t+|ru|презервати́в|m}}, {{t+|ru|кондо́м|m}} {{qualifier|rare}}, {{t+|ru|гондо́н|m}} {{qualifier|vulgar}}, {{t+|ru|резинка|f}} {{qualifier|colloquial}}
* Serbo-Croatian:
*: Cyrillic: {{t|sh|ко̀ндо̄м|m}}, {{t|sh|презерва̀тӣв|m}}, {{t|sh|го̀лдӯн|m}} {{qualifier|colloquial}}
*: Roman: {{t+|sh|kòndōm|m}}, {{t+|sh|prezervàtīv|m}}, {{t|sh|gòldūn|m}} {{qualifier|colloquial}}
* Sicilian: {{t|scn|prisirvativu|m}}
* Slovak: {{t|sk|prezervatív|m}}, {{t|sk|kondóm|m}}
* Slovene: {{t+|sl|kondọ̑m|m}}, {{t|sl|prezervativ|m}}
* Sorbian:
*: Upper Sorbian: {{t|hsb|kondom|m}}, {{t|hsb|prezerwatiw|m}}
* Spanish: {{t+|es|preservativo|m}}, {{t+|es|condón|m}}, {{t+|es|profiláctico|f}}, {{t+|es|goma|f}}, {{t+|es|forro}} {{qualifier|Argentina}}
* Swahili: {{t+|sw|kondomu|9/10}}
* Swedish: {{t+|sv|kondom|c}}
* Tagalog: {{t|tl|kondom}}
* Tajik: {{t|tg|презерватив}}
* Telugu: {{t|te|కండోం}}, {{t+|te|తొడుగు}}, {{t|te|నిరోధ్}}
* Thai: {{t+|th|ถุงยางอนามัย}}, {{t+|th|ถุงยาง}}
* Tibetan: {{t|bo|སྲུང་ཤུབས}}
* Turkish: {{t+|tr|prezervatif}}, {{t+|tr|kondom}}
* Turkmen: {{t|tk|prezerwatiw}}
* Ukrainian: {{t|uk|презервати́в|m}}, {{t|uk|кондо́м|m}}
* Urdu: {{t|ur|کنڈوم|?|tr=kaṇḍom}}
* Uzbek: {{t|uz|prezervativ}}
* Venetian: {{t+|vec|goldon|m}}
* Vietnamese: {{t+|vi|bao cao su}}, {{t|vi|bao dương vật}}, {{t|vi|túi cao su}}, {{t+|vi|áo mưa}}
* Volapük: {{t|vo|tagrodaslivil}}
* Walloon: {{t+|wa|capote inglesse|f}}, {{t+|wa|capote|f}}, {{t|wa|cabounete|f}}
* Welsh: {{t+|cy|condom|m}}, {{t|cy|sach ddyrnu|f}}
* Yiddish: {{t|yi|קאַנדאַם|m}}
* Zhuang: {{t|za|dauqancienz}}, {{t|za|biyindau}}
* Zulu: {{t-needed|zu}}
{{trans-bottom}}
====See also====
* {{pedia}}
===References===
* {{R:BBS}}
===Anagrams===
* {{anagrams|en|a=cdmnoo|McOndo|mod con}}
[[Category:en:Birth control]]
----
==French==
===Pronunciation===
* {{fr-IPA}}
===Noun===
{{fr-noun|m}}
# {{lb|fr|Quebec}} {{l|en|condom}}
====Derived terms====
* {{desc|tr|kondom}}
{{C|fr|Birth control}}
----
==Italian==
===Pronunciation===
{{it-pr|còndom}}
===Noun===
{{it-noun|m|#}}
# [[condom#English|condom]]
#: {{syn|it|preservativo|profilattico}}
{{c|it|Birth control}}
swnvi1m9xo3jh948gx1goka0uydcrbg
13327
13326
2022-08-03T08:08:13Z
Asinis632
1829
wikitext
text/x-wiki
{{also|Condom}}
{{-en-}}
{{wikipedia}}
[[File:Kondom.jpg|200px|thumb|right|A rolled-up '''condom'''.]]
===Alternative forms===
* {{l|en|condum}}
===Etymology===
{{unk|en}}. Many speculations exist. Possibly derived from {{cog|it|guantone}}, from {{m|it|guanto||a glove}}
===Pronunciation===
* {{a|UK}} {{IPA|en|/ˈkɒn.dɒm/|/ˈkɒn.dəm/}}
* {{a|US}} {{IPA|en|/ˈkɑn.dəm/|/ˈkʌn.dəm/}}
* {{audio|en|en-us-condom.ogg|Audio (US)}}
===Noun===
{{en-noun}}
# A flexible sleeve made of [[latex]] or other [[impermeable]] material such as sheepskin, worn over an erect [[penis]] during sexual intercourse as a [[contraceptive]] or as a way to prevent the spread of [[STD]]s.
#: {{syn|en|Thesaurus:condom}}
#: {{ux|en|buy a pack of '''condoms'''}}
#: {{ux|en|flavoured '''condom'''}}
#: {{ux|en|ribbed '''condoms'''}}
====Synonyms====
{{top2}}
* {{l|en|dinger}} {{qualifier|Australian slang}}
* {{l|en|franger}} {{qualifier|Australian slang}}
* {{l|en|French letter}} {{qualifier|UK}}
* {{l|en|johnny}} {{qualifier|UK slang}}
{{mid2}}
* {{l|en|rubber}} {{qualifier|US slang}}
* {{l|en|raincoat}} {{qualifier|slang}}
* {{l|en|protection}} {{qualifier|euphemism}}
* {{l|en|jimmy hat}} {{qualifier|slang}}
* {{l|en|condie}} {{qualifier|slang}}
{{bottom}}
====Derived terms====
{{der3|en|condomed|condomize|condomless|condomlike|female condom}}
====Descendants====
* {{desc|fi|kondomi|bor=1}}
* {{desc|id|kondom|bor=1}}
* {{desc|ja|-|bor=1}} {{ja-r|コンドーム}}
* {{desc|ko|콘돔|bor=1}}
* {{desc|ms|kondom|bor=1}}
* {{desc|sw|kondomu|bor=1}}
====Translations====
{{trans-top|flexible sleeve worn on the penis}}
* Afrikaans: {{t+|af|kondoom}}
* Albanian: {{t|sq|prezervativ|m}}
* Arabic: {{t|ar|عَازِل ذَكَرِيّ|m}}, {{t|ar|وَاقٍ ذَكَرِيّ|m}}, {{t|ar|كُونْدُوم|m}}, {{t|ar|كَانْدُوم|m}} {{qualifier|colloquial|dialectal}}, {{t|ar|عَازِل طِبِّيّ|m}}
*: Egyptian Arabic: {{t|arz|كوندوم|m|tr=kondom}}, {{t|arz|كاندوم|m|tr=kandom}}
*: Moroccan Arabic: {{t|ary|جلدة|f|tr=jalda}}, {{t|ary|واقي|m|tr=wāqi}}
* Armenian: {{t+|hy|պահպանակ}}, {{t|hy|գանդոն}} {{qualifier|vulgar}}
* Asturian: {{t|ast|condón|m}}, {{t|ast|preservativu|m}}
* Azerbaijani: {{t|az|prezervativ}}, {{t|az|kondom}}, {{t|az|qoruyucu}}
* Basque: {{t|eu|kondoi}}, {{t|eu|preserbatibo}}
* Belarusian: {{t|be|прэзерваты́ў|m}}, {{t|be|кандо́м|m}}, {{t|be|начэ́пнік|m}}
* Bengali: {{t|bn|কন্ডম}}
* Breton: {{t|br|stevell|f}}, {{t+|br|tog|m}}
* Bulgarian: {{t+|bg|кондо́м|m}}, {{t+|bg|презервати́в|m}}
* Burmese: {{t|my|ကွန်ဒုံး}}
* Catalan: {{t+|ca|preservatiu|m}}, {{t+|ca|condó|m}}, {{t+|ca|condom|m}}
* Chinese:
*: Cantonese: {{t|yue|避孕套|tr=bei6 jan6 tou3}}, {{t|yue|安全套|tr=on1 cyun4 tou3}}, {{t|yue|如意套|tr=jyu4 ji3 tou3}} {{qualifier|Singapore, Malaysia}}, {{t|yue|套|tr=tou3}} {{qualifier|colloquial}}
*: Mandarin: {{t+|cmn|避孕套|tr=bìyùntào}}, {{t+|cmn|安全套|tr=ānquántào}}, {{t+|cmn|保險套}}, {{t+|cmn|保险套|tr=bǎoxiǎntào}}, {{t+|cmn|衛生套}}, {{t+|cmn|卫生套|tr=wèishēngtào}}, {{t+|cmn|陰莖套}}, {{t+|cmn|阴茎套|tr=yīnjīngtào}}, {{t|cmn|如意套|tr=rúyìtào}} {{qualifier|Singapore & Malaysia}}, {{t+|cmn|套兒}}, {{t+|cmn|套儿|tr=tàor}} {{qualifier|colloquial}}, {{t+|cmn|套套|tr=tàotao}} {{qualifier|colloquial}}
*: Min Nan: {{t|nan|保險套}}, {{t|nan|保险套|tr=pó-hiám-thò}}, {{t|nan|sak-khù}}, {{t|nan|sak-khuh}}
* Cornish: {{t|kw|kondom|m}}
* Czech: {{t+|cs|kondom|m}}, {{t|cs|prezervativ|m}}
* Danish: {{t+|da|kondom}}, {{t|da|præservativ}}
* Dutch: {{t+|nl|condoom|m}}, {{t|nl|capotje|n}}, {{t+|nl|regenjasje|n}} {{qualifier|jocular}}
* Elfdalian: {{t|ovd|tjytågummi|n}}
* Esperanto: {{t|eo|kondomo}}, {{t|eo|preventilo}}, {{t|eo|penisingo}}
* Estonian: {{t+|et|kondoom}}, {{t|et|preservatiiv}}, {{t|et|kumm}} {{qualifier|slang}}, {{t|et|kandoss}} {{qualifier|slang}}
* Faroese: {{t|fo|hít|f}}
* Finnish: {{t+|fi|kondomi}}, {{t+|fi|kortsu}} {{qualifier|colloquial}}, {{t+|fi|kumi}} {{qualifier|colloquial}}, {{t+|fi|spärdäri}} {{qualifier|slang}}
* French: {{t+|fr|préservatif|m}}, {{t+|fr|capote anglaise|f}}, {{t+|fr|capote|f}} {{qualifier|informal}}, {{t+|fr|condom|m}} {{qualifier|Quebec}}
* Galician: {{t+|gl|preservativo|m}}, {{t+|gl|condón|m}} {{qualifier|colloquial}}, {{t|gl|profiláctico|m}}
* Georgian: {{t|ka|პრეზერვატივი}}, {{t|ka|განდონი}} {{qualifier|vulgar}}
* German: {{t+|de|Präservativ|n}}, {{t+|de|Kondom|n}}, {{t+|de|Präser|m}}, {{t+|de|Pariser|m}}, {{t+|de|Gummi|n}} {{qualifier|colloquial}}, {{t|de|Fuffzicher|m}} {{qualifier|East German|colloquial}}; {{t|de|Verhüterli|n}} {{qualifier|Switzerland|colloquial}}, {{t|de|Ficktüte|f}} {{qualifier|vulgar}}, {{t|de|Nahkampfsocke|f}} {{qualifier|slang}}, {{t+|de|Überzieher|m}}
* Greek: {{t+|el|προφυλακτικό|n}}
* Greenlandic: {{t|kl|kondomi}}, {{t|kl|usuup-puua}}
* Gujarati: {{t|gu|નિરોધ|m}}
* Hebrew: {{t+|he|קוֹנְדּוֹם|m|tr=kondóm}}
* Hindi: {{t+|hi|निरोध|m}}, {{t+|hi|कंडोम|?}}
* Hungarian: {{t+|hu|óvszer}}, {{t+|hu|kondom}}, {{t|hu|koton}} {{qualifier|colloquial}}, {{t+|hu|gumi}} {{qualifier|colloquial}}
* Icelandic: {{t+|is|smokkur|m}}
* Indonesian: {{t+|id|kondom}}
* Interlingua: {{t|ia|preservativo}}, {{t|ia|condom}}
* Irish: {{t|ga|coiscín|m}}
{{trans-mid}}
* Italian: {{t+|it|preservativo|m}}, {{t+|it|profilattico|m}}, {{t+|it|condom|m}}
* Japanese: {{t+|ja|コンドーム|tr=kondōmu}}
* Kalmyk: {{t|xal|белгвч}}
* Kannada: {{t|kn|ಕಾಂಡಮ್}}
* Kashmiri: {{t|ks|कंडोम}}
* Kashubian: {{t|csb|prezerwatiwa|f}}
* Kazakh: {{t|kk|үрпекқап}}, {{t|kk|мүшеқап}}
* Khmer: {{t|km|ស្រោមក្ត|tr=sraom kdɑɑ}}, {{t|km|អាវភ្លៀង|tr=aav pliəng}}
* Korean: {{t+|ko|콘돔}}
* Kyrgyz: {{t|ky|презерватив}}
* Lao: {{t|lo|ຖົງຢາງ}}
* Latvian: {{t|lv|prezervatīvs|m}}
* Lithuanian: {{t|lt|prezervatyvas|m}}
* Macedonian: {{t|mk|кондо́м|m}}, {{t|mk|презервати́в|m}}, {{t|mk|курто́н|m}} {{qualifier|vulgar}}, {{t|mk|накурник|m}}
* Malay: {{t+|ms|kondom}}
* Malayalam: {{t+|ml|ഉറ}}, {{t|ml|ഗർഭനിരോധന ഉറ}}
* Maltese: {{t|mt|kondo}}
* Maori: {{t|mi|pūkoro ure}}
* Marathi: {{t|mr|निरोध}}, {{t|mr|कॉन्डोम}}
* Mongolian: {{t+|mn|бэлгэвч}}
* Navajo: {{t|nv|akááʼ ałtsoozígíí}}
* Norman: {{t|nrf|capote|f}}
* Northern Sami: {{t|se|kondoma}}, {{t|se|gumme}}
* Norwegian: {{t|no|kondom|m|n}}, {{t|no|gummi|m|n}} {{qualifier|slang}}
* Occitan: {{t|oc|preservatiu|m}}, {{t|oc|condòm|m}}
* Ojibwe: {{t|oj|biindaʼoojigan}}
* Persian: {{t+|fa|کاپوت|tr=kâput}}, {{t+|fa|کاندوم|tr=kândom}}
* Polish: {{t+|pl|prezerwatywa|f}}, {{t+|pl|kondom|m}} {{qualifier|outdated}}
* Portuguese: {{t+|pt|preservativo|m}}, {{t+|pt|camisa-de-vênus|f}}, {{t+|pt|camisinha|f}}, {{t+|pt|capa|f}} (colloquial), {{t+|pt|jeito|m}}
* Punjabi: {{t|pa|ਨਿਰੋਧ|m}}
* Romanian: {{t+|ro|prezervativ|n}}
* Romansch: {{t|rm|condom|m}}, {{t|rm|preservativ|m}}
* Russian: {{t+|ru|презервати́в|m}}, {{t+|ru|кондо́м|m}} {{qualifier|rare}}, {{t+|ru|гондо́н|m}} {{qualifier|vulgar}}, {{t+|ru|резинка|f}} {{qualifier|colloquial}}
* Serbo-Croatian:
*: Cyrillic: {{t|sh|ко̀ндо̄м|m}}, {{t|sh|презерва̀тӣв|m}}, {{t|sh|го̀лдӯн|m}} {{qualifier|colloquial}}
*: Roman: {{t+|sh|kòndōm|m}}, {{t+|sh|prezervàtīv|m}}, {{t|sh|gòldūn|m}} {{qualifier|colloquial}}
* Sicilian: {{t|scn|prisirvativu|m}}
* Slovak: {{t|sk|prezervatív|m}}, {{t|sk|kondóm|m}}
* Slovene: {{t+|sl|kondọ̑m|m}}, {{t|sl|prezervativ|m}}
* Sorbian:
*: Upper Sorbian: {{t|hsb|kondom|m}}, {{t|hsb|prezerwatiw|m}}
* Spanish: {{t+|es|preservativo|m}}, {{t+|es|condón|m}}, {{t+|es|profiláctico|f}}, {{t+|es|goma|f}}, {{t+|es|forro}} {{qualifier|Argentina}}
* Swahili: {{t+|sw|kondomu|9/10}}
* Swedish: {{t+|sv|kondom|c}}
* Tagalog: {{t|tl|kondom}}
* Tajik: {{t|tg|презерватив}}
* Telugu: {{t|te|కండోం}}, {{t+|te|తొడుగు}}, {{t|te|నిరోధ్}}
* Thai: {{t+|th|ถุงยางอนามัย}}, {{t+|th|ถุงยาง}}
* Tibetan: {{t|bo|སྲུང་ཤུབས}}
* Turkish: {{t+|tr|prezervatif}}, {{t+|tr|kondom}}
* Turkmen: {{t|tk|prezerwatiw}}
* Ukrainian: {{t|uk|презервати́в|m}}, {{t|uk|кондо́м|m}}
* Urdu: {{t|ur|کنڈوم|?|tr=kaṇḍom}}
* Uzbek: {{t|uz|prezervativ}}
* Venetian: {{t+|vec|goldon|m}}
* Vietnamese: {{t+|vi|bao cao su}}, {{t|vi|bao dương vật}}, {{t|vi|túi cao su}}, {{t+|vi|áo mưa}}
* Volapük: {{t|vo|tagrodaslivil}}
* Walloon: {{t+|wa|capote inglesse|f}}, {{t+|wa|capote|f}}, {{t|wa|cabounete|f}}
* Welsh: {{t+|cy|condom|m}}, {{t|cy|sach ddyrnu|f}}
* Yiddish: {{t|yi|קאַנדאַם|m}}
* Zhuang: {{t|za|dauqancienz}}, {{t|za|biyindau}}
* Zulu: {{t-needed|zu}}
{{trans-bottom}}
====See also====
* {{pedia}}
===References===
* {{R:BBS}}
===Anagrams===
* {{anagrams|en|a=cdmnoo|McOndo|mod con}}
[[Category:en:Birth control]]
----
{{-fr-}}
===Pronunciation===
* {{fr-IPA}}
===Noun===
{{fr-noun|m}}
# {{lb|fr|Quebec}} {{l|en|condom}}
====Derived terms====
* {{desc|tr|kondom}}
{{C|fr|Birth control}}
----
{{-it-}}
===Pronunciation===
{{it-pr|còndom}}
===Noun===
{{it-noun|m|#}}
# [[condom#English|condom]]
#: {{syn|it|preservativo|profilattico}}
{{c|it|Birth control}}
1lfcff2qbw7chp1ot27ram8zjbeu7py