text:
Module:number list

local m_links = require("Module:links") local m_str_utils = require("Module:string utilities")

local char = string.char local concat = table.concat local gsub = m_str_utils.gsub local insert = table.insert local list_to_set = require("Module:table").listToSet local sort = table.sort local u = m_str_utils.char local upper = string.upper

local export = {}

--[=[

Terminology:

Number = a bare number; a mathematical entity which has different form types (e.g. cardinal, ordinal) Form type = a category of the forms that represent a number; examples are cardinal, ordinal, distributive, fractional Form = a word or expression that represents a number in a given language Tag = an identifier attached to a form that allows different logical subtypes of forms from the same form type to be     identified; e.g. 'vuitanta-vuit' vs. 'huitanta-huit' to identify variants of Catalan cardinal number 88 for different dialectal standards; there can be multiple tags per form, e.g.	 'tair ar ddeg' for the Welsh number 13 where there are both decimal/vigesimal and masculine/feminine variants of this number Tag list = a list of tags in the order they are specified in the data, e.g. {"vigesimal", "feminine"} for the example above Combined tag = the string representation of a tag list, using ||| to separate individual tags ]=]

local default_form_types = { {key = "cardinal", display = "Cardinal"}, {key = "ordinal", display = "Ordinal"}, {key = "ordinal_abbr", display = "Ordinal abbreviation"}, {key = "adverbial", display = "Adverbial"}, {key = "multiplier", display = "Multiplier"}, {key = "distributive", display = "Distributive"}, {key = "collective", display = "Collective"}, {key = "fractional", display = "Fractional"}, }

-- Keys in a `numbers` entry that aren't form types. local non_form_types = { numeral = true, wplink = true, next = true, prev = true, next_outer = true, prev_outer = true, upper = true, lower = true, }

local function track(page) require("Module:debug/track")("number list/" .. page) return true end

--[=[ -- -- General set intersection local function set_intersection(sets) local intersection = {} for key, _ in pairs(sets[1]) do		intersection[key] = true end for i = 2, #sets do		local this_set = sets[i] for key, _ in pairs(intersection) do			if not this_set[key] then -- See https://stackoverflow.com/questions/6167555/how-can-i-safely-iterate-a-lua-table-while-keys-are-being-removed -- It is safe to modify or remove a key while iterating over the table. intersection[key] = nil end end end return intersection end ]=]

local function set_intersection(set1, set2) local intersection = {} for key, _ in pairs(set1) do		intersection[key] = true end for key, _ in pairs(intersection) do		if not set2[key] then -- See https://stackoverflow.com/questions/6167555/how-can-i-safely-iterate-a-lua-table-while-keys-are-being-removed -- It is safe to modify or remove a key while iterating over the table. intersection[key] = nil end end return intersection end

function export.get_data_module_name(langcode, must_exist) local module_name = "Module:number list/data/" .. langcode if must_exist and not mw.title.new(module_name).exists then error(("Data module %s for language code '%s' does not exist"):format(module_name, langcode)) end return module_name end

-- Format a number (either a Lua number or a string) in fixed point without any decimal point or scientific notation. -- `tostring` doesn't work because it converts large numbers such as 1000000000000000 to "1e+15". function export.format_fixed(number) if type(number) == "string" then return number else return ("%.0f"):format(number) end end

-- Parse a form with modifiers such as 'vuitanta-vuit' or 'سیزده' -- or 'سیزده' into its component parts. Return a form object, i.e. an object with fields -- `form` for the form, and `tr`, `tag`, `q`, `qq` or `link` for the modifiers. The `tag` field is a tag list -- (see above). function export.parse_form_and_modifiers(form_with_modifiers) local retval = {} local form form = form_with_modifiers while true do		local new_form, angle_bracketed = form:match("^(.-)(%b<>)$") if not new_form then break end local prefix, content = angle_bracketed:match "^<(%w+):(.+)>$" if not prefix then break end if prefix == "tag" then if retval.tag then insert(retval.tag, content) else retval.tag = {content} end elseif prefix == "q" or prefix == "qq" or prefix == "tr" or prefix == "link" then if retval[prefix] then error(("Duplicate modifier '%s' in data module form, already saw value '%s': %s"):format(prefix, retval[prefix], form_with_modifiers)) else retval[prefix] = content end else error(("Unrecognized modifier '%s' in data module form: %s"):format(prefix, form_with_modifiers)) end form = new_form end retval.form = form return retval end

-- Find the `numbers` object for a given number (which should be in string representation). function export.lookup_data(m_data, numstr) -- Don't try to convert very large numbers to Lua numbers because they may overflow. -- Powers of 10 >= 10^22 cannot be represented exactly as a Lua number. return m_data.numbers[numstr] or #numstr < 22 and m_data.numbers[tonumber(numstr)] or nil end

-- Return true if a < b, where either may be a Lua number or the string representation of a number. function export.numbers_less_than(a, b)	a, b = export.format_fixed(a), export.format_fixed(b) local alen = #a local blen = #b if alen < blen then return true end if alen > blen then return false end return a < b end

-- Return true if a > b, where either may be a Lua number or the string representation of a number. function export.numbers_greater_than(a, b)	return export.numbers_less_than(b, a) end

-- Given a number form, convert it to its independent (un-affixed) form. This only makes sense for certain languages -- where there is a difference between independent and affixed forms of numerals. Currently the only such language -- is Swahili, where e.g. the cardinal number form for 3 is affixed -tatu, independent tatu, and the ordinal -- number form is -a tatu, independent tatu. We rely on a set of Lua pattern substitutions to convert from -- affixed to independent form. -- -- FIXME: This needs major rethinking in a way that isn't specific to Swahili. local function maybe_unaffix(m_data, form) if not m_data.unaffix then return form end for _, entry in ipairs(m_data.unaffix) do		local from, to = unpack(entry) form = gsub(form, from, to) end return form end

-- Convert the given number form (taken from the data for `lang`, after parsing the form for modifiers and stripping -- the modifiers) to an entry name. The form may have links and/or accent/length marks that need to be stripped. local function form_to_entry_name(form, lang) return (lang:makeEntryName(m_links.remove_links(form))) end

-- Return true if the given number form object (taken from the data for `lang`, after parsing the form for modifiers) -- matches `pagename`. If there is a  modifier, we check against it. Otherwise, we check against the form -- itself. In this case, the form may have links and/or accent/length marks that need to be stripped, and we may need -- to convert the form to its independent (un-affixed) form, if there is a difference between independent and affixed -- forms (as in Swahili). local function form_equals_pagename(formobj, pagename, m_data, lang) if formobj.link == pagename then return true end local entry_name = form_to_entry_name(formobj.form, lang) return entry_name == pagename or maybe_unaffix(m_data, entry_name) == pagename end

-- Given the data for a language and a number (which should be in string representation), find the next and previous -- numbers to display (in string representation). local function get_next_and_prev_keys(m_data, numstr) local numdata = export.lookup_data(m_data, numstr) if not numdata then return nil, nil end local nextnum = numdata.next local prevnum = numdata.prev if not nextnum or not prevnum then -- Find the next/previous numbers by sorting all the keys and locating the number in question among them. local sorted_list = {} local index = 1 for key, _ in pairs(m_data.numbers) do			sorted_list[index] = key index = index + 1 end

sort(sorted_list, export.numbers_less_than)

-- We could binary search to save time, but given that we already sort, which is supra-linear, it won't -- matter to search linearly. for i, key in ipairs(sorted_list) do			if export.format_fixed(key) == numstr then nextnum = nextnum or sorted_list[i + 1] prevnum = prevnum or sorted_list[i - 1] break end end end

if nextnum then nextnum = export.format_fixed(nextnum) end if prevnum then prevnum = export.format_fixed(prevnum) end

return nextnum, prevnum end

-- Find the "description objects" (a two-element list {NUMBER, TYPE}, where NUMBER is either a Lua number or a string, -- depending on how it appears in the underlying data) that matches `pagename` and (if given) `matching_type`. -- Return a list of such objects. local function lookup_number_by_form(lang, m_data, pagename, matching_type) local retval = {} local function check_form(form, num, typ) local formobj = export.parse_form_and_modifiers(form) if form_equals_pagename(formobj, pagename, m_data, lang) and (not matching_type or typ == matching_type) then -- It's possible the same pagename occurs multiply for a given type and number, e.g. with different length -- or accent marks. The calling code is OK with multiple entries for a given number (which can also occur			-- with different types, e.g. the ordinal and fractional forms for a given number are the same), but will -- throw an error if different numbers are seen. insert(retval, {num, typ}) end end

for num, numdata in pairs(m_data.numbers) do		for numtype, forms in pairs(numdata) do			if non_form_types[numtype] then -- do nothing elseif type(forms) == "table" then for _, form in ipairs(forms) do					check_form(form, num, numtype) end else check_form(forms, num, numtype) end end end

return retval end

-- additional_types is an array of tables like form_types, -- but each table can contain the keys "before" or "after", which specify -- the numeral type that the form should appear before or after. -- The transformations are applied in order. local function add_form_types(form_types, additional_types) local types = require("Module:table").deepcopy(form_types) for _, type in ipairs(additional_types) do		if not (type.before or type.after) then insert(types, type) else if type.before and type.after then error("The form type '" .. type.key .. "' is specifying both before and after, which is not allowed") end

local index local anchor = type.before or type.after

for i, another_type in ipairs(types) do				if another_type.key == anchor then index = i					break end end

if index and type.after then index = index + 1 end

type = require("Module:table").shallowcopy(type) type.before, type.after = nil, nil if not index then mw.log("Number type "					.. (type.before or type.after)					.. " was not found.") insert(types, type) else insert(types, index, type) end end end return types end

-- Return all form types for the language in question, in order. function export.get_number_types(m_data) local form_types = default_form_types if m_data.additional_number_types then return add_form_types(form_types, m_data.additional_number_types) else return form_types end end

-- Convert a number type object (an object with `display` and `key` fields) to its displayed form. function export.display_number_type(number_type) if number_type.display then return number_type.display else return (number_type.key:gsub("^.", upper):gsub("_", " ")) end end

-- Group digits with a separator, such as a comma or a period. See Digit grouping. local function add_separator(numstr, separator, group, start) start = start or group if start >= #numstr then return numstr end

local parts = { numstr:sub(-start) } for i = start + 1, #numstr, group do		insert(parts, 1, numstr:sub(-(i + group - 1), -i)) end

return concat(parts, separator) end

function export.add_thousands_separator(numstr, separator) if #numstr < 4 then -- < 1000 return numstr end return add_separator(numstr, separator or ",", 3) end

local function add_Indic_separator(numstr, separator) return add_separator(numstr, separator, 2, 3) end

-- Convert a number (represented as a string) to non-Arabic form based on the specs in `numeral_config`. -- This is used, for example, to display the Hindu, Eastern Arabic or Roman form of a number along with the standard -- Arabic form. Most of the code below assumes that the non-Arabic numerals are decimal, and the digits map one-to-one -- with Arabic numerals. If this is not the case (e.g. for Roman numerals), a special module function is called to do -- the conversion. function export.generate_non_arabic_numeral(numeral_config, numstr) -- `numstr` is a number represented as a string. See comment near top of show_box. if numeral_config.module and numeral_config.func then return require("Module:" .. numeral_config.module)[numeral_config.func](numstr) end

local thousands_separator, Indic_separator, zero_codepoint = numeral_config.thousands_separator, numeral_config.Indic_separator, numeral_config.zero_codepoint

if not zero_codepoint then return nil end

if thousands_separator then numstr = export.add_thousands_separator(numstr, thousands_separator) elseif Indic_separator then numstr = add_Indic_separator(numstr, Indic_separator) end

return numstr:gsub("%d", function (digit)		return u(zero_codepoint + tonumber(digit))	end) end

-- Format a number (either a Lua number or a string) for display. Sufficiently small numbers are displayed in fixed -- point with thousands separators. Larger numbers are displayed in both fixed point and scientific notation using -- superscripts, and sufficiently large numbers are displayed only in scientific notation. function export.format_number_for_display(number) local MAX_NUM_DIGITS_FOR_FIXED_ONLY = 6 local MIN_NUM_DIGITS_FOR_SCIENTIFIC_ONLY = 13 local numstr = export.format_fixed(number) local fixed = export.add_thousands_separator(numstr) if #numstr <= MAX_NUM_DIGITS_FOR_FIXED_ONLY then return fixed end local kstr = numstr:match("^([0-9]*[1-9])0*$") if not kstr then error("Internal error: Unable to match number '" .. numstr .. "'") end local exponent = ("10%s"):format(#numstr - 1) local mantissa if kstr == "1" then mantissa = "" elseif #kstr == 1 then mantissa = kstr .. " × "	else mantissa = kstr:gsub("^([0-9])", "%1.") .. " × "	end local scientific = mantissa .. exponent if #numstr >= MIN_NUM_DIGITS_FOR_SCIENTIFIC_ONLY then return scientific else return fixed .. " (" .. scientific .. ")" end end

-- Map a list of tags to a single string that is equivalent. We need to do this because we can't easily put lists in the -- keys of tables. local function tag_list_to_combined_tag(tag_list) return concat(tag_list, "|||") end

-- Given a list of forms with attached inline modifiers (e.g. 'huitanta-huit' or -- 'tair ar ddeg'), parse the forms into form objects (the return value of -- parse_form_and_modifiers) and group by the tag. Three values are returned: -- `seen_forms`, `forms_by_tag`, `seen_tags` where: -- (1) `seen_forms` is the list of parsed form objects; -- (2) `forms_by_tag` is a table grouping the form objects by combined tag, where the key is the tag and the value is --     a list of the form objects seen with that tag (forms without tag are grouped under the empty-string tag); -- (3) `seen_tags` is a list of the combined tags encountered, in the order they were encountered; -- (4) `combined_tags_to_tag_lists` is a map from combined tags to the corresponding tag lists. function export.group_numeral_forms_by_tag(forms) local seen_forms = {} local forms_by_tag = {} local seen_tags = {} local combined_tags_to_tag_lists = {}

for _, form in ipairs(forms) do		local formobj = export.parse_form_and_modifiers(form) insert(seen_forms, formobj) local combined_tag = formobj.tag and tag_list_to_combined_tag(formobj.tag) or "" if not forms_by_tag[combined_tag] then insert(seen_tags, combined_tag) forms_by_tag[combined_tag] = {} combined_tags_to_tag_lists[combined_tag] = formobj.tag or {} end insert(forms_by_tag[combined_tag], formobj) end

return seen_forms, forms_by_tag, seen_tags, combined_tags_to_tag_lists end

-- Given a form object (as returned by parse_form_and_modifiers), format as appropriate for the current language. function export.format_formobj(formobj, m_data, lang) local left_q = formobj.q and require("Module:qualifier").format_qualifier(formobj.q) .. " " or "" local right_q = formobj.qq and " " .. require("Module:qualifier").format_qualifier(formobj.qq) or "" return left_q .. m_links.full_link{ lang = lang, term = maybe_unaffix(m_data, formobj.form), alt = formobj.form, tr = formobj.tr, } .. right_q end

-- Implementation of. function export.show_box(frame) local full_link = m_links.full_link

local params = { [1] = {required = true}, [2] = {},		["pagename"] = {}, ["type"] = {}, }

local parent_args = frame:getParent.args if parent_args.pagename then track("show-box-pagename") end local args = require("Module:parameters").process(parent_args, params, nil, "number list", "show_box")

local langcode = args[1] or "und" local lang = require("Module:languages").getByCode(langcode, 1)

-- Get the data from the data module. Some modules (e.g. currently Module:number list/data/ka) have to be -- loaded with require because the exported numbers table has a metatable. local module_name = export.get_data_module_name(langcode, "must exist") local m_data = require(module_name)

local pagename = args.pagename or (mw.title.getCurrentTitle.nsText == "Reconstruction" and "*" or "") .. mw.title.getCurrentTitle.subpageText -- Resolve any risky characters which makeEntryName will escape, so that any matches involving them work correctly. pagename = (lang:makeEntryName(pagename)) local cur_type = args.type

-- We represent all numbers as strings in this function to deal with the limited precision inherent in Lua numbers. -- These large numbers do occur, such as 100 trillion (རབ་བཀྲམ་ཆེན་པོ), 1 sextillion, etc. Lua represents all -- numbers as 64-bit floats, meaning that some numbers above 2^53 cannot be represented exactly. The first power of	-- 10 that cannot be represented exactly is 10^22 (ten sextillion in short scale, ten thousand trillion in long	-- scale), but the first power of ten whose neighboring numbers cannot be represented exactly is 10^16 (ten	-- quadrillion or ten thousand billion). Ideally we would use a big integer library of some kind, but unfortunately -- Wiktionary does not seem to have any such library installed. MediaWiki docs make mention of bcmath, but -- mw.bcmath.new throws an error. --	-- In module data, we allow numbers to be indexed as Lua numbers or as strings. See lookup_data above. local cur_num = args[2] or langcode == "und" and mw.title.getCurrentTitle.nsText == "Template" and "2" or nil

-- If a current number wasn't specified, find it by looking through the data for the current language and matching -- forms against the pagename. if not cur_num then local nums_and_types = lookup_number_by_form(lang, m_data, pagename, cur_type) if #nums_and_types == 0 then error("The current page name '" .. pagename .. "' does not match the spelling of any known number in " ..				module_name .. ". Check the data module or the spelling of the page.") end for _, num_and_type in ipairs(nums_and_types) do			local num = num_and_type[1] num = export.format_fixed(num) if cur_num and num ~= cur_num then local errparts = {} for _, num_and_type in ipairs(nums_and_types) do					local num, typ = unpack(num_and_type) insert(errparts, ("%s (%s)"):format(num, typ)) end error("The current page name '" .. pagename .. "' matches the spelling of multiple numbers in " ..					module_name .. ": " .. concat(errparts, ",") .. ". Please specify the number explicitly.") else cur_num = num end end end

cur_num = cur_num:gsub(",", "") -- remove thousands separators if not cur_num:find("^%d+$") then error("Extraneous characters in parameter 2: should be decimal number (integer): '" .. cur_num .. "'") end

-- Wrapper around `export.lookup_data` that may throw an error if the number can't be found (specifically if	-- param_for_error is given). local function lookup_data(numstr, param_for_error) local retval = export.lookup_data(m_data, numstr) if not retval and param_for_error then error(('The %s number "%s" specified in the "numbers" table entry for "%s" cannot be found in ' .. "%s; please fix the module."):format(param_for_error, numstr, cur_num, module_name)) end return retval end

local cur_data = lookup_data(cur_num) if not cur_data then error('The number "' .. cur_num .. '" is not found in the "numbers" table in ' .. module_name .. ".") end

local formatted_forms = {}

if cur_type and not cur_data[cur_type] then error("The numeral type " .. cur_type .. " for " .. cur_num .. " is not found in " .. module_name .. ".") end

-- See above for the definition of "combined tag" and "tag list". The combined tag is just the concatenation of the -- tag list with ||| between the tags. local cur_tag_list, cur_combined_tag

local form_types = export.get_number_types(m_data) -- LONG COMMENT EXPLAINING TAG HANDLING: --	-- For each form type (see `form_types` at top of file), group the entries for that form type by tag and figure out -- what the current form type and tag is, i.e. the form type and tag for the form matching the pagename. Tags are -- e.g. as in 'vuitanta-vuit' or 'huitanta-huit' for Catalan and allow different -- logical sets of numbers for the same form type to be identified. There can potentially be multiple tags per -- form, e.g. 'tair ar ddeg' for the Welsh number 13 where there are both decimal/ -- vigesimal and masculine/feminine variants of this number. --	-- We need to do two passes over all form types. In the first pass, for each form type we parse all the forms, -- group them by tag, and store the results in a per-form-type table. In the second pass, we then format all forms -- for all form types. The reason for doing two passes is because we need to know the current tag in order to	-- display a form type correctly (because we display the forms for the current tag before the forms for any other	-- tags), but we won't know the current tag until we have done a pass over all form types and forms of those form -- types in order to determine which one matches the pagename. --	-- We use the current tag in two ways: -- 1. When displaying all the forms for a given number, we group both by form type and tag, and display the forms --   for a given form type/tag combination on a single line. For a given form type, we display the forms for each --   tag in the order the tags were specified in the data, except that the forms for the current tag are placed --   before all others (so e.g. for Catalan, if the current tag is "Valencian", we list the Valencian form(s)	--    first even if the Central form(s) are listed first in the data file). -- 2. When displaying links to adjacent numbers in display_adjacent_number_links, if there aren't form(s) for the --   current type, we don't display any links; but if there are mutiple tagged forms for the current type, we only --   display links for the forms for the current tag if there are any such forms, otherwise we display links for --   all forms of all tags. --	-- In the presence of multiple tags, things get a bit more complicated: -- 1. When displaying links to adjacent numbers, say the current tag is vigesimal+feminine, we want to prefer an	--   adjacent-number form that's both vigesimal and feminine, but otherwise we prefer one that's vigesimal or --   feminine over one that's neither. Say the current tag is just vigesimal; we of course prefer an	--   adjacent-number form that's just vigesimal, but otherwise we prefer a tag that's vigesimal + either masculine --   or feminine to a tag that's not vigesimal. So it seems we want the form(s) that have the maximum intersection --   of tags, and if there are two different tag lists with the same number of intersecting tags (e.g. the current	--    tag is vigesimal+feminine and we have a choice of decimal+feminine or just vigesimal), we should prefer the --   form that has fewer non-matching tags, hence we prefer the just-vigesimal form. -- 2. By the same logic, when displaying all the forms for a given number, we should order by the size of the --   intersection of the tag list in question with the current tag list, then inversely by the size of the tag list --   (so we prefer tag lists with fewer non-matching tags), then by the order of the tag lists in the data file.

local forms_by_tag_per_form_type = {} local seen_tags_per_form_type = {} local combined_tags_to_tag_lists_per_form_type = {}

for _, form_type in ipairs(form_types) do		local numeral = cur_data[form_type.key] if numeral then local numerals if type(numeral) == "string" then numerals = {numeral} elseif type(numeral) == "table" then numerals = numeral end

local seen_forms, forms_by_tag, seen_tags, combined_tags_to_tag_lists = export.group_numeral_forms_by_tag(numerals) forms_by_tag_per_form_type[form_type] = forms_by_tag seen_tags_per_form_type[form_type] = seen_tags combined_tags_to_tag_lists_per_form_type[form_type] = combined_tags_to_tag_lists for _, formobj in ipairs(seen_forms) do				if not cur_tag_list and form_equals_pagename(formobj, pagename, m_data, lang) then cur_tag_list = formobj.tag or {} cur_combined_tag = tag_list_to_combined_tag(cur_tag_list) cur_type = cur_type or form_type.key end end end end

-- Error if we couldn't locate the pagename among the forms for the current number. This only happens if the -- number if given explicitly in 2=.

if not cur_type and mw.title.getCurrentTitle.nsText ~= "Template" then error("The current page name '" .. pagename .. "' does not match any of the numbers listed in " ..			module_name .. " for " .. cur_num .. ". Check the data module or the spelling of the page.") end

-- Now, format all the forms for all form types for the current number.

local function sort_combined_tags(combined_tags, seen_tags, combined_tags_to_tag_lists) -- cur_tag_list should normally never be nil, but can be so in template space local cur_tag_set = list_to_set(cur_tag_list or {}) local tags_to_order = {} for i, tag in ipairs(seen_tags) do			tags_to_order[tag] = i		end local function compare_tags(tag1, tag2) -- See long comment above. -- First compare by number of tags in common with the current tag list. local tag_list1 = combined_tags_to_tag_lists[tag1] local tag_list2 = combined_tags_to_tag_lists[tag2] local common1 = set_intersection(cur_tag_set, list_to_set(tag_list1)) local common2 = set_intersection(cur_tag_set, list_to_set(tag_list2)) if #common1 ~= #common2 then return #common1 < #common2 end -- Then compare inversely by number of tags not in common with the current tag list (which is equivalent to			-- comparing by total number of tags, since tags should be distinct). if #tag_list1 ~= #tag_list2 then return #tag_list1 > #tag_list2 end -- Finally, compare by the original ordering in the number data, but if a tag is the same as the current -- tag, put it first, and if somehow we encounter a tag that's not in the original ordering, put it last. local index1 = tag1 == cur_combined_tag and 0 or tags_to_order[tag1] or #seen_tags + 1 local index2 = tag2 == cur_combined_tag and 0 or tags_to_order[tag2] or #seen_tags + 1 return index1 < index2 end sort(combined_tags, compare_tags) end

for _, form_type in ipairs(form_types) do		local forms_by_tag = forms_by_tag_per_form_type[form_type] local seen_tags = seen_tags_per_form_type[form_type] local combined_tags_to_tag_lists = combined_tags_to_tag_lists_per_form_type[form_type] if forms_by_tag then local function insert_forms_by_tag(tag) local formatted_tag_forms = {}

local pagename_among_forms = false for _, formobj in ipairs(forms_by_tag[tag]) do					insert(formatted_tag_forms, export.format_formobj(formobj, m_data, lang)) if form_equals_pagename(formobj, pagename, m_data, lang) then pagename_among_forms = true end end

if tag ~= "" then local tag_list = combined_tags_to_tag_lists[tag] tag = concat(tag_list, " / ") end local displayed_number_type = export.display_number_type(form_type) .. (tag == "" and "" or (" (%s)"):format(tag)) if pagename_among_forms then displayed_number_type = "'''" .. displayed_number_type .. "'''"				end

insert(formatted_forms, "    " .. displayed_number_type .. ": " ..					concat(formatted_tag_forms, ", ")) end

sort_combined_tags(seen_tags, seen_tags, combined_tags_to_tag_lists) for _, tag in ipairs(seen_tags) do				insert_forms_by_tag(tag) end end end

-- Current number in header local cur_display = export.format_number_for_display(cur_num)

local numeral if m_data.numeral_config then numeral = export.generate_non_arabic_numeral(m_data.numeral_config, cur_num) elseif cur_data["numeral"] then numeral = export.format_fixed(cur_data["numeral"]) end

if numeral then cur_display = full_link{lang = lang, alt = numeral, tr = "-"} .. " <span style=\"font-size: smaller;\">" .. cur_display .. " "	end

- Determine next/prev, next/prev outer, and upper/lower numbers. --

-- We have three series of numbers to determine: --	-- 1. The next/previous numbers, which are always those in the sorted series of available numbers unless overridden --   by `next`/`prev` specs in an individual number. -- 2. The next/previous outer numbers, which are displayed to the outside of the next/previous numbers. These can --   be overridden for an individual number using `next_outer`/`prev_outer`. Otherwise, we try according to an --   algorithm described below in the code for computing the outer numbers. -- 3. The upper/lower numbers, which are displayed above or below the central number box. These can be overridden --   for an individual number using `upper`/`lower`. These are always 10x greater or less than the number in --   question, number not considering a number if it's the same as the next/previous number.

local next_num, prev_num = get_next_and_prev_keys(m_data, cur_num) local next_data = next_num and lookup_data(next_num, "next") local prev_data = prev_num and lookup_data(prev_num, "previous")

- Decompose number into mantissa (k) and exponent (m). --

local k, m	if cur_num == "0" then k = 0 m = 1 else local kstr, mstr = cur_num:match("^([0-9]*[1-9])(0*)$") if not kstr then error("Internal error: Unable to match number '" .. cur_num .. "'") elseif #kstr > 15 then -- This is because some numbers with 16 or more digits can't be represented exactly. error("Can't handle number with more than 15 digits before the trailing zeros: '" .. cur_num .. "'") end k = tonumber(kstr) m = #mstr end

-- Find the next greater power of 10 for cur_num, up to 10^6. `try` should look up the data for a power of 10 -- and return it if it's available and the number passes any checks, otherwise nil. local function make_greater_power_of_ten(power) return cur_num .. ("0"):rep(power) end

-- Find the next lesser power of 10 for cur_num, up to 10^6. `try` should look up the data for a power of 10 -- and return it if it's available and the number passes any checks, otherwise nil. local function make_lesser_power_of_ten(power) local desired_zeros = m - power if desired_zeros < 0 then return nil end return k .. ("0"):rep(desired_zeros) end

local next_outer_data, prev_outer_data local next_outer_num, prev_outer_num = cur_data.next_outer, cur_data.prev_outer

-- When trying to find then next/previous outer numbers, first, if the base-10 mantissa is not 1 or 0, we add 1 to -- or subtract 1 from the mantissa, keeping the same number of zeros. Hence, for 300, we try 400 for the next outer, -- 200 for the previous outer. For 900, we try 1000 for the next outer and 800 for the previous outer. If the -- mantissa is 1, the next outer is computed the same but for the previous outer we use 9 followed by one fewer -- zero. Hence, for 100 we try 200 for the next outer but 90 for the previous outer. If the mantissa is 0 (i.e. the	-- entire number is 0), we try 10 for the next outer, and have no previous outer. --	-- Next, if the number is an even power of 10, we try 10x, 1000x greater, 100x greater and 1,000,000x greater, in -- that sequence. Essentially, first we try the next power of 10; then we try the next short-scale number (billion,	-- trillion, etc. where large numbers follow a 10^3 sequence); then we try the next long-scale number (where large	-- numbers follow a 10^6 sequence); then we try the next Indic-scale number (where large numbers follow a 10^2	-- sequence: lakh, crore, arab, ...). We don't just try powers of 10 in order because then if e.g. we have entries -- for one million, ten million, one hundred million and one billion, and the current number is one million, the -- next number will be ten million and the next outer number one hundred million, when it would be cleaner to have -- one billion as the outer number (and in many cases, there is no Wiktionary entry for one hundred million). --	-- For the previous outer number, we do an analogous algorithm but make sure we don't try numbers less than 1. local power_of_10_sequence = { 1, 3, 2, 6 }

- Determine next outer number. --	if next_outer_num then next_outer_data = lookup_data(next_outer_num, "next outer") else local function try(num) local data = (not next_num or export.numbers_greater_than(num, next_num)) and lookup_data(num) or nil if data then next_outer_num = num next_outer_data = data end return data end if not try((k + 1) .. ("0"):rep(m)) and k == 1 then -- Try looking up a greater power of ten instead. for _, power_of_10 in ipairs(power_of_10_sequence) do				if try(make_greater_power_of_ten(power_of_10)) then break end end end end

- Determine previous outer number. --	if prev_outer_num then prev_outer_data = lookup_data(prev_outer_num, "previous outer") else local function try(num) local data = (not prev_num or export.numbers_less_than(num, prev_num)) and lookup_data(num) or nil if data then prev_outer_num = num prev_outer_data = data end return data end if k == 0 or m == 0 then -- less than 10; no previous outer num else local num_to_try if k == 1 then num_to_try = "9" .. ("0"):rep(m - 1) else num_to_try = (k - 1) .. ("0"):rep(m) end if not try(num_to_try) and k == 1 then -- Try looking up a smaller power of ten instead. for _, power_of_10 in ipairs(power_of_10_sequence) do					local num_to_try = make_lesser_power_of_ten(power_of_10) if num_to_try and try(num_to_try) then break end end end end end

local upper_data, lower_data local upper_num, lower_num = cur_data.upper, cur_data.lower

- Determine upper number. --	if upper_num then upper_data = lookup_data(upper_num, "upper") else -- Try looking up the next power of ten. upper_num = make_greater_power_of_ten(1) if upper_num == next_num or cur_num == "0" then upper_num = nil else upper_data = lookup_data(upper_num) end end

- Determine lower number. --	if lower_num then lower_data = lookup_data(lower_num, "lower") elseif k == 0 or m == 0 then -- less than 10; no lower num else -- Try looking up the previous power or 10. lower_num = make_lesser_power_of_ten(1) if lower_num == prev_num then lower_num = nil else lower_data = lookup_data(lower_num) end end

-- For a number `num` (an "adjacent" number to the current number, i.e. either next, previous, next/previous outer,	-- or upper/lower) with corresponding entry data `num_data`, display link(s) to the form(s) for this number that -- are associated with the current type and tag. If there is a single form to be linked to, the form is linked -- using the number itself as the display text; otherwise, the multiple forms are linked with superscripted [a], -- [b], etc. and the number it displayed adjacent to the links. In either case, beside the number there may be an -- arrow. If `arrow` == "rarrow", the format is like this: --		if multiple entries: --			 → [a], [b], ... --		else --			 →	-- If `arrow` == "larrow", the format is like this: --		if multiple entries: --			[a], [b], ... ← 	--		else --			← 	-- Otherwise, the format is like this: --		if multiple entries: --			 [a], [b], ... --		else --			 	--	-- Returns nil if `num_data` is nil or there is no entry in `num_data` for the current number type. --	-- For the handling of tags in this function, see the "LONG COMMENT EXPLAINING TAG HANDLING" above. local function display_adjacent_number_links(num, num_data, arrow) if not num_data then return nil end local num_type_data = num_data[cur_type] if not num_type_data then return nil end local forms = num_type_data if type(forms) ~= "table" then forms = {forms} end

local seen_forms, forms_by_tag = export.group_numeral_forms_by_tag(forms)

local forms_to_display if cur_tag and forms_by_tag[cur_tag] then forms_to_display = forms_by_tag[cur_tag] else forms_to_display = seen_forms end

for i, form_to_display in ipairs(forms_to_display) do			forms_to_display[i] = form_to_display.link or maybe_unaffix(m_data,				form_to_entry_name(form_to_display.form, lang)) end

local seen_pagenames = {} local pagenames_to_display = {} for _, form in ipairs(forms_to_display) do			if not seen_pagenames[form] then insert(pagenames_to_display, form) seen_pagenames[form] = true end end

if #pagenames_to_display == 0 then return nil end

num = export.format_number_for_display(num) local num_arrow = arrow == "rarrow" and num .. " → " or arrow == "larrow" and " ← " .. num or			num if #pagenames_to_display > 1 then local a = ("a"):byte local links = {} for i, term in ipairs(pagenames_to_display) do links[i] = m_links.language_link{lang = lang, term = term, alt = "[" .. char(a + i - 1) .. "]"}			end links = "" .. concat(links, ", ") .. ""			return arrow == "larrow" and links .. num_arrow or num_arrow .. links else return m_links.language_link { lang = lang, term = pagenames_to_display[1], alt = num_arrow, }		end end

-- Display links to previous/next numbers local prev_display = display_adjacent_number_links(prev_num, prev_data, "larrow") or "" local next_display = display_adjacent_number_links(next_num, next_data, "rarrow") or ""

-- Display links to previous/next outer numbers local prev_outer_display = display_adjacent_number_links(prev_outer_num, prev_outer_data, "larrow") local next_outer_display = display_adjacent_number_links(next_outer_num, next_outer_data, "rarrow")

-- Display links to upper/lower numbers local upper_display = display_adjacent_number_links(upper_num, upper_data) local lower_display = display_adjacent_number_links(lower_num, lower_data)

local canonical_name = lang:getCanonicalName local appendix1 = canonical_name .. " numerals" local appendix2 = canonical_name .. " numbers" local appendix local title if mw.title.new(appendix1, "Appendix").exists then appendix = appendix1 elseif mw.title.new(appendix2, "Appendix").exists then appendix = appendix2 end

if appendix then title = "" .. appendix2 .. "" else title = appendix2 end

local function format_cell(contents, class_name, colspan, bold) class_name = class_name and (" " .. class_name) or "" colspan = colspan and ('colspan="%s" '):format(colspan) or "" bold = bold and "!" or "|" return ('%s %sclass="table-cell %s | %s\n'):format(bold, colspan, class_name, contents)	end

local has_outer_display = not not (prev_outer_display or next_outer_display) local function format_upper_lower_display_row(display) local blank_cell if has_outer_display then blank_cell = '| colspan="2" |\n' else blank_cell = "|\n" end local parts = {'|- class="adjacent-panel"\n'} insert(parts, blank_cell) insert(parts, format_cell(display, "adjacent-number")) insert(parts, blank_cell) return concat(parts) end

upper_display = upper_display and format_upper_lower_display_row(upper_display) or "" lower_display = lower_display and format_upper_lower_display_row(lower_display) or ""

local function format_display_cell(display) return format_cell(display, "adjacent-number") end

prev_display = format_display_cell(prev_display) next_display = format_display_cell(next_display) prev_outer_display = has_outer_display and format_display_cell(prev_outer_display or "") or "" next_outer_display = has_outer_display and format_display_cell(next_outer_display or "") or "" cur_display = format_cell(cur_display, "current-number", nil, "bold")

local forms_display = ('| colspan="%s" style="text-align: center;" | %s\n'):format(		has_outer_display and 5 or 3, concat(formatted_forms, " "))

local footer_display if cur_data.wplink then local footer = "" .. lang:getCanonicalName .. " Wikipedia article on " .. m_links.full_link{lang = lang, term = "w:" .. lang:getCode .. ":" .. cur_data.wplink, alt = export.format_number_for_display(cur_num)} footer_display = '|- style="text-align: center;"\n' .. format_cell(footer, "footer-cell", has_outer_display and 5 or 3) else footer_display = "" end

local edit_link = ' ( [' ..		tostring(mw.uri.fullUrl(module_name, { action = "edit" })) ..		" edit] ) "

return [=[{| class="floatright number-box" cellpadding="5" cellspacing="0" style="background: #ffffff; border: 1px #aaa solid; border-collapse: collapse; margin-top: .5em;" rules="all" upper_display .. '|- style="text-align: center;"\n' .. prev_outer_display .. prev_display .. cur_display .. next_display .. next_outer_display .. "|-\n" .. lower_display .. "|-\n" .. forms_display .. footer_display .. "|}" .. frame:extensionTag{ name = "templatestyles", args = {src = "Template:number box/styles.css"} } end
 * + ]=] .. title .. edit_link .. "\n" ..

function export.show_box_manual(frame) local m_links = require("Module:links") local num_type = frame.args["type"]

local args = {}

local params = { [1] = {required = true, type = "language", default = "und"}, sc = {type = "script"}, headlink = {}, wplink = {}, alt = {}, tr = {}, [2] = {}, -- prev_symbol [3] = {}, -- cur_symbol [4] = {}, -- next_symbol [5] = {}, -- prev_term [6] = {}, -- next_term card = {}, cardalt = {}, cardtr = {}, ord = {}, ordalt = {}, ordtr = {}, adv = {}, advalt = {}, advtr = {}, mult = {}, multalt = {}, multtr = {}, dis = {}, disalt = {}, distr = {}, coll = {}, collalt = {}, colltr = {}, frac = {}, fracalt = {}, fractr = {}, opt = {}, optx = {}, optxalt = {}, optxtr = {}, opt2 = {}, opt2x = {}, opt2xalt = {}, opt2xtr = {}, }

local parent_args = frame:getParent.args local args = require("Module:parameters").process(parent_args, params)

local lang = args[1] local sc = args.sc	local headlink = args.headlink local wplink = args.wplink local alt = args.alt local tr = args.tr

local prev_symbol = args[2] local cur_symbol = args[3] local next_symbol = args[4]

local prev_term = args[5] local next_term = args[6]

local cardinal_term = args.card; local cardinal_alt = args.cardalt; local cardinal_tr = args.cardtr

local ordinal_term = args.ord; local ordinal_alt = args.ordalt; local ordinal_tr = args.ordtr

local adverbial_term = args.adv; local adverbial_alt = args.advalt; local adverbial_tr = args.advtr

local multiplier_term = args.mult; local multiplier_alt = args.multalt; local multiplier_tr = args.multtr

local distributive_term = args.dis; local distributive_alt = args.disalt; local distributive_tr = args.distr

local collective_term = args.coll; local collective_alt = args.collalt; local collective_tr = args.colltr

local fractional_term = args.frac; local fractional_alt = args.fracalt; local fractional_tr = args.fractr

local optional1_title = args.opt local optional1_term = args.optx; local optional1_alt = args.optxalt; local optional1_tr = args.optxtr

local optional2_title = args.opt2 local optional2_term = args.opt2x; local optional2_alt = args.opt2xalt; local optional2_tr = args.opt2xtr

track(lang:getCode)

if sc then track("sc") end

if headlink then track("headlink") end

if wplink then track("wplink") end

if alt then track("alt") end

if cardinal_alt or ordinal_alt or adverbial_alt or multiplier_alt or distributive_alt or collective_alt or fractional_alt or optional1_alt or optional2_alt then track("xalt") end

local subpage = mw.title.getCurrentTitle.subpageText local is_reconstructed = lang:hasType("reconstructed") or mw.title.getCurrentTitle.nsText == "Reconstruction" -- Commenting out this line prevents passing redundant alts to full_link; -- however, there may have been a purpose to it. -- alt = alt or (is_reconstructed and "*" or "") .. subpage

if num_type == "cardinal" then cardinal_term = (is_reconstructed and "*" or "") .. subpage cardinal_alt = alt cardinal_tr = tr	elseif num_type == "ordinal" then ordinal_term = (is_reconstructed and "*" or "") .. subpage ordinal_alt = alt ordinal_tr = tr	end

local header = lang:getCanonicalName .. " " .. num_type .. " numbers"

if headlink then header = "" .. header .. "" end

local previous = ""

if prev_term or prev_symbol then previous = m_links.full_link{lang = lang, sc = sc, term = prev_term, alt = " < " .. prev_symbol, tr = "-", no_alt_ast = true} end

local current = m_links.full_link{lang = lang, sc = sc, alt = cur_symbol, tr = "-", no_alt_ast = true}

local next = ""

if next_term or next_symbol then next = m_links.full_link{lang = lang, sc = sc, term = next_term, alt = next_symbol .. " > ", tr = "-", no_alt_ast = true} end

local forms = {}

if cardinal_term then insert(forms, "    Cardinal : " .. m_links.full_link{lang = lang, sc = sc, term = cardinal_term, alt = cardinal_alt, tr = cardinal_tr}) end

if ordinal_term then insert(forms, "    Ordinal : " .. m_links.full_link{lang = lang, sc = sc, term = ordinal_term, alt = ordinal_alt, tr = ordinal_tr}) end

if adverbial_term then insert(forms, "    Adverbial : " .. m_links.full_link{lang = lang, sc = sc, term = adverbial_term, alt = adverbial_alt, tr = adverbial_tr}) end

if multiplier_term then insert(forms, "    Multiplier : " .. m_links.full_link{lang = lang, sc = sc, term = multiplier_term, alt = multiplier_alt, tr = multiplier_tr}) end

if distributive_term then insert(forms, "    Distributive : " .. m_links.full_link{lang = lang, sc = sc, term = distributive_term, alt = distributive_alt, tr = distributive_tr}) end

if collective_term then insert(forms, "    Collective : " .. m_links.full_link{lang = lang, sc = sc, term = collective_term, alt = collective_alt, tr = collective_tr}) end

if fractional_term then insert(forms, "    Fractional : " .. m_links.full_link{lang = lang, sc = sc, term = fractional_term, alt = fractional_alt, tr = fractional_tr}) end

if optional1_title then insert(forms, "    " .. optional1_title .. " : " .. m_links.full_link{lang = lang, sc = sc, term = optional1_term, alt = optional1_alt, tr = optional1_tr}) end

if optional2_title then insert(forms, "    " .. optional2_title .. " : " .. m_links.full_link{lang = lang, sc = sc, term = optional2_term, alt = optional2_alt, tr = optional2_tr}) end

local footer = ""

if wplink then footer = "" .. lang:getCanonicalName .. " Wikipedia article on " .. m_links.full_link{lang = lang, sc = sc, term = "w:" .. lang:getCode .. ":" .. wplink, alt = alt, tr = tr} end

return [=[{| class="floatright number-box" cellpadding="5" cellspacing="0" rules="all"
 * + ]=] .. header .. [=[
 * class="adjacent-slot" | ]=] .. previous .. [=[
 * class="adjacent-slot" | ]=] .. previous .. [=[

! class="current-slot" | ]=] .. current .. [=[

 * class="adjacent-slot" | ]=] .. next .. [=[

 * colspan="3" class="form-slot" | ]=] .. concat(forms, " ") .. [=[
 * colspan="3" class="form-slot" | ]=] .. concat(forms, " ") .. [=[

 * colspan="3" class="footer-slot" | ]=] .. footer .. [=[
 * colspan="3" class="footer-slot" | ]=] .. footer .. [=[

name = "templatestyles", args = {src = "Template:number box/styles.css"} } end
 * }]=] .. frame:extensionTag{

return export

title: Module:number list


text:
lò bánh mì

Etymology
+

Noun

 * 1) baker's oven
 * 2) bakery

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: lò bánh mì


text:
Module:number list/documentation

This module generates navigation boxes for number words, such as, , , and. It is used by, , , , and. The language-specific submodules are used by.

title: Module:number list/documentation


text:
kuiskaustulkkaus

Noun

 * 1) chuchotage, whispered interpreting, whispered interpretation interpretation of speech in a whisper

title: kuiskaustulkkaus


text: Category:List modules

title: Category:List modules


text:
tulkkaus

Noun

 * 1) interpretation, interpreting act of translating orally

title: tulkkaus


text:
Reconstruction:Proto-Slavic/čьrta

Etymology

 * Derksen: from *krt.
 * Černyx: from *kirt-ā, from root

Compare 🇨🇬.

Noun

 * 1) line

Descendants

 * East Slavic:, ,
 * South Slavic:
 * Old Church Slavonic:
 * Cyrillic:
 * Glagolitic:
 * West Slavic:
 * Cyrillic:
 * Glagolitic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:

title: Reconstruction:Proto-Slavic/čьrta


text:
chain tie

Noun

 * 1)  A tie consisting of a series of connected iron bars or rods.

title: chain tie


text:
tulkata

Verb

 * 1) to interpret to act as an interpreter, to translate orally

title: tulkata


text:
Module:number list/data/en

local export = {numbers = {}}

export.additional_number_types = { {key = "latinate_ordinal", after = "ordinal"}, {key = "reverse_order_ordinal", after = "latinate_ordinal"}, {key = "latinate_reverse_order_ordinal", after = "reverse_order_ordinal"}, {key = "latinate_multiplier", after = "multiplier"}, {key = "group_collective", after = "collective"}, {key = "multipart_collective", after = "group_collective"}, {key = "greek_or_latinate_collective", after = "multipart_collective", display = "Greek or Latinate collective"}, {key = "latinate_collective_prefix", after = "greek_or_latinate_collective"}, {key = "greek_collective_prefix", after = "greek_or_latinate_collective"}, {key = "metric_collective_prefix", after = "greek_or_latinate_collective"}, {key = "metric_fractional_prefix", after = "fractional"}, {key = "latinate_fractional_prefix", after = "metric_fractional_prefix"}, {key = "greek_fractional_prefix", after = "latinate_fractional_prefix"}, {key = "elemental", after = "greek_fractional_prefix"}, {key = "greek_prefix"}, {key = "number_of_musicians"}, {key = "number_of_years"}, }

local numbers = export.numbers

numbers[0] = { cardinal = "zero", ordinal = "zeroth", adverbial = "never", }

numbers[1] = { cardinal = "one", ordinal = "first", latinate_ordinal = "primary", reverse_order_ordinal = "last", latinate_reverse_order_ordinal = "ultimate", adverbial = {"one time", "once"}, multiplier = "onefold", latinate_multiplier = "single", distributive = "singly", group_collective = "onesome", multipart_collective = {"singlet", "singleton"}, greek_or_latinate_collective = "monad", latinate_collective_prefix = "uni-", greek_collective_prefix = "mono-", fractional = "whole", elemental = {"singlet", "singleton"}, greek_prefix = "proto-", number_of_musicians = "solo", number_of_years = "year", }

numbers[2] = { cardinal = "two", ordinal = "second", latinate_ordinal = "secondary", reverse_order_ordinal = {"second to last", "second from last", "last but one"}, latinate_reverse_order_ordinal = "penultimate", adverbial = {"two times", "twice"}, multiplier = "twofold", latinate_multiplier = "double", distributive = "doubly", group_collective = {"both", "pair", "twosome"}, multipart_collective = {"doublet", "couple", "couplet"}, greek_or_latinate_collective = "dyad", latinate_collective_prefix = "bi-", greek_collective_prefix = {"di-", "duo-"}, fractional = "half", metric_collective_prefix = "double-", metric_fractional_prefix = "demi-", latinate_fractional_prefix = "semi-", greek_fractional_prefix = "hemi-", elemental = {"twin", "doublet"}, greek_prefix = "deutero-", number_of_musicians = {"duo", "duet", "duplet"}, number_of_years = "biennium" }

numbers[3] = { cardinal = "three", ordinal = "third", latinate_ordinal = "tertiary", reverse_order_ordinal = {"third to last", "third from last", "last but two"}, latinate_reverse_order_ordinal = "antepenultimate", adverbial = {"three times", "thrice"}, multiplier = "threefold", latinate_multiplier = "triple", distributive = "triply", group_collective = {"trio", "threesome"}, multipart_collective = "triplet", greek_or_latinate_collective = "triad", latinate_collective_prefix = "tri-", greek_collective_prefix = "tri-", fractional = "third", latinate_fractional_prefix = "trient-", elemental = "triplet", greek_prefix = "trito-", number_of_musicians = {"trio", "triplet"}, number_of_years = "triennium", }

numbers[4] = { cardinal = "four", ordinal = "fourth", latinate_ordinal = {"quartary", "quaternary"}, reverse_order_ordinal = {"fourth to last", "fourth from last", "last but three"}, latinate_reverse_order_ordinal = "preantepenultimate", adverbial = "four times", multiplier = "fourfold", latinate_multiplier = "quadruple", distributive = "quadruply", group_collective = "foursome", multipart_collective = "quadruplet", greek_or_latinate_collective = "tetrad", latinate_collective_prefix = "quadri-", greek_collective_prefix = {"tetra-", "tessera-"}, fractional = {"quarter", "fourth"}, latinate_fractional_prefix = "quadrant-", elemental = "quadruplet", greek_prefix = "tetarto-", number_of_musicians = "quartet", number_of_years = {"quadrennium","olympiad"}, }

numbers[5] = { cardinal = "five", ordinal = "fifth", latinate_ordinal = {"quintary", "quinary"}, reverse_order_ordinal = {"fifth to last", "fifth from last", "last but four"}, latinate_reverse_order_ordinal = "propreantepenultimate", adverbial = "five times", multiplier = "fivefold", latinate_multiplier = "quintuple", distributive = "quintuply", group_collective = "fivesome", multipart_collective = {"quintuplet", "pentuplet"}, greek_or_latinate_collective = "pentad", latinate_collective_prefix = "quinque-", greek_collective_prefix = "penta-", fractional = "fifth", latinate_fractional_prefix = "quintant-", elemental = {"quintuplet", "pentuplet"}, greek_prefix = "pempto-", number_of_musicians = "quintet", number_of_years = {"quinquennium","lustrum"}, }

numbers[6] = { cardinal = "six", ordinal = "sixth", latinate_ordinal = "senary", adverbial = "six times", multiplier = "sixfold", latinate_multiplier = "sextuple", distributive = "sextuply", group_collective = {"half-dozen", "sixsome"}, multipart_collective = {"sextuplet", "hextuplet"}, greek_or_latinate_collective = "hexad", latinate_collective_prefix = "sexa-", greek_collective_prefix = "hexa-", fractional = "sixth", latinate_fractional_prefix = "sextant-", elemental = {"sextuplet", "hextuplet"}, greek_prefix = "hexa-", number_of_musicians = "sextet", number_of_years = "sexennium", }

numbers[7] = { cardinal = "seven", ordinal = "seventh", latinate_ordinal = "septenary", adverbial = "seven times", multiplier = "sevenfold", latinate_multiplier = "septuple", distributive = "septuply", group_collective = "sevensome", multipart_collective = "septuplet", greek_or_latinate_collective = "heptad", latinate_collective_prefix = "septua-", greek_collective_prefix = "hepta-", fractional = "seventh", elemental = "septuple", greek_prefix = "ebdomo-", number_of_musicians = "septet", number_of_years = "septennium", }

numbers[8] = { cardinal = "eight", ordinal = "eighth", latinate_ordinal = "octonary", adverbial = "eight times", multiplier = "eightfold", latinate_multiplier = "octuple", distributive = "octuply", group_collective = "eightsome", multipart_collective = "octuplet", greek_or_latinate_collective = "octad", latinate_collective_prefix = "octo-", greek_collective_prefix = {"octo-", "octa-"}, fractional = "eighth", latinate_fractional_prefix = "octant-", elemental = "octuplet", greek_prefix = "ogdo-", number_of_musicians = "octet", number_of_years = "octennium", }

numbers[9] = { cardinal = "nine", ordinal = "ninth", latinate_ordinal = "nonary", adverbial = "nine times", multiplier = "ninefold", latinate_multiplier = "nonuple", group_collective = "ninesome", multipart_collective = "nonuplet", greek_or_latinate_collective = {"ennead", "nonad"}, latinate_collective_prefix = "nona-", greek_collective_prefix = "ennea-", fractional = "ninth", elemental = "nonuplet", greek_prefix = "enato-", number_of_musicians = "nonet", number_of_years = "novennium", }

numbers[10] = { cardinal = "ten", ordinal = "tenth", latinate_ordinal = "denary", adverbial = "ten times", multiplier = "tenfold", latinate_multiplier = "decuple", group_collective = "tensome", multipart_collective = "decuplet", greek_or_latinate_collective = {"decad", "decade"}, latinate_collective_prefix = "deca-", greek_collective_prefix = "deca-", metric_collective_prefix = "deca-", fractional = "tenth", elemental = "decuplet", metric_fractional_prefix = "deci-", greek_prefix = "decato-", number_of_musicians = "decet", number_of_years = {"decade", "decennium"}, }

numbers[11] = { cardinal = "eleven", ordinal = "eleventh", latinate_ordinal = "undecimary", adverbial = "eleven times", multiplier = "elevenfold", latinate_multiplier = "undecuple", group_collective = "elevensome", greek_or_latinate_collective = "hendecad", latinate_collective_prefix = "undeca-", greek_collective_prefix = "hendeca-", fractional = "eleventh", greek_prefix = "endecato-", number_of_musicians = "undecet", }

numbers[12] = { cardinal = "twelve", ordinal = "twelfth", -- "dozenth" (nonstandard) latinate_ordinal = "duodecimary", adverbial = "twelve times", multiplier = "twelvefold", latinate_multiplier = "duodecuple", group_collective = {"dozen", "twelvesome"}, greek_or_latinate_collective = {"duodecad", "duodecade"}, latinate_collective_prefix = "duodeca-", greek_collective_prefix = "dodeca-", fractional = {"twelfth", "dozenth"}, latinate_fractional_prefix = "unci-", greek_prefix = "dodecato-", number_of_musicians = "duodecet", }

for i, teen in ipairs { "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" } do	numbers[i + 12] = { cardinal = teen, ordinal = teen .. "th", adverbial = ("%s times"):format(teen), multiplier = teen .. "fold", group_collective = teen .. "some", } end

for i, tens_cardinal in ipairs { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety", } do	local tens = (i + 1) * 10 if tens == 20 then numbers[tens] = { cardinal = tens_cardinal, ordinal = tens_cardinal:gsub("y$", "ieth"), adverbial = ("%s times"):format(tens_cardinal), multiplier = tens_cardinal .. "fold", group_collective = "score", }	elseif tens == 60 then numbers[tens] = { cardinal = tens_cardinal, ordinal = tens_cardinal:gsub("y$", "ieth"), adverbial = ("%s times"):format(tens_cardinal), multiplier = tens_cardinal .. "fold", group_collective = "shock", }	else numbers[tens] = { cardinal = tens_cardinal, ordinal = tens_cardinal:gsub("y$", "ieth"), adverbial = ("%s times"):format(tens_cardinal), multiplier = tens_cardinal .. "fold", }	end for ones = 1, 9 do		numbers[tens + ones] = { cardinal = tens_cardinal .. "-" .. numbers[ones].cardinal, ordinal = tens_cardinal .. "-" .. numbers[ones].ordinal, adverbial = ("%s-%s times"):format(tens_cardinal, numbers[ones].cardinal), }	end end

numbers[100] = { cardinal = "hundred", ordinal = "hundredth", multiplier = "hundredfold", latinate_multiplier = "centuple", group_collective = "hundred", multipart_collective = "centuplet", metric_collective_prefix = "hecto-", metric_fractional_prefix = "centi-", elemental = "centuplet", number_of_years = {"century", "centennium"}, }

numbers[101] = { cardinal = {"one hundred and one", "one hundred one", "hundred and one", "hundred one"}, ordinal = {"one hundred and first", "one hundred first", "hundred-and-first", "hundred-first"}, }

numbers[110] = { cardinal = {"eleventy"}, }

numbers[120] = { cardinal = {"twelfty"}, }

numbers[144] = { group_collective = "gross", }

numbers[200] = { cardinal = "two hundred", ordinal = "two-hundredth", }

numbers[300] = { cardinal = "three hundred", ordinal = "three-hundredth", }

numbers[400] = { cardinal = "four hundred", ordinal = "four-hundredth", }

numbers[500] = { cardinal = "five hundred", ordinal = "five-hundredth", }

numbers[600] = { cardinal = "six hundred", ordinal = "six-hundredth", }

numbers[700] = { cardinal = "seven hundred", ordinal = "seven-hundredth", }

numbers[800] = { cardinal = "eight hundred", ordinal = "eight-hundredth", }

numbers[900] = { cardinal = "nine hundred", ordinal = "nine-hundredth", }

numbers[1000] = { cardinal = "thousand", ordinal = "thousandth", multiplier = "thousandfold", group_collective = "chiliad", metric_collective_prefix = "kilo-", metric_fractional_prefix = "milli-", number_of_years = {"millennium", "kiloannum", "kiloyear"}, }

numbers[1001] = { cardinal = {"one thousand and one", "one thousand one", "thousand and one", "thousand one"}, ordinal = {"one thousand and first", "thousand-and-first", "thousand-first"}, }

numbers[1100] = { cardinal = "eleven hundred", }

numbers[1200] = { cardinal = "twelve hundred", }

numbers[1300] = { cardinal = "thirteen hundred", }

numbers[1400] = { cardinal = "fourteen hundred", }

numbers[1500] = { cardinal = "fifteen hundred", }

numbers[1600] = { cardinal = "sixteen hundred", }

numbers[1700] = { cardinal = "seventeen hundred", }

numbers[1800] = { cardinal = "eighteen hundred", }

numbers[1900] = { cardinal = "nineteen hundred", }

numbers[2000] = { cardinal = "two thousand", ordinal = "two-thousandth", }

numbers[2100] = { cardinal = "twenty-one hundred", }

numbers[2200] = { cardinal = "twenty-two hundred", }

numbers[2300] = { cardinal = "twenty-three hundred", }

numbers[3000] = { cardinal = "three thousand", ordinal = "three-thousandth", }

numbers[4000] = { cardinal = "four thousand", ordinal = "four-thousandth", }

numbers[5000] = { cardinal = "five thousand", ordinal = "five-thousandth", }

numbers[6000] = { cardinal = "six thousand", ordinal = "six-thousandth", }

numbers[7000] = { cardinal = "seven thousand", ordinal = "seven-thousandth", }

numbers[8000] = { cardinal = "eight thousand", ordinal = "eight-thousandth", }

numbers[9000] = { cardinal = "nine thousand", ordinal = "nine-thousandth", }

numbers[9999] = { cardinal = {"nine thousand nine hundred and ninety-nine", "nine thousand nine hundred ninety-nine", "ninety-nine hundred and ninety-nine"}, ordinal = "nine-thousand-nine-hundred-and-ninety-ninth", }

numbers[10000] = { cardinal = {"ten thousand", "myriad"}, ordinal = {"ten-thousandth", "myriadth"}, multiplier = {"ten-thousandfold", "myriadfold"}, group_collective = "myriad", metric_collective_prefix = "myria-", metric_fractional_prefix = "dimi-", number_of_years = "decamillennium", }

numbers[11000] = { cardinal = "eleven thousand", }

numbers[50000] = { cardinal = "fifty thousand", }

numbers[100000] = { cardinal = {"hundred thousand", "one hundred thousand", "lakh"}, ordinal = {"hundred-thousandth", "one-hundred-thousandth"}, group_collective = "lakh", number_of_years = "centimillennium", }

numbers[1000000] = { cardinal = "million", ordinal = "millionth", multiplier = "millionfold", metric_collective_prefix = "mega-", metric_fractional_prefix = "micro-", number_of_years = {"millionennium", "megannum", "megayear"}, }

numbers[10000000] = { cardinal = {"ten million", "crore"}, ordinal = "ten-millionth", }

numbers[100000000] = { cardinal = {"hundred million", "one hundred million"}, ordinal = {"hundred-millionth", "one-hundred-millionth"}, }

numbers[1000000000] = { cardinal = {"billion", "milliard", "thousand million"}, ordinal = {"billionth", "milliardth", "thousand-millionth"}, multiplier = {"billionfold", "milliardfold", "thousand-millionfold"}, metric_collective_prefix = "giga-", metric_fractional_prefix = "nano-", number_of_years = {"giga-annum", "gigayear"}, }

numbers[1000000000000] = { cardinal = {"trillion", "billion"}, ordinal = {"trillionth", "billionth"}, multiplier = {"trillionfold", "billionfold"}, metric_collective_prefix = "tera-", metric_fractional_prefix = "pico-", }

numbers[1000000000000000] = { cardinal = {"quadrillion", "billiard"}, ordinal = {"quadrillionth", "billiardth"}, multiplier = {"quadrillionfold", "billiardfold"}, metric_collective_prefix = "peta-", metric_fractional_prefix = "femto-", }

numbers[1000000000000000000] = { cardinal = {"quintillion", "trillion"}, ordinal = {"quintillionth", "trillionth"}, multiplier = {"quintillionfold", "trillionfold"}, metric_collective_prefix = "exa-", metric_fractional_prefix = "atto-", }

numbers[1000000000000000000000] = { cardinal = {"sextillion", "trilliard"}, ordinal = {"sextillionth", "trilliardth"}, multiplier = {"sextillionfold", "trilliardfold"}, metric_collective_prefix = "zetta-", metric_fractional_prefix = "zepto-", }

numbers[1000000000000000000000000] = { cardinal = {"septillion", "quadrillion"}, ordinal = {"septillionth", "quadrillionth"}, multiplier = {"septillionfold", "quadrillionfold"}, metric_collective_prefix = "yotta-", metric_fractional_prefix = "yocto-", }

numbers[1000000000000000000000000000] = { cardinal = {"octillion", "quadrilliard"}, ordinal = {"octillionth", "quadrilliardth"}, multiplier = {"octillionfold", "quadrilliardfold"}, metric_collective_prefix = "ronna-", metric_fractional_prefix = "ronto-", }

numbers[1000000000000000000000000000000] = { cardinal = {"nonillion", "quintillion"}, ordinal = {"nonillionth", "quintillionth"}, multiplier = {"nonillionfold", "quintillionfold"}, metric_collective_prefix = "quetta-", metric_fractional_prefix = "quecto-", }

return export

title: Module:number list/data/en


text:
chalazogamy

Noun

 * 1)  A process of fecundation in which the pollen tube penetrates to the embryo sac through the tissue of the chalaza, instead of entering through the micropyle.

title: chalazogamy


text:
chalazogamic

Adjective

 * 1) Relating to chalazogamy.

title: chalazogamic


text:
chelaship

Noun

 * 1) The role or status of chela pupil or disciple.

title: chelaship


text:
mphepo

Noun

 * 1) wind
 * 2) cold weather
 * 3) wind a point of the compass, especially one of the cardinal points
 * 4) Any of certain diseases believed to be spread by the wind.

title: mphepo


text:
chicalote

Noun

 * , a species of prickly poppy native to California.

title: chicalote


text: chicalotes

title: chicalotes


text:
Chilean pine

Noun

 * 1) A monkey puzzle (tree).

Translations

 * French:
 * Italian: pino del Cile

title: Chilean pine


text: Chilean pines

title: Chilean pines


text: Chinook State

title: Chinook State


text:
simultaanitulkkaus

Noun

 * 1) simultaneous interpretation, simultaneous interpreting

title: simultaanitulkkaus


text:
จำคุก

Etymology
From ; literally "to confine in prison".

Noun

 * 1)  imprisonment.

Verb

 * 1)  to imprison.

title: จำคุก


text:
Christian Scientist

Noun

 * 1) A member of the Christian Science denomination.

title: Christian Scientist


text:
simultaaninen

Etymology
(see 🇨🇬), ultimately from and adapted with the adjectival suffix.

Adjective

 * 1) simultaneous

title: simultaaninen


text: Category:th:Prison

title: Category:th:Prison


text: Christian Scientists

title: Christian Scientists


text:
spãntic

Etymology
From (compare 🇨🇬,, 🇨🇬, Calabrian spantecare ("to open")), from , plural of ; cf. .

Verb

 * 1) to cleave, rend, split, cut

title: spãntic


text: Template:number box

title: Template:number box


text:
chromophotograph

Noun

 * 1) A color photograph.

title: chromophotograph


text: chromophotographs

title: chromophotographs


text:
chromophotographic

Adjective

 * 1) Relating to color photography.

title: chromophotographic


text:
Vestindia

Etymology
From.

title: Vestindia


text:
peräkkäistulkkaus

Noun

 * 1) consecutive interpretation, consecutive interpreting

title: peräkkäistulkkaus


text: spintec

title: spintec


text:
konsekutiivitulkkaus

Noun

 * 1) consecutive interpretation, consecutive interpreting

title: konsekutiivitulkkaus


text: chupatties

title: chupatties


text:
konsekutiivinen

Etymology
(see 🇨🇬). Adapted with the adjectival suffix.

Adjective

 * 1) consecutive

title: konsekutiivinen


text: muistiinpanojen

title: muistiinpanojen


text:
ประหารชีวิต

Etymology
From. Compare Modern 🇨🇬.

Noun

 * 1)  death penalty.
 * 2)  execution: infliction of death penalty.
 * 3)  killing by whatever means.

Verb

 * 1)  to execute: to inflict death penalty.
 * 2)  to kill.

title: ประหารชีวิต


text: clairaudients

title: clairaudients


text: clairsentients

title: clairsentients


text:
claircognizant

Adjective

 * 1) Exhibiting or relating to claircognizance.

Noun

 * 1) One who has the power of claircognizance.

title: claircognizant


text: claircognizants

title: claircognizants


text:
peter pepper

Noun

 * 1) An heirloom chili pepper grown in North America for its unusual penis-shaped fruits.

title: peter pepper


text: peter peppers

title: peter peppers


text:
ปรับ

Noun

 * 1)  fine (pecuniary penalty).

Verb

 * 1)  to fine (to subject to a pecuniary penalty).
 * 2) to adjust; to adapt; to improve.
 * 3) to compare.
 * 4) to even; to level; to smooth.

title: ปรับ


text: De vestindiske øyer

title: De vestindiske øyer


text: clearcoled

title: clearcoled


text: clearcoles

title: clearcoles


text: clearcoling

title: clearcoling


text:
ริบ

Etymology
From.

Compare Modern 🇨🇬,, 🇨🇬.

Noun

 * 1)  confiscation.

Verb

 * 1)  to confiscate.
 * 2) * 1996, จักรฤทธิ์ สุริยะไชย, :
 * 3) to seize by or as if by authority.
 * 4) * 2002,, :
 * 1) * 2002,, :

title: ริบ


text:
cocainist

Noun

 * 1) A cocaine addict.

title: cocainist


text: cocainists

title: cocainists


text:
cocainize

Verb

 * 1)  To treat or anesthetize with cocaine.

title: cocainize


text: cocainized

title: cocainized


text: cocainizes

title: cocainizes


text: cocainizing

title: cocainizing


text:
brachial plexus

Noun

 * 1)  A network of nerves formed by the anterior rami of the cervical nerves C5–C8 and first thoracic nerve (T1).

Translations

 * Arabic: ضَفِيرَة عَضُدِيَّة
 * Chinese:
 * Mandarin:
 * Czech: pažní pleteň
 * Finnish: hartiapunos, olkahermopunos
 * French:
 * German: Armgeflecht
 * Hungarian: karfonat
 * Latin: plexus brachialis

title: brachial plexus


text: coach horses

title: coach horses


text:
กักขัง

Etymology
From 🇰🇲.

Noun

 * 1)  confinement; incarceration.

Usage notes

 * Under the Thai law, the term refers to an alternative penalty by which a convict is kept in a definite place other than a prison, police station, or the like, imposed in case of failure to pay a fine or instead of short-term imprisonment, for example.

Verb

 * 1)  to impose such penalty (on); to enforce such penalty (against).
 * 2) to keep in or force to be in a certain place: to lock up, to hold, to detain, to confine, to imprison, etc.

title: กักขัง


text:
yiwozh

Etymology
.

Verb

 * 1) he/she is ticklish

Usage notes
This is a neuter verb that uses only the imperfective mode.

Conjugation
.

title: yiwozh


text: hee-hawing

title: hee-hawing


text: hee-hawed

title: hee-hawed


text:
vestindisk

Etymology
From.

Adjective

 * 1) West Indian

Etymology
From.

Adjective

 * 1) West Indian

title: vestindisk


text:
comptograph

Noun

 * 1)  An early machine for adding numbers and producing a printed record of the sum.

title: comptograph


text: comptographs

title: comptographs


text: vestindiske

title: vestindiske


text:
หมายจับ

Etymology
From 🇰🇲; perhaps.

Noun

 * 1)  arrest warrant.

title: หมายจับ


text:
conenose

Noun

 * 1) conenose bug

title: conenose


text: conenoses

title: conenoses


text: Category:th:Criminal procedure

title: Category:th:Criminal procedure


text: Category:th:Procedural law

title: Category:th:Procedural law


text:
หมายค้น

Etymology
From.

Noun

 * 1)  search warrant.

title: หมายค้น


text:
หมายขัง

Etymology
From.

Noun

 * 1)  detention warrant.

title: หมายขัง


text: Copenhagens

title: Copenhagens


text:
detention warrant

Noun

 * 1)  a court order authorising the detention of a person following his arrest or pending any procedural activity (interrogation, examination, trial, etc.).

title: detention warrant


text:
rampay

Verb

 * 1)  to lead, take by the hand

title: rampay


text:
release warrant

Noun

 * 1)  A court order authorising the release of a detained or imprisoned person.

title: release warrant


text:
killmu

Adjective

 * 1) orange-colored

title: killmu


text:
imprisonment warrant

Noun

 * 1)  a court order authorising the imprisonment of a person sentenced to imprisonment; a court order authorising the execution of an imprisonment sentence.

title: imprisonment warrant


text:
corridor train

Noun

 * 1)  A train whose coaches are connected so as to form a continuous corridor, into which the compartments open.

title: corridor train


text: corridor trains

title: corridor trains


text:
kulliyay

Etymology
From.

Verb

 * 1)  to become purple

title: kulliyay


text:
หมายปล่อย

Etymology
From.

Noun

 * 1)  release warrant.

title: หมายปล่อย


text:
sarça

Etymology
From (compare 🇨🇬, earlier ). Alternatively, from, from.

Cognate with 🇨🇬.

Noun

 * 1) thicket
 * 2) blackberry bush
 * 3) bramble

title: sarça


text:
with prejudice

Prepositional phrase

 * 1)  Without the possibility of future action that reverses the decision.
 * 2)  Without the possibility of bringing a new case on the same basis.
 * The charges were dismissed with prejudice.
 * The charges were dismissed with prejudice.

title: with prejudice


text: country clubs

title: country clubs


text:
หมายจำคุก

Etymology
From.

Noun

 * 1)  imprisonment warrant.

title: หมายจำคุก


text: country cousins

title: country cousins


text:
tutayay

Etymology
From.

Verb

 * 1)  to become dark, night

title: tutayay


text:
coverside

Noun

 * 1) A region of country having covers; hunting country.

title: coverside


text:
หมายเรียก

Etymology
From.

Noun

 * 1)  summons.

title: หมายเรียก


text:
cowalker

Noun

 * 1)  A phantom or astral body deemed to be separable from the physical body and capable of acting independently; a doppelganger.

title: cowalker


text:
komunike

Etymology
From, from.

Noun

 * 1)  communiqué: An official report or statement, such as a government press release or the report of a conference.

Etymology
From.

Noun

 * 1) communiqué

title: komunike


text: cowalkers

title: cowalkers


text:
Template:number box/documentation

This template generates a navigation box for number entries.

Parameters

 * 1
 * The language code (see Languages).

 * 2
 * The current number. Thousands separators are allowed. This can (and normally will) be omitted, because the module can automatically look up the correct number by matching the current page name (or the page name specified using pagename) against the number forms listed in the language-specific number data. The main reasons to include it are: (1) if the same page name corresponds to multiple numbers; (2) to save memory, e.g. on lima, because the table that maps number forms to numbers takes nontrivial amounts of memory and is built only if 2 is omitted.

 * pagename
 * An alternate page name, if you want the number box to display as if it were on a different page name. Normally, the module automatically determines the type of number (cardinal, ordinal, distributive, etc.) from the page name by looking in the number data for this language. This parameter can be used for testing, on documentation pages, or if the current page name is not found in the language's number data (e.g. because it is an alternative form; but in this case, consider adding the page name to the language data).

 * type
 * The type of number (cardinal, ordinal, etc.). Must be a key in the table for the number in the correct data module. Only needed if two numbers have the same entry name.

Usage
This template may be added to the entry of any number, whether a cardinal number, ordinal number or any other kind. In languages where number words are inflected, add the template only to the lemma form, not to any of the other forms.

The template should be placed within a language section, immediately following the L2 language header.

Types
The following values are recognized by default for the  parameter (some languages may specify additional types):

Operational details
The template uses a data module for each language which contains a list of numbers and the various subtypes for each one (cardinal, ordinal etc.). When the template is added to an entry, the subtypes of the given number (parameter 2) are searched for the current page name, which lets the template automatically figure out what type of number the current page is. Links are then generated to the previous and next item of this type, i.e. adding it to third will automatically create links to second and fourth.

The data modules are subpages of Module:number list/data, named by language code. So for example, the data for English numbers is in Module:number list/data/en.

title: Template:number box/documentation


text:
šamizen

Etymology
From.

Noun

 * 1) shamisen

title: šamizen


text: writ of summons

title: writ of summons


text:
qhusi

Adjective

 * 1) sky blue, turquoise

Usage notes
Not to be confused with.

title: qhusi


text:
qusi

Adverb

 * 1) clear

Noun

 * 1)  coarse cloth for blankets; a woolen blanket

Usage notes
Not to be confused with.

title: qusi


text:
หมายเกาะ

Etymology
From.

Noun

 * 1)  arrest warrant.

title: หมายเกาะ


text: Category:Number data modules

title: Category:Number data modules


text:
q'illu

Adjective

 * 1) yellow, orange

title: q'illu


text: qillu

title: qillu


text:
q'umir

Adjective

 * 1) green

title: q'umir


text: lovaduck

title: lovaduck


text: loveaduck

title: loveaduck


text: Category:Persian uncountable nouns

title: Category:Persian uncountable nouns


text: Category:oc:Clothing

title: Category:oc:Clothing


text: Category:pt:Persia

title: Category:pt:Persia


text: Category:vot:Emotions

title: Category:vot:Emotions


text:
sañi

Adjective

 * 1) purple, lilac, crimson, light brown, lead-colored
 * 2) livid

title: sañi


text: Category:pt:Canada

title: Category:pt:Canada


text:
หมายศาล

Etymology
From, literally "court warrant".

Noun

 * 1)  any instrument issued by a court, requiring anything to be done or not to done, as arrest warrant, search warrant, etc.

title: หมายศาล


text: Category:pt:Moons of Saturn

title: Category:pt:Moons of Saturn


text: Category:pt:Moons

title: Category:pt:Moons


text: Category:pt:Lakes

title: Category:pt:Lakes


text: Category:pt:Countries in South America

title: Category:pt:Countries in South America


text:
Creole State

Etymology
From the Louisiana Creole people.

title: Creole State


text: Category:en:Eswatini

title: Category:en:Eswatini


text: Category:pt:Serbia

title: Category:pt:Serbia


text: Category:sw:Travel

title: Category:sw:Travel


text: Category:pt:Western Sahara

title: Category:pt:Western Sahara


text: Category:pt:Norway

title: Category:pt:Norway


text: Category:pt:Vanuatu

title: Category:pt:Vanuatu


text:
หมายบังคับคดี

Etymology
From.

Noun

 * 1)  writ of execution.

title: หมายบังคับคดี


text: Category:Vanuatu

title: Category:Vanuatu


text: Category:pt:Uzbekistan

title: Category:pt:Uzbekistan


text: Category:pt:Montenegro

title: Category:pt:Montenegro


text: Category:io:Body art

title: Category:io:Body art


text: Category:io:Fashion

title: Category:io:Fashion


text: Category:pt:Ukraine

title: Category:pt:Ukraine


text:
writ of execution

Noun

 * 1)  a court order authorising an officer to carry a judgment into execution.
 * 2)  a court order authorising an officer to seize and sell the judgment debtor's property in order to pay his judgment debt.

title: writ of execution


text: Category:pt:Moldova

title: Category:pt:Moldova


text: Category:gsw:Poultry

title: Category:gsw:Poultry


text: Category:gsw:Birds

title: Category:gsw:Birds


text: Category:gsw:Livestock

title: Category:gsw:Livestock


text: Category:gsw:Agriculture

title: Category:gsw:Agriculture


text: Category:gsw:Applied sciences

title: Category:gsw:Applied sciences


text: Category:pt:Uganda

title: Category:pt:Uganda


text: Category:pt:Turkmenistan

title: Category:pt:Turkmenistan


text: Category:pt:Krais of Russia

title: Category:pt:Krais of Russia


text: Category:pt:Turkey

title: Category:pt:Turkey


text: Category:pt:Guinea-Bissau

title: Category:pt:Guinea-Bissau


text: Category:urj-fin-pro:Watercraft

title: Category:urj-fin-pro:Watercraft


text: Category:urj-fin-pro:Nautical

title: Category:urj-fin-pro:Nautical


text: Category:pt:Tunisia

title: Category:pt:Tunisia


text: Category:pt:Democratic Republic of the Congo


text: Category:pt:Transnistria

title: Category:pt:Transnistria


text: Category:es:Tennessee, USA

title: Category:es:Tennessee, USA


text: Category:pt:Tajikistan

title: Category:pt:Tajikistan


text: Category:pt:States of Australia

title: Category:pt:States of Australia


text: Category:zh:Chess

title: Category:zh:Chess


text: Category:zh:Board games

title: Category:zh:Board games


text: Category:az:Occupations

title: Category:az:Occupations


text:
cup shake

Noun

 * 1) A shake or fissure between the annual rings of a tree, most often found near the roots.

title: cup shake


text: cup shakes

title: cup shakes


text: Category:vot:War

title: Category:vot:War


text: Category:vot:Violence

title: Category:vot:Violence


text: Category:pt:Republics of Russia

title: Category:pt:Republics of Russia


text: Category:pt:Afghanistan

title: Category:pt:Afghanistan


text: Category:vot:Female animals

title: Category:vot:Female animals


text: Category:oge:Bodily fluids

title: Category:oge:Bodily fluids


text: Category:oge:Body

title: Category:oge:Body


text: Category:oge:Liquids

title: Category:oge:Liquids


text:
cussedly

Adverb

 * 1)  accursedly; damnably

title: cussedly


text:
cyclonoscope

Noun

 * 1) An apparatus to assist in locating the centre of a cyclone.

title: cyclonoscope


text: Category:Eastern Min prefixes

title: Category:Eastern Min prefixes


text: cyclonoscopes

title: cyclonoscopes


text: Category:Swedish terms derived from Phoenician


text: cymoscopes

title: cymoscopes


text: Category:Swedish terms derived from Middle Dutch


text: Category:Portuguese terms derived from Caló


text: Category:Portuguese terms derived from mixed languages


text: Category:English terms derived from Washo


text: Category:Washo language

title: Category:Washo language


text: Category:Terms derived from Washo

title: Category:Terms derived from Washo


text: Category:Thai terms derived from Arabic languages


text: Category:Thai terms derived from Central Semitic languages


text:
User talk:69.244.190.52

Please refrain from making test edits in Wiktionary articles even if your ultimate intention is to fix them. Such edits appear to be vandalism and have been reverted. If you would like to experiment again, please use the sandbox. Thanks. Dustin V. S. (talk) 21:17, 29 March 2015 (UTC)

title: User talk:69.244.190.52


text: Category:Thai terms derived from West Semitic languages


text: Category:Thai terms derived from Semitic languages


text: Category:Thai terms derived from Afroasiatic languages


text:
איזו

Determiner

 * 1) What, which; used in forming questions.
 * 2) What, which; used in forming interrogative content clauses.
 * 3) What; used in forming exclamations.
 * 1) What, which; used in forming interrogative content clauses.
 * 2) What; used in forming exclamations.
 * 1) What; used in forming exclamations.
 * 1) What; used in forming exclamations.

Usage notes

 * See usage notes at.

title: איזו


text:
istrumento

Noun

 * 1) a public act drawn up by a notary
 * 1) a public act drawn up by a notary

title: istrumento


text: Category:Miyako terms derived from Japonic languages


text: Category:Miyako terms derived from other languages


text: Category:Miyako terms by etymology

title: Category:Miyako terms by etymology


text: Category:Votic terms derived from Finnish


text: Category:Ido terms derived from Gaulish

title: Category:Ido terms derived from Gaulish


text: Category:Ido terms derived from Celtic languages


text: Category:Proto-Finnic terms derived from Proto-Slavic


text: Category:Proto-Finnic terms derived from Slavic languages


text: Category:Sãotomense terms derived from Kimbundu


text: Category:Sãotomense terms derived from Bantu languages


text: Category:Sãotomense terms derived from Bantoid languages


text: Category:Sãotomense terms derived from Benue-Congo languages


text: Category:Sãotomense terms derived from Volta-Congo languages


text: Category:Sãotomense terms derived from Atlantic-Congo languages


text: Category:Sãotomense terms derived from Niger-Congo languages


text: Category:Sãotomense terms derived from Edo


text: Category:Sãotomense terms derived from Edoid languages


text: Category:Sãotomense terms derived from Volta-Niger languages


text: Category:Principense verbs

title: Category:Principense verbs


text:
User talk:98.221.218.229

Please refrain from making test edits in Wiktionary articles even if your ultimate intention is to fix them. Such edits appear to be vandalism and have been reverted. If you would like to experiment again, please use the sandbox. Thanks. Dustin V. S. (talk) 21:24, 29 March 2015 (UTC)

title: User talk:98.221.218.229


text:
nordre

Etymology
From,.

Adjective

 * 1) northern

Etymology
From,.

Adjective

 * 1) northern

title: nordre


text:
Eddy kite

Etymology
After William A. Eddy, American kite expert.

Noun

 * 1) A quadrilateral tailless kite with convex surfaces exposed to the wind, used in a series of meteorological experiments.

title: Eddy kite


text: Eddy kites

title: Eddy kites


text: Malay kite

title: Malay kite


text: Malay kites

title: Malay kites


text: 年长

title: 年长


text: 하르툼

title: 하르툼


text: 루안다

title: 루안다


text: svømmende

title: svømmende


text:
dry brushing

Noun

 * 1)  A painting technique that involves stroking lightly with a minimally loaded brush to create a textured look.
 * 2) A skincare treatment that consists of scrubbing dry skin with a hard bristled brush.
 * 1) A skincare treatment that consists of scrubbing dry skin with a hard bristled brush.

Synonyms

 * : drybrush

title: dry brushing


text: 브라자빌

title: 브라자빌


text:
ブラザヴィル

Etymology
From.

title: ブラザヴィル


text: Dyson shell

title: Dyson shell


text: Dyson shells

title: Dyson shells


text: 가보로네

title: 가보로네


text: ガボローネ

title: ガボローネ


text:
Dyson swarm

Noun

 * 1)  A system of movable, independent satellites that as a whole compose a Dyson sphere.

title: Dyson swarm


text:
drybrush

Noun

 * 1)  A form of brushwork that involves stroking lightly with a minimally loaded brush to create a textured look.

title: drybrush


text: Dyson swarms

title: Dyson swarms


text: 알제

title: 알제


text: 안타나나리보

title: 안타나나리보


text: 塔那那利佛

title: 塔那那利佛


text: 安塔那那利佛

title: 安塔那那利佛


text:
sugekopp

Etymology
From.

Noun

 * 1) a suction cup

Etymology
From.

Noun

 * 1) a suction cup

title: sugekopp


text:
들치기

Etymology
.

Noun

 * 1) shoplifting
 * 2) shoplifter

title: 들치기


text: sugekoppen

title: sugekoppen


text: sugekopper

title: sugekopper


text: sugekoppene

title: sugekoppene


text: sugekoppar

title: sugekoppar


text:
sotaorpo

Noun

 * 1) warphan one who has lost their parents in war

title: sotaorpo


text: sugekoppane

title: sugekoppane


text:
lethetic

Etymology
Ultimately from.

Adjective

 * 1) Failing to mirror reality, purely escapist or nonsensical.

title: lethetic


text:
Citations:homogender

Adjective: "involving people with the same gender identity"

 * 1997, Judith L. On, "Hard Work, Hard Lovin', Hard Times, Hardly Worth It: Care of Working-Class Men", in The Care of Men (eds. Christie Cozad Neuger & James Newton Poling), Abingdon Press (1997), ISBN 9780687014514, unnumbered pages:
 * All three settings—the shop, the military, and the world of team sports—have been homogender worlds of cultural masculinity, with much resistance to changing that fact.
 * 2007, Sharyn Graham Davies, Challenging Gender Norms: Five Genders Among Bugis in Indonesia, Thomson Wadsworth (2007), ISBN 9780495092803, page 26:
 * Same-sex heterogender relationships are more openly acknowledged in Bugis society than same-sex homogender relationships. I use the phrase same-sex heterogender relationship here to describe a couple where both individuals are either male or female but where each of the respective partners is of a different gender, such as a relationship between a calalai and a woman.
 * 2007, Charlene E. Makley, The Violence of Liberation: Gender and Tibetan Buddhist Revival in Post-Mao China, University of California Press (2007), ISBN 9780520250598, page 19:
 * It was in the subtle sociolinguistic cues and gestures associated with Labrang Tibetan femininity I gradually took on in encounters, such as the way I came to talk and think about my "husband"–feeling extremely uncomfortable with public displays of heterogender affection, yet learning to participate in and expect the micropractices of bodily touch signifying homogender affection.
 * 2008, Deborah Shamoon, "Situating the Shōjo in Shōjo Manga: Teenage Girls, Romance Comics, and Contemporary Japanese Culture", in Japanese Visual Culture (ed. Mark W. MacWilliams), M. E. Sharpe (2008), ISBN 9780765633088, page 142:
 * The appearance of male characters in shōjo manga in the 1970s did not reconcile girls' romantic fantasies with patriarchal society, but as in the Takarazuka Revue, domesticated the male body within the homogender world of shōjo culture.
 * 2008, Merle B. Turner, Friendship, Xlibris (2008), ISBN 9781462810338, page 20:
 * Not all friendships are homogender, as it were, nor within the same class or age group.
 * 2014, Serena Nanda, Gender Diversity: Crosscultural Variations, Second Edition, Waveland Press (2014), ISBN 9781478615460, page 17:
 * In a multiple gender system the partners would be of the same sex but different genders, and homogender, rather than homosexual, practices bore the brunt of negative cultural sanctions (as is true today, for example, in contemporary Indonesia).

title: Citations:homogender


text:
повидло

Etymology
.

Noun

 * 1) jam, marmalade, fruit butter, fruit paste

title: повидло


text:
homogender

Adjective

 * 1) Involving people with the same gender.

title: homogender


text:
предместье

Etymology
.

Noun

 * 1) suburb, outskirts, faubourg an outlying part of a city or town

title: предместье


text: 아크라

title: 아크라


text: 바마코

title: 바마코


text: 방기

title: 방기


text: 반줄

title: 반줄


text: 비사우

title: 비사우


text:
ビサウ

Etymology
Borrowed from.

title: ビサウ


text: 블룸폰테인

title: 블룸폰테인


text:
heterogender

Adjective

 * 1) Involving people with different genders.

title: heterogender


text: 부줌부라

title: 부줌부라


text:
lead climbing

Noun

 * 1)  A climbing technique, in which the climber places anchors while ascending a rock.

title: lead climbing


text: niwozh

title: niwozh


text: jiwozh

title: jiwozh


text: wohhozh

title: wohhozh


text: ブジュンブラ

title: ブジュンブラ


text: 布松布拉

title: 布松布拉


text: 케이프타운

title: 케이프타운


text: 科納克里

title: 科納克里


text: 科纳克里

title: 科纳克里


text: 코나크리

title: 코나크리


text: コナクリ

title: コナクリ


text: 다카르

title: 다카르


text:
lead climb

Verb

 * 1)  To climb by placing anchors while ascending a rock.

title: lead climb


text: lead climbs

title: lead climbs


text: lead climbed

title: lead climbed


text:
lead climber

Noun

 * 1)  One who climbs with the use of anchors.

title: lead climber


text: lead climbers

title: lead climbers


text:
öljykamiina

Noun

 * 1) oil stove stove which uses heating oil or kerosene as fuel

title: öljykamiina


text:
преминува

Verb

 * 1)  to pass, cross (e.g. a street)

title: преминува


text: Category:wau:Colors

title: Category:wau:Colors


text:
근교

Noun

 * 1) suburb; outlying area; outskirts

title: 근교


text:
교외

Noun

 * 1) suburb; outskirts

title: 교외


text:
tarnished plant bug

Noun

 * 1) A plant bug,, known as a very serious pest on a wide variety of crops throughout North America.

Translations

 * Occitan:, guiraud pudent

title: tarnished plant bug


text: tarnished plant bugs

title: tarnished plant bugs


text: Citations:Grand Sophy

title: Citations:Grand Sophy


text:
刻板印象

Noun

 * 1) stereotype

title: 刻板印象


text:
生物降解

Noun

 * 1) biodegradation

title: 生物降解


text:
降解

Verb

 * 1) to degrade; to decompose; to break down; to deteriorate chemically

title: 降解


text:
chowany

Etymology
From.

Noun

 * 1)  hide and seek

title: chowany


text:
能者多勞

Phrase

 * 1) able men are always busy

title: 能者多勞


text:
古生物學

Noun

 * 1) paleontology; paleobiology

Noun

 * : paleontology

title: 古生物學


text: 夏爾迦

title: 夏爾迦


text:
奧古斯塔斯

Proper noun

 * 1) Augustus

title: 奧古斯塔斯


text: 新斯科细亚

title: 新斯科细亚


text:
гуашь

Etymology
Borrowed from, from.

Noun

 * 1)  gouache

Etymology
.

Noun

 * 1)  gouache

title: гуашь


text:
kto rano wstaje, temu Pan Bóg daje

Etymology
Rhyme, lit. 'to whom wakes up early, the Lord provides'. Compare 🇨🇬.

Proverb

 * 1)  early to bed, early to rise, makes a man healthy, wealthy and wise, the early bird gets the worm

title: kto rano wstaje, temu Pan Bóg daje


text:
古生物

Noun

 * 1) paleo-organism

title: 古生物


text:
Reconstruction:Proto-Slavic/sekyra

Etymology
Cognate with 🇨🇬 and 🇨🇬. Probably not related to 🇨🇬 which can have various other relations like to the frequent root related to locking, blocking (🇨🇬 and loanwords and ).

Noun

 * 1)  axe

Descendants

 * East Slavic:
 * South Slavic:
 * West Slavic:
 * Bohemian :
 * Sorbian:
 * South Slavic:
 * West Slavic:
 * Bohemian :
 * Sorbian:
 * South Slavic:
 * West Slavic:
 * Bohemian :
 * Sorbian:
 * West Slavic:
 * Bohemian :
 * Sorbian:
 * West Slavic:
 * Bohemian :
 * Sorbian:
 * West Slavic:
 * Bohemian :
 * Sorbian:
 * Bohemian :
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:

title: Reconstruction:Proto-Slavic/sekyra


text:
性急

Adjective

 * 1) impatient; hot-tempered; hasty; impetuous

Adjective

 * 1) brash, impatient

title: 性急


text: Citations:nos-

title: Citations:nos-


text:
eejo

Noun

 * 1) soot
 * 2) sooty color, dusky, charcoal gray, nearly black
 * Irixulakume eu whun, a-MU-naun wiu. A-MU-naun whun... Itsa kala onu katiwhun... Etsunajatawinejo yiu. Iyawi uleitaku wi, ah kaliwhun, Irixulakume. Iyawi uleitaku wi. Iyawi uleitaku wi. Onai hiya we, onai hiya we. Onumanaitsa eejowehene yiu. Eejo-TA amunaun. Tueneu, salaleneu amakua. Sukuti wasityuene okupwi eu — Tum! — iyene okupwi eu. Eh, onai ha pai nananaun. Eh, onai ahojokajotakonehene amunaun. Au ha wi... Kuyekuyejukuma —
 * Sityapawonejo?
 * Sityapawonejo. Kaw! — Salaleneu inama ha. Eh, onai ... Ah, eejotai Kuyekuyejukuma... Itsenu pata munti-TI-hene ti kata kaliwhun, Kuyekuyeju, Kuyekuyejuneju wi whun. Munto—
 * Eejo ou wiu?
 * Eejo ou wiu.
 * [Storyteller:] Irixulakuma (Blue Cotinga Bird) was indeed a chief, [he] was. [The] chief of [his] village. [He had] this many wives [indicates four]. So [one day] he went wandering. He went to his manioc gardens, that one did, Blue Cotinga Bird did. He went to his manioc gardens, he went to his manioc gardens. [He walked some distance to his gardens.] He took his time there, rubbing charcoal on his body [to make himself handsome]. [At last the] chief was nothing but charcoal [covered with charcoal]. [He] returned [home] and reclined in his hammock. [His wife,] Sukuti (Parakeet Woman), jumped eagerly into the hammock beside him — Tum! — [went the hammock strings as] she climbed in beside him. Those two remained there for some time. [The] chief rolled in the hammock with her; they tickled and teased and fondled each other. When they were finished, Parakeet woman got up, and Kuyekuyejukuma (Dusky Parrot Woman) —
 * [Listener:] Took her turn?
 * [Storyteller:] She took her turn with him. Kau! [the hammock creaked as the other wife entered the hammock]. They took their time together. At last, Dusky Parrot Woman was nothing but charcoal [she was covered was covered with charcoal from her husband's body]. As a result, all dusky and grey was the body of Kuyekuyeju, of that Dusky Parrot Woman. [Her skin was] dusky –
 * [Listener:] From the charcoal?
 * [Storyteller:] From the charcoal.
 * [Storyteller:] From the charcoal.

Usage notes

 * When adorning themselves, Wauja men rub charcoal (often mixed with piqui oil) on their bodies (maka awojotipa, "in order to be handsome"). Contrasting designs in red can be painted on the glistening charcoal base.
 * In this excerpt from the story, the narrator is explaining how the Dusky Parrot (Pionus fuscus) got its dark, muted plumage, unusual for a parrot. In fact, this species does look as if its feathers have been rubbed lightly with soot or charcoal.

title: eejo


text:
蘋果手機

Noun

 * 1) iPhone device

title: 蘋果手機


text: 苹果手机

title: 苹果手机


text:
Template talk:reply to

Broken: Ping
I renamed this template "Reply to" as opposed to "reply to", but it seems to have broken the template to a degree: typing doesn't work anymore. Does anybody know how to fix this? --Joseph Yanchar (User page/Talk page) 15:29, 1 April 2015 (UTC)
 * Yes. I moved it back. Why did you move it? We don't use uppercase in template names unless there's a good reason, and you shouldn't be renaming a widely-used template like this, anyway, without discussing it first. If you really feel it has to be moved, tag it with and use the "+" in the box the template creates to post a request at Requests for moves, merges and splits. Chuck Entz (talk) 03:27, 2 April 2015 (UTC)

title: Template talk:reply to


text:
жилой

Etymology 1
..

Adjective

 * 1) residential relating to a place of personal residence
 * 2) habitable
 * 1) habitable
 * 1) habitable

title: жилой


text:
肉慾

Noun

 * 1) lust; sexual desire

title: 肉慾


text:
肉欲

Noun

 * 1) lust; sexual desire

title: 肉欲