Wiktionary
gdwiktionary
https://gd.wiktionary.org/wiki/Pr%C3%AComh-Dhuilleag
MediaWiki 1.47.0-wmf.13
case-sensitive
Meadhan
Sònraichte
Deasbaireachd
Cleachdaiche
Deasbaireachd a' chleachdaiche
Wiktionary
An deasbaireachd aig Wiktionary
Faidhle
Deasbaireachd an fhaidhle
MediaWiki
Deasbaireachd MediaWiki
Teamplaid
Deasbaireachd na teamplaid
Cobhair
Deasbaireachd na cobharach
Roinn-seòrsa
Deasbaireachd na roinn-seòrsa
TimedText
TimedText talk
Mòideal
Deasbaireachd mòideil
Event
Event talk
Mòideal:labels
828
3767
88693
87399
2026-07-30T19:17:28Z
Altronic
4137
replace english
88693
Scribunto
text/plain
local export = {}
export.lang_specific_data_list_module = "Module:labels/data/lang"
export.lang_specific_data_modules_prefix = "Module:labels/data/lang/"
local load_module = "Module:load"
local parse_utilities_module = "Module:parse utilities"
local string_utilities_module = "Module:string utilities"
local utilities_module = "Module:utilities"
local insert = table.insert
local require_when_needed = require("Module:require when needed")
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local dump = mw.dumpObject
local m_lang_specific_data = mw.loadData(export.lang_specific_data_list_module)
local m_table = require_when_needed("Module:table")
--[==[ intro:
Labels go through several stages of processing to get from the original (raw) label specified in the Wikicode to the
final (formatted) label displayed to the user. The following terminology will help keep things straight:
* The "raw label" is the label specified in the Wikicode.
* The "non-canonical label" is the label extracted from the raw label, used for looking up in the label modules in order
to fetch the associated label data structure and determine the canonical form of the label. Normally this is the same
as the raw label, but it will be different if the raw label is of the form `!<var>label</var>` (e.g. `!Australian`)
`<var>label</var>!<var>display</var>` (e.g. `Southern US!Southern`). The former syntax indicates that the label
should display as-is instead of in its canonical form (which in the example given is `Australia`), and the latter
syntax indicates that the label should display in the form specified after the exclamation point.
* The "canonical label" is the result of applying alias resolution to the non-canonical label. Normally, the
canonical label rather than the non-canonical label is what is shown to the user.
* The "display form of the label" is what is shown to the user, not considering links and HTML that may wrap the
display form to get the formatted form of the label. The display form comes from the `.display` field of the module
label data for the label; if no such field exists in the label data, it is normally the canonical label. However, if
the display override exists (see below), it takes precedence over the `.display` field or canonical label when
determining the display form of the label.
* The "display override", if specified, overrides all other means of determining the display form of the label. It is
specified in two circumstances, i.e. in the `!<var>label</var>` and `<var>label</var>!<var>display</var>` raw label
formats (i.e. in the same cirumstances where the raw label and non-canonical label are different).
* The "formatted form of the label" is the final form of the label shown directly to the user. It generally appears to
the user as the display form of the label, but in the Wikicode, the formatted form may wrap the display form with a
link to Wikipedia, the Wiktionary glossary or another Wiktionary entry, and that link in turn may be wrapped in an
HTML span with a "deprecated" CSS class attached, causing the label to display differently (to indicate that it is
deprecated).
]==]
-- for testing
local force_cat = false
local m_headword_data = mw.loadData("Module:headword/data")
local SUBPAGENAME = m_headword_data.pagename
-- Disable tracking on heavy pages to save time.
local pages_where_tracking_is_disabled = m_headword_data.large_pages
-- Add tracking category for PAGE. The tracking category linked to is [[Wiktionary:Tracking/labels/PAGE]].
-- We also add to [[Wiktionary:Tracking/labels/PAGE/LANGCODE]] and [[Wiktionary:Tracking/labels/PAGE/MODE]] if
-- LANGCODE and/or MODE given.
local function track(page, langcode, mode)
if pages_where_tracking_is_disabled[SUBPAGENAME] then
return true
end
-- avoid including links in pages (may cause error)
page = page:gsub("%[", "("):gsub("%]", ")"):gsub("|", "!")
require("Module:debug/track")("labels/" .. page)
if langcode then
require("Module:debug/track")("labels/" .. page .. "/" .. langcode)
end
if mode then
require("Module:debug/track")("labels/" .. page .. "/" .. mode)
end
-- We don't currently add a tracking label for both langcode and mode to reduce the total number of labels, to
-- save some memory.
return true
end
local function ucfirst(txt)
return mw.getContentLanguage():ucfirst(txt)
end
local mode_to_outer_class = {
["label"] = "usage-label-sense",
["term-label"] = "usage-label-term",
["accent"] = "usage-label-accent",
["form-of"] = "usage-label-form-of",
}
local mode_to_property_prefix = {
["label"] = false,
["term-label"] = false, -- handled specially
["accent"] = "accent_",
["form-of"] = "form_of_",
}
local function validate_mode(mode)
mode = mode or "label"
if not mode_to_outer_class[mode] then
local allowed_values = {}
for key, _ in pairs(mode_to_outer_class) do
insert(allowed_values, "'" .. key .. "'")
end
table.sort(allowed_values)
error(("Invalid value '%s' for `mode`; should be one of %s"):format(mode, table.concat(allowed_values, ", ")))
end
return mode
end
local function getprop(labdata, mode, prop)
local mode_prefix = mode_to_property_prefix[mode]
return mode_prefix and labdata[mode_prefix .. prop] or labdata[prop]
end
local function check_type(label, lang, prop, value, expected_types)
if value == nil or expected_types == nil then
return value
end
if type(expected_types) ~= "table" then
expected_types = {expected_types}
end
local valtype = type(value)
local matches = false
for _, expected_type in ipairs(expected_types) do
if type(expected_type) == "string" then
if valtype == expected_type then
matches = true
break
end
elseif value == expected_type then
matches = true
break
end
end
if not matches then
local function join_untagged_or(elements)
return m_table.serialCommaJoin(elements, {conj = "or", dontTag = true})
end
local quoted_types = {}
local quoted_values = {}
for _, expected_type in ipairs(expected_types) do
if type(expected_type) == "string" then
insert(quoted_types, "'" .. expected_type .. "'")
else
insert(quoted_values, "'" .. dump(expected_type) .. "'")
end
end
local possible_matches = {}
if quoted_types[1] then
insert(possible_matches, ("be of type%s %s"):format(
quoted_types[2] and "s" or "", join_untagged_or(quoted_types)))
end
if quoted_values[1] then
insert(possible_matches, ("have the value%s %s"):format(
quoted_values[2] and "s" or "", join_untagged_or(quoted_values)))
end
error(("Internal error: For label '%s', langcode '%s', property '%s' should %s but is of type '%s' with value %s"):format(
label, lang and lang:getCode() or "UNKNOWN", prop, join_untagged_or(possible_matches), valtype, dump(value)))
end
end
-- HACK! For languages in any of the given families, check the specified-language Wikipedia for appropriate
-- Wikipedia articles for the language in question (esp. useful for obscure etymology-only languages that may not
-- have English articles for them, like many Chinese lects).
local families_to_wikipedia_languages = {
{"zhx", "zh"},
{"sem-arb", "ar"},
}
--[==[
Given language `lang` (a full language, etymology-language or family), fetch a list of Wikimedia languages to check
when converting a Wikidata item to a Wikipedia article. English is always first, followed by the Wikimedia language
code(s) of `lang` if `lang` is a language (which may or may not be the same as `lang`'s Wiktionary code), followed
by the macrolanguage of `lang` for certain languages and families (currently, only languages and families in the Chinese
and Arabic families). If `lang` is nil, only return English. Note that the same code may occur more than once in the
list. This is exported because it's also used by [[Module:category tree/poscatboiler/data/language varieties]].
]==]
function export.get_langs_to_extract_wikipedia_articles_from_wikidata(lang)
local wikipedia_langs = {}
insert(wikipedia_langs, "gd")
if lang then
local article_lang = lang
while article_lang do
if article_lang:hasType("language") then
local wmcodes = article_lang:getWikimediaLanguageCodes()
for _, wmcode in ipairs(wmcodes) do
insert(wikipedia_langs, wmcode)
end
end
article_lang = article_lang:getParent()
end
for _, family_to_wp_lang in ipairs(families_to_wikipedia_languages) do
local family, wp_lang = unpack(family_to_wp_lang)
if lang:inFamily(family) then
insert(wikipedia_langs, wp_lang)
end
end
end
return wikipedia_langs
end
--[==[
Fetch the categories to add to a page, given that the label whose canonical form is `canon_label` with language `lang`
has been seen. `labdata` is the label data structure for `label`, fetched from the appropriate submodule. `mode`
specifies how the label was invoked (see {get_label_info()} for more information). The return value is a list of the
actual categories, unless `for_doc` is specified, in which case the categories returned are marked up for display on a
documentation page. If `for_doc` is given, `lang` may be nil to format the categories in a language-independent fashion;
otherwise, it must be specified. If `category_types` is specified, it should be a set object (i.e. with category types
as keys and {true} as values), and only categories of the specified types will be returned.
]==]
function export.fetch_categories(canon_label, labdata, lang, mode, for_doc, category_types)
local categories = {}
mode = validate_mode(mode)
local langcode, canonical_name
if lang then
langcode = lang:getFullCode()
canonical_name = lang:getFullName()
elseif for_doc then
langcode = "<var>[langcode]</var>"
canonical_name = "<var>[language name]</var>"
else
error("Internal error: Must specify `lang` unless `for_doc` is given")
end
local function labprop(prop, expected_types)
local retval = getprop(labdata, mode, prop)
check_type(canon_label, lang, prop, retval, expected_types)
return retval
end
local empty_list = {}
local function get_cats(cat_type)
if category_types and not category_types[cat_type] then
return empty_list
end
local cats = labprop(cat_type)
if not cats then
return empty_list
end
if type(cats) ~= "table" then
return {cats}
end
return cats
end
local topical_categories = get_cats("topical_categories")
local sense_categories = get_cats("sense_categories")
local pos_categories = get_cats("pos_categories")
local regional_categories = get_cats("regional_categories")
local plain_categories = get_cats("plain_categories")
local function insert_cat(cat, sense_cat)
if for_doc then
cat = "<code>" .. cat .. "</code>"
if sense_cat then
if mode == "term-label" then
cat = cat .. " (using {{tl|tlb}})"
else
cat = cat .. " (using {{tl|lb}} or form-of template)"
end
cat = mw.getCurrentFrame():preprocess(cat)
end
end
insert(categories, cat)
end
for _, cat in ipairs(topical_categories) do
insert_cat(langcode .. ":" .. (cat == true and ucfirst(canon_label) or cat))
end
for _, cat in ipairs(sense_categories) do
if cat == true then
cat = canon_label
end
cat = mode == "term-label" and cat .. " terms" or "terms with " .. cat .. " senses"
insert_cat(canonical_name .. " " .. cat, true)
end
for _, cat in ipairs(pos_categories) do
insert_cat(canonical_name .. " " .. (cat == true and canon_label or cat))
end
for _, cat in ipairs(regional_categories) do
insert_cat((cat == true and ucfirst(canon_label) or cat) .. " " .. canonical_name)
end
for _, cat in ipairs(plain_categories) do
insert_cat(cat == true and ucfirst(canon_label) or cat)
end
return categories
end
--[==[
Return the list of all labels data modules for a label whose language is `lang`. The return value is a list of
module names, with overriding modules earlier in the list (that is, if a label occurs in two modules in the list,
the earlier-listed module takes precedence). If `lang` is nil, only return non-language-specific submodules.
]==]
function export.get_submodules(lang)
local submodules = {
"Module:labels/data",
"Module:labels/data/qualifiers",
"Module:labels/data/regional",
"Module:labels/data/topical",
}
if not lang then
return submodules
end
-- get language-specific labels from data module
local langcode = lang:getFullCode()
if m_lang_specific_data.langs_with_lang_specific_modules[langcode] then
-- prefer per-language label in order to pick subvariety labels over regional ones
insert(submodules, 1, export.lang_specific_data_modules_prefix .. langcode)
end
return submodules
end
--[==[
Return the formatted form of a label `label` (which should be the canonical form of the label; see comment at top),
given (a) the label data structure `labdata` from one of the data modules; (b) the language object `lang` of the
language being processed, or nil for no language; (c) `deprecated` (true if the label is deprecated, otherwise the
deprecation information is taken from `labdata`); (d) `override_display` (if specified, override the display form of the
label with the specified string, instead of any value in `labdata.display` or `labdata.special_display` or the canonical
label in `label` itself); (e) `mode` (same as `data.mode` passed to {get_label_info()}). Returns two values: the
formatted label form and a boolean indicating whether the label is deprecated.
'''NOTE: Under normal circumstances, do not use this.''' Instead, use {get_label_info()}, which searches all the data
modules for a given label and handles other complications.
]==]
function export.format_label(label, labdata, lang, deprecated, override_display, mode)
local formatted_label
mode = validate_mode(mode)
local function labprop(prop, expected_types)
local retval = getprop(labdata, mode, prop)
check_type(label, lang, prop, retval, expected_types)
return retval
end
deprecated = deprecated or labprop("deprecated")
if not override_display and labprop("special_display") then
local function add_language_name(str)
if str == "canonical_name" then
if lang then
return lang:getFullName()
else
return "<code><var>[language name]</var></code>"
end
else
return ""
end
end
formatted_label = labprop("special_display", "string"):gsub("<(.-)>", add_language_name)
else
--[=[
We proceed as follows:
1. The display form comes from either (a) the `override_display` variable if set (this happens when
the user uses a label like '!British'); (b) the `display` property, if set; or (c) the label iself.
2. If the display form contains a link, use it directly and ignore the other display-related settings.
(NOTE: Settings `Wikipedia` and `Wikidata` may still be used on the category page itself, by the
category tree code.)
3. Otherwise, use one of the other display-related settings, in the following order:
`glossary` > `Wiktionary` > `Wikipedia` > `Wikidata`. Specifically:
a. If any of the values is equal to `true`, that is equivalent to specifying a string consisting of
the canonical label.
b. If `glossary` is set, it specifies the anchor in [[Appendix:Glossary]].
c. If `Wiktionary` is set, it specifies an arbitrary Wiktionary page or page + anchor (e.g. a
separate Appendix entry).
d. If `Wikipedia` is set, it specifies an arbitrary Wikipedia article, or a list of such items (in
this case, we select the first one, but the category tree uses all of them).
e. If `Wikidata` is set, it specifies an arbitrary Wikidata item to retrieve a Wikipedia article from,
or a list of such items (in this case, we select the first one, but the category tree uses all of
them). If the item is of the form `wmcode:id`, the Wikipedia article corresponding to `id` in the
`wmcode`-language Wikipedia is fetched if available. Otherwise, the English-language Wikipedia
article corresponding to `id` is retrieved if available, falling back to the Wikimedia language(s)
corresponding to `lang` and then (in certain cases) to the macrolanguage that `lang` is part of.
Note that if `mode` is specified, prefixed properties (e.g. `accent_display` for `mode` == "accent",
`form_display` for `mode` == "form") are checked before the bare equivalent (e.g. `display`).
]=]
local display = override_display or labprop("display", "string") or label
-- There are several 'Foo spelling' labels specially designed for use in the |from= param in
-- {{alternative form of}}, {{standard spelling of}} and the like. Often the display includes the word
-- "spelling" at the end (e.g. if it's defaulted), which is useful when the label is used with {{tl|lb}} or
-- {{tl|tlb}}; but it causes redundancy when used with the form-of templates, which add the word "form",
-- "spelling", "standard spelling", etc. after the label.
if mode == "form-of" then
display = display:gsub(" spelling$", "")
end
if display:find("%[%[") then
formatted_label = display
else
local glossary = labprop("glossary", {"string", true})
local Wiktionary = labprop("Wiktionary", {"string", true})
local Wikipedia = labprop("Wikipedia", {"string", true, "table"})
local Wikidata = labprop("Wikidata", {"string", true, "table"})
if glossary then
local glossary_entry = glossary == true and label or glossary
formatted_label = "[[Appendix:Glossary#" .. glossary_entry .. "|" .. display .. "]]"
elseif Wiktionary then
local Wiktionary_entry = Wiktionary == true and label or Wiktionary
if Wiktionary == display then
formatted_label = "[[" .. display .. "]]"
else
formatted_label = "[[" .. Wiktionary_entry .. "|" .. display .. "]]"
end
elseif Wikipedia then
if type(Wikipedia) == "table" then
Wikipedia = Wikipedia[1]
end
local Wikipedia_entry = Wikipedia == true and label or Wikipedia
formatted_label = "[[w:" .. Wikipedia_entry .. "|" .. display .. "]]"
elseif Wikidata then
if not mw.wikibase then
error(("Unable to retrieve data from Wikidata ID for label '%s'; `mw.wikibase` not defined"
):format(label))
end
local function make_formatted_label(wmcode, id)
local article = mw.wikibase.sitelink(id, wmcode .. "wiki")
if article then
local link = wmcode == "gd" and "w:" .. article or "w:" .. wmcode .. ":" .. article
return ("[[%s|%s]]"):format(link, display)
else
return nil
end
end
if type(Wikidata) == "table" then
Wikidata = Wikidata[1]
end
local wmcode, id = Wikidata:match("^(.*):(.*)$")
if wmcode then
formatted_label = make_formatted_label(wmcode, id)
else
local langs_to_check = export.get_langs_to_extract_wikipedia_articles_from_wikidata(lang)
for _, wmcode in ipairs(langs_to_check) do
formatted_label = make_formatted_label(wmcode, Wikidata)
if formatted_label then
break
end
end
end
formatted_label = formatted_label or display
else
formatted_label = display
end
end
end
if deprecated then
formatted_label = '<span class="deprecated-label">' .. formatted_label .. '</span>'
end
return formatted_label, deprecated
end
--[==[
Return information on a label. On input `data` is an object with the following fields:
* `label`: The raw label to return information on.
* `lang`: The language of the label. Must be specified unless `for_doc` is given.
* `mode`: How the label was invoked. One of the following:
** {nil} or {"label"}: invoked through {{tl|lb}} or another template whose labels in the same fashion, e.g.
{{tl|alt}}, {{tl|quote}} or {{tl|syn}};
** {"term-label"}: invoked through {{tl|tlb}};
** {"accent"}: invoked through {{tl|a}} or the {{para|a}} or {{para|aa}} parameters of other pronunciation templates,
such as {{tl|IPA}}, {{tl|rhymes}} or {{tl|homophones}};
** {"form-of"}: invoked through {{tl|alt form}}, {{tl|standard spelling of}} or other form-of template.
This changes the display and/or categorization of a minority of labels. (The majority work the same for all modes.)
* `for_doc`: Data is being fetched for documentation purposes. This causes the raw categories returned in
`categories` to be formatted for documentation display.
* `nocat`: If true, don't add the label to any categories.
* `force_cat`: Force adding categories even in namespaces that normally exclude them (e.g. userspace and discussion
pages).
* `notrack`: Disable all tracking for this label.
* `sort`: Sort key for categorization.
* `already_seen`: An object used to track labels already seen, so they aren't displayed twice. Tracking is according
to the display form of the label, so if two labels have the same display form, the second one won't be displayed
(but its categories will still be added). If `already_seen` is {nil}, this tracking doesn't happen.
The return value is an object with the following fields:
* `raw_text`: If specified, the object does not describe a label but simply raw text surrounding labels. This occurs
when double angle bracket (<<...>>) notation is used. {get_label_info()} does not currently return objects with this
field set, but {process_raw_labels()} does. The value is {"begin"} (this is the first raw text portion derived from
a double angle bracket spec, provided there are at least two raw text portions); {"end"} (this is the last raw text
portion derived from a double angle bracket spec, provided there are at least two portions); {"middle"} (this is
neither the first nor the last raw text portion); or {"only"} (this is a raw text portion standing by itself). The
particular value determines the handling of commas and spaces on one or both sides of the raw text. If this field is
specified, only the `label` field (containing the actual raw text) and the `category` field (containing an empty list)
are set; all other fields are {nil}.
* `raw_label`: The raw label that was passed in.
* `non_canonical`: The label prior to canonicalization (i.e. alias resolution). Usually this is the same as `raw_label`,
but if the raw label was preceded by an exclamation point (meaning "display the raw label as-is"), this field will
contain the label stripped of the exclamation point, and if the raw label is of the form
`<var>label</var>!<var>display</var>` (meaning "display the label in the specified form"), this field will contain the
label before the exclamation point.
* `canonical`: If the label in `non_canonical` is an alias, this contains the canonical name of the label; otherwise it
will be {nil}.
* `override_display`: If specified, this contains a string that overrides the normal display form of the label. The
display form of a label is the `.display` field of the label data if present, and otherwise is normally the canonical
form of the label (i.e. after alias resolution). (This is not the same as the formatted form of the label, found in
`label`, which is the final form shown to the user and includes links to Wikipedia, the glossary, etc. as well as an
HTML wrapper if the label is deprecated.) If `override_display` is specified, however, this is used in place of the
normal display form of the label. This currently happens in two circumstances: (1) the label was preceded by ! to
indicate that the raw label should be displayed rather than the canonical form; (2) the label was given in the form
`<var>label</var>!<var>display</var>` (meaning "display the label in the specified `<var>display</var>` form").
* `label`: The formatted form of the label. This is what is actually shown to the user. If the label is recognized
(found in some module), this will typically be in the form of a link.
* `categories`: A list of the categories to add the label to; an empty list if `nocat` was specified.
* `formatted_categories`: A string containing the formatted categories; {nil} if `nocat` or `for_doc` was specified,
or if `categories` is empty. Currently will be an empty string if there are categories to format but the namespace is
one that normally excludes categories (e.g. userspace and discussion pages), and `force_cat` isn't specified.
* `deprecated`: True if the label is deprecated.
* `recognized`: If true, the label was found in some module.
* `data`: The data structure for the label, as fetched from the label modules. For unrecognized labels, this will
be an empty object.
]==]
function export.get_label_info(data)
if not data.label then
error("`data` must now be an object containing the params")
end
local mode = validate_mode(data.mode)
local ret = {categories = {}}
local label = data.label
local raw_label = label
ret.raw_label = raw_label
local override_display
if label:find("^!") then
label = label:gsub("^!", "")
override_display = label
elseif label:find("![^%s]") then
label, override_display = label:match("^(.-)!([^%s].*)$")
if not label then
error(("Internal error: This Lua pattern should never fail to match for label '%s'"):format(raw_label))
end
end
local non_canonical = label
ret.non_canonical = non_canonical
local deprecated = false
local labdata
local submodule
local data_langcode = data.lang and data.lang:getCode() or nil
local submodules_to_check = export.get_submodules(data.lang)
for _, submodule_to_check in ipairs(submodules_to_check) do
submodule = mw.loadData(submodule_to_check)
local this_labdata = submodule[label]
local resolved_label
if type(this_labdata) == "string" then
resolved_label = this_labdata
this_labdata = submodule[this_labdata]
if not this_labdata then
error(("Internal error: Label alias '%s' points to '%s', which is undefined in module [[%s]]"):format(
label, resolved_label, submodule_to_check))
end
if type(this_labdata) == "string" then
error(("Internal error: Label alias '%s' points to '%s', which is also an alias (of '%s') in module [[%s]]"):format(
label, resolved_label, this_labdata, submodule_to_check))
end
end
if this_labdata then
-- Make sure either there's no lang restriction, or we're processing lang-independent, or our language
-- is among the listed languages. Otherwise, continue processing (which could conceivably pick up a
-- lang-appropriate version of the label in another label data module).
local lablangs = getprop(this_labdata, mode, "langs")
if not lablangs or not data_langcode then
labdata = this_labdata
label = resolved_label or label
break
end
local lang_in_list = false
for _, langcode in ipairs(lablangs) do
if langcode == data_langcode then
lang_in_list = true
break
end
end
if lang_in_list then
labdata = this_labdata
label = resolved_label or label
break
elseif not data.notrack then
-- Track use of a label that fails the lang restriction.
-- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/wrong-lang-label]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/wrong-lang-label/LANGCODE]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/wrong-lang-label/LABEL]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/wrong-lang-label/LABEL/LANGCODE]]
track("wrong-lang-label", data_langcode)
track("wrong-lang-label/" .. label, data_langcode)
if resolved_label then
track("wrong-lang-label/" .. resolved_label, data_langcode)
end
end
end
end
if labdata then
ret.recognized = true
else
labdata = {}
ret.recognized = false
end
local function labprop(prop)
return getprop(labdata, mode, prop)
end
if labprop("deprecated") then
deprecated = true
end
if label ~= non_canonical then
-- Note that this is an alias and store the canonical version.
ret.canonical = label
end
if not data.notrack then -- labprop("track") then -- track all labels now
-- Track label (after converting aliases to canonical form; but also track raw label (alias) if different
-- from canonical label).
-- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/label/LABEL]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/label/LABEL/LANGCODE]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/label/LABEL/MODE]]
track("label/" .. label, data_langcode, mode)
if label ~= non_canonical then
track("label/" .. non_canonical, data_langcode, mode)
end
end
local formatted_label
formatted_label, deprecated = export.format_label(label, labdata, data.lang, deprecated, override_display, mode)
ret.deprecated = deprecated
if deprecated then
if not data.nocat then
local depcat = "Entries with deprecated labels"
if data.for_doc then
depcat = "<code>" .. depcat .. "</code>"
end
insert(ret.categories, depcat)
end
end
local label_for_already_seen =
(labprop("topical_categories") or labprop("regional_categories")
or labprop("plain_categories") or labprop("pos_categories")
or labprop("sense_categories")) and formatted_label
or nil
-- Track label text. If label text was previously used, don't show it, but include the categories.
-- For an example, see [[hypocretin]].
if data.already_seen and data.already_seen[label_for_already_seen] then
ret.label = ""
else
if formatted_label:find("{") then
formatted_label = mw.getCurrentFrame():preprocess(formatted_label)
end
ret.label = formatted_label
end
if data.nocat then
-- do nothing
else
local cats = export.fetch_categories(label, labdata, data.lang, mode, data.for_doc)
for _, cat in ipairs(cats) do
insert(ret.categories, cat)
end
if not ret.categories[1] or data.for_doc then
-- Don't try to format categories if we're doing this for documentation ({{label/doc}}), because there
-- will be HTML in the categories.
-- do nothing
else
ret.formatted_categories = require(utilities_module).format_categories(ret.categories, data.lang,
data.sort, nil, force_cat or data.force_cat)
end
end
ret.data = labdata
if label_for_already_seen and data.already_seen then
data.already_seen[label_for_already_seen] = true
end
return ret
end
--[==[
Split a string containing comma-separated raw labels into the individual labels. This will not split on a comma
followed by whitespace, and it will not split inside of matched <...> or [...]. The code is written to be efficient, so
that it does not load modules (e.g. [[Module:parse utilities]]) unnecessarily.
]==]
function export.split_labels_on_comma(term)
if term:find("[%[<]") then
-- Do it the "hard way". We don't want to split anything inside of <...> or <<...>> even if there are commas
-- inside of the angle brackets. For good measure we do the same for [...] and [[...]]. We first parse balanced
-- segment runs involving either [...] or <...>. Then we split alternating runs on comma (but not on
-- comma+whitespace). Then we rejoin the split runs. For example, given the following:
-- "regional,older <<non-rhotic,and,non-hoarse-horse>> speakers", the first call to
-- parse_multi_delimiter_balanced_segment_run() produces
--
-- {"regional,older ", "<<non-rhotic,and,non-hoarse-horse>>", " speakers"}
--
-- After calling split_alternating_runs_on_comma(), we get the following:
--
-- {{"regional"}, {"older ", "<<non-rhotic,and,non-hoarse-horse>>", " speakers"}}
--
-- After rejoining each group, we get:
--
-- {"regional", "older <<non-rhotic,and,non-hoarse-horse>> speakers"}
--
-- which is the desired output. When processing the second "label" string, the code in process_raw_labels()
-- will do a similar process to this to pull out the labels inside of the <<...>> notation.
local put = require(parse_utilities_module)
local segments = put.parse_multi_delimiter_balanced_segment_run(term, {{"<", ">"}, {"[", "]"}})
-- This won't split on comma+whitespace.
local comma_separated_groups = put.split_alternating_runs_on_comma(segments)
for i, group in ipairs(comma_separated_groups) do
comma_separated_groups[i] = table.concat(group)
end
return comma_separated_groups
elseif term:find(",%s") then
-- This won't split on comma+whitespace.
return require(parse_utilities_module).split_on_comma(term)
elseif term:find(",") then
return require(string_utilities_module).split(term, ",")
else
return {term}
end
end
--[==[
Return a list of objects corresponding to a set of raw labels. Each object returned is of the format returned by
{get_label_info()}. This is similar to looping over the labels and calling {get_label_info()} on each one, but it also
correctly handles embedded double angle bracket specs <<...>> found in the labels. (In such a case, there will be more
objects returned than raw labels passed in.) On input, `data` is an object with the following fields:
* `labels`: The list of labels to process.
* `lang`: The language of the labels. Must be specified.
* `mode`: How the label was invoked; see {get_label_info()} for more information.
* `nocat`: If true, don't add the label to any categories.
* `force_cat`: Force adding categories even in namespaces that normally exclude them (e.g. userspace and discussion
pages).
* `notrack`: Disable all tracking for this label.
* `sort`: Sort key for categorization.
* `already_seen`: An object used to track labels already seen, so they aren't displayed twice. Tracking is according
to the display form of the label, so if two labels have the same display form, the second one won't be displayed
(but its categories will still be added). If `already_seen` is {nil}, this tracking doesn't happen.
* `ok_to_destructively_modify`: If set, the `data` structure will be destructively modified in the process of this
function running.
]==]
function export.process_raw_labels(data)
local label_infos = {}
if not data.ok_to_destructively_modify then
data = m_table.shallowCopy(data)
data.ok_to_destructively_modify = true
end
local function get_info_and_insert(label)
-- Reuse this structure to save memory.
data.label = label
insert(label_infos, export.get_label_info(data))
end
for _, label in ipairs(data.labels) do
if label:find("<<") then
local segments = require(string_utilities_module).split(label, "<<(.-)>>")
for i, segment in ipairs(segments) do
if i % 2 == 1 then
local raw_text_type = i == 1 and "begin" or i == #segments and "end" or "middle"
insert(label_infos, {raw_text = raw_text_type, label = segment, categories = {}})
else
local segment_labels = export.split_labels_on_comma(segment)
for _, segment_label in ipairs(segment_labels) do
get_info_and_insert(segment_label)
end
end
end
else
get_info_and_insert(label)
end
end
return label_infos
end
--[==[
Split a comma-separated string of raw labels and process each label to get a list of objects suitable for passing to
{format_processed_labels()}. Each object returned is of the format returned by {get_label_info()}. This is equivalent to
calling {split_labels_on_comma()} followed by {process_raw_labels()}. On input, `data` is an object with the following
fields:
* `labels`: The string containing the raw comma-separated labels.
* `lang`: The language of the labels. Must be specified.
* `mode`: How the label was invoked; see {get_label_info()} for more information.
* `nocat`: If true, don't add the label to any categories.
* `force_cat`: Force adding categories even in namespaces that normally exclude them (e.g. userspace and discussion
pages).
* `notrack`: Disable all tracking for this label.
* `sort`: Sort key for categorization.
* `already_seen`: An object used to track labels already seen, so they aren't displayed twice. Tracking is according
to the display form of the label, so if two labels have the same display form, the second one won't be displayed
(but its categories will still be added). If `already_seen` is {nil}, this tracking doesn't happen.
* `ok_to_destructively_modify`: If set, the `data` structure will be destructively modified in the process of this
function running.
]==]
function export.split_and_process_raw_labels(data)
if not data.ok_to_destructively_modify then
data = m_table.shallowCopy(data)
data.ok_to_destructively_modify = true
end
data.labels = export.split_labels_on_comma(data.labels)
return export.process_raw_labels(data)
end
--[==[
Format one or more already-processed labels for display and categorization. "Already-processed" means that
{get_label_info()} or {process_raw_labels()} has been called on the raw labels to convert them into objects containing
information on how to display and categorize the labels. This is a lower-level alternative to {show_labels()} and is
meant for modules such as [[Module:alternative forms]], [[Module:quote]] and [[Module:etymology/templates/descendant]]
that support displaying labels along with some other information.
On input `data` is an object with the following fields:
* `labels`: List of the label objects to format, in the format returned by {get_label_info()}.
* `lang`: The language of the labels.
* `open`: Open bracket or parenthesis to display before the concatenated labels. If specified, it is wrapped in the
{"ib-brac"} and {"label-brac"} CSS classes. If {nil} or {false}, no open bracket is displayed.
* `close`: Close bracket or parenthesis to display after the concatenated labels. If specified, it is wrapped in the
{"ib-brac"} and {"label-brac"} CSS classes. If {nil} or {false}, no close bracket is displayed.
* `no_ib_content`: By default, the concatenated formatted labels inside of the open/close brackets are wrapped in the
{"ib-content"} and {"label-content"} CSS classes. Specify this to suppress this wrapping.
* `raw`: Suppress all CSS wrapping of content, including open/close parentheses, content and comma delimiters (which
are normally wrapped in {"ib-comma"} and {"label-comma"} CSS classes).
* `ok_to_destructively_modify`: If set, the `data` structure, and the `data.labels` table inside of it, will be
destructively modified in the process of this function running.
* `split_output`: If not given, the return value is a concatenation of the formatted concatenated labels and formatted
categories. Otherwise, two values are returned: the formatted pronunciation and the categories. If `split_output` is
the value {"raw"}, the categories are returned in list form, where the list elements are strings f the form suitable
for passing to {format_categories()} in [[Module:utilities]]. If `split_output` is any other value besides {nil}, the
categories are returned as a pre-formatted concatenated string.
The return value (or the first return value, if `split_output` is given) is a string containing the contenated labels,
optionally surrounded by open/close brackets or parentheses. Normally, labels are separated by comma-space sequences,
but this may be suppressed for certain labels. If `nocat` wasn't given to {get_label_info()} or {process_raw_labels()},
and `split_output` wasn't given, the label objects will contain formatted categories in them, which will be inserted
into the returned text. (Use `split_output` if you need the categories returned separately.) The concatenated text
inside of the open/close brackets is normally wrapped in the {"ib-content"} CSS class, but this can be suppressed, as
mentioned above.
]==]
function export.format_processed_labels(data)
if not data.labels then
error("`data` must now be an object containing the params")
end
if not data.ok_to_destructively_modify then
data = m_table.shallowCopy(data)
data.labels = m_table.deepCopy(data.labels)
data.ok_to_destructively_modify = true
end
local labels = data.labels
if not labels[1] then
error("You must specify at least one label.")
end
-- Show the labels
local omit_preComma = false
local omit_postComma = true
local omit_preSpace = false
local omit_postSpace = true
for _, label in ipairs(labels) do
omit_preComma = omit_postComma
omit_preSpace = omit_postSpace
local raw_text_omit_before = label.raw_text == "middle" or label.raw_text == "end"
local raw_text_omit_after = label.raw_text == "middle" or label.raw_text == "begin"
label.omit_comma = omit_preComma or (label.data and label.data.omit_preComma) or raw_text_omit_before
omit_postComma = (label.data and label.data.omit_postComma) or raw_text_omit_after
label.omit_space = omit_preSpace or (label.data and label.data.omit_preSpace) or raw_text_omit_before
omit_postSpace = (label.data and label.data.omit_postSpace) or raw_text_omit_after
end
if data.lang then
local lang_functions_module = export.lang_specific_data_modules_prefix .. data.lang:getCode() .. "/functions"
local m_lang_functions = require(load_module).safe_require(lang_functions_module)
if m_lang_functions and m_lang_functions.postprocess_handlers then
for _, handler in ipairs(m_lang_functions.postprocess_handlers) do
handler(data)
end
end
end
local function wrap_css(txt, suffix)
if data.raw then
return txt
end
return ("<span class=\"ib-%s label-%s\">%s</span>"):format(suffix, suffix, txt)
end
local categories = nil
local formatted_categories = split_output and split_output ~= "raw" and {} or nil
for i, labelinfo in ipairs(labels) do
local label
-- Need to check for 'not raw_text' here because blank labels may legitimately occur as raw text if a double
-- angle bracket spec occurs at the beginning of a label. In this case we've already taken into account the
-- context and don't want to leave out a preceding comma and space e.g. in a case like
-- {{lb|en|rare|<<dialect>> or <<eye dialect>>}}. FIXME: We should reconsider whether we need this special case
-- at all.
if labelinfo.label == "" and not labelinfo.raw_text then
label = ""
else
label = (labelinfo.omit_comma and "" or wrap_css(",", "comma")) ..
(labelinfo.omit_space and "" or " ") ..
labelinfo.label
end
if split_output then
labels[i] = label
if split_output == "raw" then
if labelinfo.categories and labelinfo.categories[1] then
if categories then
m_table.extend(categories, labelinfo.categories)
else
categories = labelinfo.categories
end
end
elseif labelinfo.formatted_categories then
insert(formatted_categories, labelinfo.formatted_categories)
end
else
labels[i] = label .. (labelinfo.formatted_categories or "")
end
end
local function wrap_open_close(val)
if val then
return wrap_css(val, "brac")
else
return ""
end
end
local concatenated_labels = table.concat(labels, "")
if not data.no_ib_content then
concatenated_labels = wrap_css(concatenated_labels, "content")
end
local ret_labels = wrap_open_close(data.open) .. concatenated_labels .. wrap_open_close(data.close)
if split_output == "raw" then
return ret_labels, categories
elseif split_output then
return ret_labels, concat(formatted_categories)
else
return ret_labels
end
end
--[==[
Format one or more labels for display and categorization. This provides the implementation of the
{{tl|label}}/{{tl|lb}}, {{tl|term label}}/{{tl|tlb}} and {{tl|accent}}/{{tl|a}} templates, and can also be called from a
module. The return value is a string to be inserted into the generated page, including the display and categories. On
input `data` is an object with the following fields:
* `labels`: List of the labels to format.
* `lang`: The language of the labels.
* `mode`: How the label was invoked; see {get_label_info()} for more information.
* `nocat`: If true, don't add the labels to any categories.
* `force_cat`: Force adding categories even in namespaces that normally exclude them (e.g. userspace and discussion
pages).
* `notrack`: Disable all tracking for these labels.
* `sort`: Sort key for categorization.
* `no_track_already_seen`: Don't track already-seen labels. If not specified, already-seen labels are not displayed
again, but still categorize. See the documentation of {get_label_info()}.
* `open`: Open bracket or parenthesis to display before the concatenated labels. If {nil}, defaults to an open
parenthesis. Set to {false} to disable.
* `close`: Close bracket or parenthesis to display after the concatenated labels. If {nil}, defaults to a close
parenthesis. Set to {false} to disable.
* `no_ib_content`: As in `format_processed_labels()`.
* `raw`: As in `format_processed_labels()`. Also suppress wrapping the entire formatted result in a usage label CSS
class (see below).
* `ok_to_destructively_modify`: If set, the `data` structure will be destructively modified in the process of this
function running.
Compared with {format_processed_labels()}, this function has the following differences:
# The labels specified in `labels` are raw labels (i.e. strings) rather than formatted objects.
# The open and close brackets default to parentheses ("round brackets") rather than not being displayed by default.
# Tracking of already-seen labels is enabled unless explicitly turned off using `no_track_already_seen`.
# The entire formatted result is wrapped in a {"usage-label-<var>type</var>"} CSS class (depending on the value of
`mode`), unless `raw` is given.
]==]
function export.show_labels(data)
if not data.labels then
error("`data` must now be an object containing the params")
end
if not data.ok_to_destructively_modify then
data = m_table.shallowCopy(data)
data.ok_to_destructively_modify = true
end
local labels = data.labels
if not labels[1] then
error("You must specify at least one label.")
end
local mode = validate_mode(data.mode)
if not data.no_track_already_seen then
data.already_seen = {}
end
data.labels = export.process_raw_labels(data)
if data.open == nil then
data.open = "("
end
if data.close == nil then
data.close = ")"
end
local formatted = export.format_processed_labels(data)
if data.raw then
return formatted
else
return "<span class=\"" .. mode_to_outer_class[mode] .. "\">" .. formatted .. "</span>"
end
end
--[==[Helper function for the data modules.]==]
function export.alias(labels, key, aliases)
m_table.alias(labels, key, aliases)
end
--[==[
Split the display form of a label. Returns two values: `link` and `display`. If the display form consists of a
two-part link, `link` is the first part and `display` is the second part. If the display form consists of a
single-part link, `link` and `display` are the same. Otherwise (the display form is not a link or contains an
embedded link), `link` is the same as the passed-in `label` and `display` is nil.
]==]
function export.split_display_form(label)
if not label:find("%[%[") then
return label, nil
end
local link, display = label:match("^%[%[([^%[%]|]+)|([^%[%]|]+)%]%]$")
if link then
return link, display
end
link = label:match("^%[%[([^%[%]|])+%]%]$")
if link then
return link, link
end
return label, nil
end
--[==[
Combine the `link` and `display` parts of the display form of a label as returned by {split_display_form()}.
If `display` is nil, `link` is returned directly. Otherwise, a one-part or two-part link is constructed
depending on whether `link` and `display` are the same. (As a special case, if both consist of a blank string,
the return value is a blank string rather than a malformed link.)
]==]
function export.combine_display_form_parts(link, display)
if not display then
return link
end
if link == display then
if link == "" then
return ""
else
return ("[[%s]]"):format(link)
end
end
return ("[[%s|%s]]"):format(link, display)
end
--[==[Used to finalize the data into the form that is actually returned.]==]
function export.finalize_data(labels)
local shallow_copy = m_table.shallowCopy
local aliases = {}
for label, data in pairs(labels) do
if type(data) == "table" then
if data.aliases then
for _, alias in ipairs(data.aliases) do
aliases[alias] = label
end
data.aliases = nil
end
if data.deprecated_aliases then
local data2 = shallow_copy(data)
data2.deprecated = true
data2.canonical = label
for _, alias in ipairs(data2.deprecated_aliases) do
aliases[alias] = data2
end
data.deprecated_aliases = nil
data2.deprecated_aliases = nil
end
end
end
for label, data in pairs(aliases) do
labels[label] = data
end
return labels
end
return export
qsq50wqw480hzv7on668ph51ljoj3n6
Teamplaid:documentation/core
10
12239
88702
86219
2026-07-31T11:34:03Z
EmausBot
1999
Fixing double redirect from [[Teamplaid:Documentation]] to [[Teamplaid:documentation]]
88702
wikitext
text/x-wiki
#REDIRECT [[Teamplaid:documentation]]
758h9ed88k4xms3wca3goqb9i4cdn9q
Teamplaid:inflection-table-top
10
16618
88678
86182
2026-07-30T14:04:47Z
Altronic
4137
test
88678
wikitext
text/x-wiki
<includeonly><!-- special wrapper to prevent substitution of this template -->{{ safesubst:<noinclude/>#ifeq:{{ safesubst:<noinclude/>NAMESPACE}}|{{NAMESPACE}}|
<div class="inflection-table-wrapper inflection-table-{{{palette|grey}}} {{#ifeq:{{{title}}}|-|inflection-table-no-title}} {{#if:{{{tall|}}}|inflection-table-collapsible inflection-table-collapsed no-vc}} {{{class|}}}" style="width: fit-content{{#if:{{{min-width|}}}|; min-width: {{{min-width}}}}}" data-toggle-category="{{{category|inflection}}}"><templatestyles src="inflection-table-top/style.css" />
{{{!}} class="inflection-table {{#if:{{{lang|}}}|inflection-table-{{{lang}}}}} {{#if:{{{vs-category|}}}|vsSwitcher}}" {{#if:{{{vs-category|}}}|data-toggle-category="{{{vs-category}}}"}} <!-- {{!}} is used in place of | due to the special safesubst: wrapper -->
{{#ifeq:{{{title}}}|-||
{{!}}+ class="inflection-table-title {{#if:{{{vsToggleElement|}}}|vsToggleElement}}" {{!}} {{{title|Inflection of ''{{PAGENAME}}''}}}
{{!}}-
}}
|{{color||Do not substitute this template}}}}
</includeonly><noinclude>{{documentation}}</noinclude>
2opmbmzgcoa2ci4t0kcq73v2l30nr6q
Teamplaid:Documentation/core
10
16722
88701
86220
2026-07-31T11:33:53Z
EmausBot
1999
Fixing double redirect from [[Teamplaid:documentation/core]] to [[Teamplaid:documentation]]
88701
wikitext
text/x-wiki
#REDIRECT [[Teamplaid:documentation]]
758h9ed88k4xms3wca3goqb9i4cdn9q
Mòideal:languages/data/3/g
828
16799
88674
86780
2026-07-30T12:34:08Z
Altronic
4137
88674
Scribunto
text/plain
local m_langdata = require("Module:languages/data")
-- Loaded on demand, as it may not be needed (depending on the data).
local function u(...)
u = require("Module:string utilities").char
return u(...)
end
local c = m_langdata.chars
local p = m_langdata.puaChars
local s = m_langdata.shared
local m = {}
m["gaa"] = {
"Ga",
33287,
"alv-gda",
"Latn",
}
m["gab"] = {
"Gabri",
3441237,
"cdc-est",
"Latn",
}
m["gac"] = {
"Mixed Great Andamanese",
56329630,
"qfa-adn",
"Latn",
}
m["gad"] = { -- not to be confused with gdk, gdg
"Gaddang",
3438830,
"phi",
"Latn",
}
m["gae"] = {
"Warekena",
1091095,
"awd-nwk",
"Latn",
}
m["gaf"] = {
"Gende",
3100425,
"ngf-gor",
"Latn",
}
m["gag"] = {
"Gagauz",
33457,
"trk-ogz",
"Latn, Cyrl",
ancestors = "trk-oat",
dotted_dotless_i = true,
sort_key = {
Latn = {
from = {
"i", -- Ensure "i" comes after "ı".
"ä", "ç", "ê", "ı", "ö", "ş", "ţ", "ü"
},
to = {
"i" .. p[1],
"a" .. p[1], "c" .. p[1], "e" .. p[1], "i", "o" .. p[1], "s" .. p[1], "t" .. p[1], "u" .. p[1]
}
},
},
}
m["gah"] = {
"Alekano",
3441595,
"ngf-gah",
"Latn",
}
m["gai"] = {
"Borei",
6799756,
"paa-ott",
"Latn",
}
m["gaj"] = {
"Gadsup",
5516467,
"ngf-gau",
"Latn",
}
m["gak"] = {
"Gamkonora",
5520226,
"paa-sah",
"Latn",
}
m["gal"] = {
"Galoli",
35322,
"poz-tim",
"Latn",
}
m["gam"] = {
"Kandawo",
6361369,
"ngf-jim",
"Latn",
}
m["gan"] = {
"Gan",
33475,
"zhx",
"Hants",
ancestors = "ltc",
generate_forms = "zh-generateforms",
translit = "zh-translit",
sort_key = "Hani-sortkey",
}
m["gao"] = {
"Gants",
5521529,
"ngf-eso",
"Latn",
}
m["gap"] = {
"Gal",
5517742,
"ngf-han",
"Latn",
}
m["gaq"] = {
"Gata'",
3501920,
"mun",
"Orya",
}
m["gar"] = {
"Galeya",
5518509,
"poz-ocw",
"Latn",
}
m["gas"] = {
"Adiwasi Garasia",
12953522,
"inc-bhi",
"Deva, Gujr",
ancestors = "bhb",
}
m["gat"] = {
"Kenati",
4219330,
"ngf-kgo",
"Latn",
}
m["gau"] = {
"Kondekor",
12952433,
"dra-pgd",
"Telu",
}
m["gaw"] = {
"Nobonob",
11732205,
"ngf-han",
"Latn",
}
m["gay"] = {
"Gayo",
33286,
"poz-nws",
"Latn",
}
m["gbb"] = {
"Kaytetye",
6380709,
"aus-rnd",
"Latn",
}
m["gbd"] = {
"Karadjeri",
3913837,
"aus-pam",
"Latn",
}
m["gbe"] = {
"Niksek",
56375,
"paa-sep",
"Latn",
}
m["gbf"] = {
"Gaikundi",
5517032,
"paa-nnd",
"Latn",
}
m["gbg"] = {
"Gbanziri",
35306,
"nic-nkg",
"Latn",
}
m["gbh"] = {
"Defi Gbe",
12952446,
"alv-gbe",
"Latn",
}
m["gbi"] = {
"Galela",
3094570,
"paa-gto",
"Latn",
}
m["gbj"] = {
"Bodo Gadaba",
3347070,
"mun",
"Orya",
}
m["gbk"] = {
"Gaddi",
17455500,
"him",
"Deva, Takr",
translit = {Deva = "hi-translit"},
}
m["gbl"] = {
"Gamit",
2731717,
"inc-bhi",
"Deva, Gujr",
}
m["gbm"] = {
"Garhwali",
33459,
"inc-pah",
"Deva",
translit = "hi-translit",
}
m["gbn"] = {
"Mo'da",
12755683,
"csu-bbk",
"Latn",
}
m["gbo"] = {
"Northern Grebo",
11157042,
"grb",
"Latn",
}
m["gbp"] = {
"Gbaya-Bossangoa",
11011295,
"gba-wes",
"Latn",
}
m["gbq"] = {
"Gbaya-Bozoum",
4952879,
"gba-wes",
"Latn",
}
m["gbr"] = {
"Gbagyi",
11015105,
"alv-ngb",
"Latn",
}
m["gbs"] = {
"Gbesi Gbe",
12952448,
"alv-pph",
"Latn",
}
m["gbu"] = {
"Gagadu",
35677,
"aus-arn",
"Latn",
}
m["gbv"] = {
"Gbanu",
3914945,
"gba-eas",
"Latn",
}
m["gbw"] = {
"Gabi",
5515391,
"aus-pam",
"Latn",
}
m["gbx"] = {
"Eastern Xwla Gbe",
18379975,
"alv-pph",
"Latn",
}
m["gby"] = {
"Gbari",
3915451,
"alv-ngb",
"Latn",
}
m["gcc"] = {
"Mali",
6743338,
"paa-bai",
"Latn",
}
m["gcd"] = {
"Ganggalida",
3913765,
"aus-tnk",
"Latn",
}
m["gce"] = {
"Galice",
20711,
"ath-pco",
"Latn",
}
m["gcf"] = {
"Antillean Creole",
3006280,
"crp",
"Latn",
ancestors = "fr",
sort_key = s["roa-oil-sortkey"],
}
m["gcl"] = {
"Grenadian Creole English",
4252500,
"crp",
"Latn",
ancestors = "en",
}
m["gcn"] = {
"Gaina",
11732195,
"ngf-gko",
"Latn",
}
m["gcr"] = {
"Guianese Creole",
1363072,
"crp",
"Latn",
ancestors = "fr",
sort_key = s["roa-oil-sortkey"],
}
m["gct"] = {
"Colonia Tovar German",
1138351,
"gmw-hgm",
"Latn",
ancestors = "gsw",
}
m["gdb"] = {
"Ollari",
33906,
"dra-pgd",
"Orya, Telu",
translit = {
Telu = "te-translit"
},
}
m["gdc"] = {
"Gugu Badhun",
10510360,
"aus-pam",
"Latn",
}
m["gdd"] = {
"Gedaged",
35292,
"poz-ocw",
"Latn",
}
m["gde"] = {
"Gude",
3441230,
"cdc-cbm",
"Latn",
}
m["gdf"] = {
"Guduf-Gava",
3441350,
"cdc-cbm",
"Latn",
}
m["gdg"] = { -- not to be confused with gad, gdk
"Ga'dang",
5515189,
"phi",
"Latn",
}
m["gdh"] = {
"Gadjerawang",
3913817,
"aus-jar",
"Latn",
}
m["gdi"] = {
"Gundi",
11137851,
"nic-nkb",
"Latn",
}
m["gdj"] = {
"Kurtjar",
5619931,
"aus-pmn",
"Latn",
}
m["gdk"] = { -- not to be confused with gad, gdg
"Gadang",
56256,
"cdc-est",
"Latn",
}
m["gdl"] = {
"Dirasha",
56809,
"cus-eas",
"Ethi",
}
m["gdm"] = {
"Laal",
33436,
"qfa-dis", -- Chad; unclassified, isolate or grouped with Adamawa or Chadic languages
"Latn",
}
m["gdn"] = {
"Umanakaina",
7881084,
"ngf-dag",
"Latn",
}
m["gdo"] = {
"Godoberi",
56515,
"cau-and",
"Cyrl",
display_text = {Cyrl = s["cau-Cyrl-displaytext"]},
strip_diacritics = {Cyrl = s["cau-Cyrl-stripdiacritics"]},
}
m["gdq"] = {
"Mehri",
13361,
"sem-sar",
"Arab, Latn",
}
m["gdr"] = {
"Wipi",
8026711,
"paa-etf",
"Latn",
}
m["gds"] = {
"Ghandruk Sign Language",
15971577,
"sgn",
}
m["gdt"] = {
"Kungardutyi",
6444517,
"aus-kar",
"Latn",
}
m["gdu"] = {
"Gudu",
3441172,
"cdc-cbm",
"Latn",
}
m["gdx"] = {
"Godwari",
3540922,
"raj",
"Deva",
}
m["gea"] = {
"Geruma",
3438789,
"cdc-wst",
"Latn",
}
m["geb"] = {
"Kire",
11129733,
"paa-rub",
"Latn",
}
m["gec"] = {
"Gboloo Grebo",
11019342,
"grb",
"Latn",
}
m["ged"] = {
"Gade",
3914459,
"alv-nup",
"Latn",
}
m["geg"] = {
"Gengle",
3438345,
"alv-mye",
"Latn",
ancestors = "kow",
}
m["geh"] = {
"Hutterisch",
33385,
"gmw-hgm",
"Latn",
ancestors = "bar",
}
m["gei"] = {
"Gebe",
3100032,
"poz-hce",
"Latn",
}
m["gej"] = {
"Gen",
33450,
"alv-gbe",
"Latn",
}
m["gek"] = {
"Gerka",
3441277,
"cdc-wst",
"Latn",
}
m["gel"] = {
"Fakkanci",
36627,
"nic-knn",
"Latn",
}
m["geq"] = {
"Geme",
3915851,
"znd",
"Latn",
}
m["ges"] = {
"Geser-Gorom",
5553579,
"poz-cma",
"Latn",
}
m["gev"] = {
"Viya",
7937974,
"bnt-tso",
"Latn",
}
m["gew"] = {
"Gera",
3438725,
"cdc-wst",
"Latn",
}
m["gex"] = {
"Garre",
56618,
"cus-som",
"Latn",
}
m["gey"] = {
"Enya",
5381452,
"bnt-mbe",
"Latn",
}
m["gez"] = {
"Ge'ez",
35667,
"sem-eth",
"Ethi",
translit = "Ethi-translit",
}
m["gfk"] = {
"Patpatar",
3368846,
"poz-ocw",
"Latn",
}
m["gft"] = {
"Gafat",
56910,
"sem-eth",
"Ethi, Latn",
}
m["gga"] = {
"Gao",
3095228,
"poz-ocw",
"Latn",
}
m["ggb"] = {
"Gbii",
3914390,
"kro-wkr",
"Latn",
}
m["ggd"] = {
"Gugadj",
5615186,
"aus-pmn",
"Latn",
}
m["gge"] = {
"Guragone",
5619801,
"aus-arn",
"Latn",
}
m["ggg"] = {
"Gurgula",
5620032,
"raj",
"Arab",
}
m["ggk"] = {
"Kungarakany",
6444516,
"aus-arn",
"Latn",
}
m["ggl"] = {
"Ganglau",
5521140,
"ngf-yag",
"Latn",
}
m["ggt"] = {
"Gitua",
3107865,
"poz-ocw",
"Latn",
}
m["ggu"] = {
"Gban",
3913317,
"dmn-nbe",
"Latn",
}
m["ggw"] = {
"Gogodala",
3512161,
"ngf-gsu",
"Latn",
}
m["gha"] = {
"Ghadames",
56747,
"ber",
"Latn", -- and other scripts?
}
m["ghc"] = {
"Gàidhlig Chlasaigeach",
5128278,
"cel-gae",
"Latn, Latg",
ancestors = "mga",
}
m["ghe"] = {
"Southern Ghale",
12952453,
"sit-tam",
"Deva",
}
m["ghh"] = {
"Northern Ghale",
22662104,
"sit-tam",
"Deva",
}
m["ghk"] = {
"Geko Karen",
5530317,
"kar",
}
m["ghl"] = {
"Ghulfan",
16885737,
"nub-hil",
"Latn", -- and others?
}
m["ghn"] = {
"Ghanongga",
3104772,
"poz-ocw",
"Latn",
}
m["gho"] = {
"Ghomara",
35315,
"ber",
"Tfng, Latn",
translit = {Tfng = "Tfng-translit"},
}
m["ghr"] = {
"Ghera",
22808992,
"inc-hiw",
}
m["ghs"] = {
"Guhu-Samane",
11732219,
"ngf-gbi",
"Latn",
}
m["ght"] = {
"Kutang Ghale",
6448337,
"sit-tam",
"Tibt",
override_translit = true,
-- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]]
}
m["gia"] = {
"Kitja",
1284877,
"aus-jar",
"Latn",
}
m["gib"] = {
"Gibanawa",
12953530,
"crp",
"Latn",
ancestors = "ha",
}
m["gid"] = {
"Gidar",
35265,
"cdc-cbm",
"Latn",
}
m["gie"] = {
"Guébie",
63140714,
"kro-did",
"Latn",
}
m["gig"] = {
"Goaria",
33269,
"raj",
"Arab",
}
m["gih"] = {
"Githabul",
48987680,
"aus-pam",
"Latn",
}
m["gii"] = {
"Girirra",
5564288,
"cus-som",
}
m["gil"] = {
"Gilbertese",
30898,
"poz-mic",
"Latn",
}
m["gim"] = {
"Gimi (Papuan)",
11732209,
"ngf-fgi",
"Latn",
}
m["gin"] = {
"Hinukh",
33283,
"cau-wts",
"Cyrl",
translit = "gin-translit",
display_text = {Cyrl = s["cau-Cyrl-displaytext"]},
strip_diacritics = {Cyrl = s["cau-Cyrl-stripdiacritics"]},
}
m["gip"] = {
"Gimi (Austronesian)",
12952457,
"poz-ocw",
}
m["giq"] = {
"Green Gelao",
12953525,
"gio",
"Latn",
}
m["gir"] = {
"Red Gelao",
3100264,
"gio",
}
m["gis"] = {
"North Giziga",
3515084,
"cdc-cbm",
}
m["git"] = {
"Gitxsan",
3107862,
"nai-tsi",
"Latn",
}
m["giu"] = {
"Mulao",
11092831,
"gio",
}
m["giw"] = {
"White Gelao",
8843040,
"gio",
}
m["gix"] = {
"Gilima",
10977716,
"nic-nkm",
"Latn",
}
m["giy"] = {
"Giyug",
5565906,
}
m["giz"] = {
"South Giziga",
3502232,
"cdc-cbm",
}
m["gji"] = {
"Geji",
3914890,
"cdc-wst",
"Latn",
}
m["gjk"] = {
"Kachi Koli",
12953646,
"inc-wes",
}
m["gjm"] = {
"Gunditjmara",
6448731,
"aus-pam",
"Latn",
}
m["gjn"] = {
"Gonja",
35267,
"alv-gng",
"Latn",
}
m["gjr"] = {
"Gurindji Kriol",
5620091,
"qfa-mix",
"Latn",
ancestors = "gue, rop"
}
m["gju"] = {
"Gojri",
3241731,
"raj",
"ur-Arab, Deva, Takr",
strip_diacritics = {
["ur-Arab"] = {
remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.smallv,
from = {"ڵ", "ݩ"},
to = {"ل", "ن"}
},
},
translit = {["ur-Arab"] = "ur-translit"},
}
m["gka"] = {
"Guya",
11732221,
"ngf-war",
"Latn",
}
m["gkd"] = {
"Magi",
55621742,
"ngf-ais",
"Latn",
}
m["gke"] = {
"Ndai",
6983667,
"alv-mbm",
}
m["gkn"] = {
"Gokana",
3075137,
"nic-ogo",
"Latn",
}
m["gko"] = {
"Kok-Nar",
6426526,
"aus-pmn",
"Latn",
}
m["gkp"] = {
"Guinea Kpelle",
11052867,
"dmn-msw",
"Latn, Kpel",
ancestors = "kpe",
}
m["glc"] = {
"Bon Gula",
289816,
"alv-bua",
}
m["gld"] = {
"Nanai",
13303,
"tuw-nan",
"Cyrl",
translit = "gld-translit",
strip_diacritics = {remove_diacritics = c.macron},
sort_key = {
from = {"ё", "ӈ"},
to = {"е" .. p[1], "н" .. p[1]}
},
}
m["glh"] = {
"Northwest Pashayi",
23713532,
"inc-pas",
"fa-Arab",
}
m["glj"] = {
"Kulaal",
33360,
"alv-bua",
}
m["glk"] = {
"Gilaki",
33657,
"ira-csp",
"fa-Arab",
}
m["glo"] = {
"Galambu",
2598797,
"cdc-wst",
"Latn",
}
m["glr"] = {
"Glaro-Twabo",
3915313,
"kro-wee",
}
m["glu"] = {
"Gula",
5617176,
"csu-bgr",
"Latn",
}
m["glw"] = {
"Glavda",
3441285,
"cdc-cbm",
"Latn",
}
m["gly"] = {
"Gule",
3120736,
"ssa-kom",
}
m["gma"] = {
"Gambera",
10502327,
"aus-wor",
"Latn",
}
m["gmb"] = {
"Gula'alaa",
3120733,
"poz-sls",
"Latn",
}
m["gmd"] = {
"Mághdì",
3914475,
"alv-bwj",
}
m["gmg"] = {
"Magiyi",
16926155,
"ngf-sog",
"Latn",
}
m["gmh"] = {
"Middle High German",
837985,
"gmw-hgm",
"Latn",
strip_diacritics = {
remove_diacritics = c.circ .. c.macron,
from = {"Ë", "ë", "[ƷȤ]", "[ʒȥ]"},
to = {"E", "e", "Z", "z"}
},
}
m["gml"] = {
"Middle Low German",
505674,
"gmw-lgm",
"Latn",
strip_diacritics = {remove_diacritics = c.circ .. c.macron .. c.diaer},
}
m["gmm"] = {
"Gbaya-Mbodomo",
6799713,
"gba-eas",
"Latn",
}
m["gmn"] = {
"Gimnime",
11016905,
"alv-dur",
"Latn",
}
m["gmr"] = {
"Mirning",
6873793,
"aus-pam",
"Latn",
}
m["gmu"] = {
"Gumalu",
5618027,
"ngf-gum",
"Latn",
}
m["gmv"] = {
"Gamo",
16116386,
"omv-nom",
"Latn, Ethi",
}
m["gmx"] = {
"Magoma",
16939552,
"bnt-bki",
}
m["gmy"] = {
"Mycenaean Greek",
668366,
"grk",
"Linb",
translit = "Linb-translit",
}
m["gmz"] = {
"Mgbo",
6826835,
"alv-igb",
ancestors = "izi",
}
m["gna"] = {
"Kaansa",
56802,
"nic-gur",
}
m["gnb"] = {
"Gangte",
12952442,
"tbq-kuk",
}
m["gnc"] = {
"Guanche",
35762,
"ber",
}
m["gnd"] = {
"Zulgo-Gemzek",
56800,
"cdc-cbm",
"Latn",
}
m["gne"] = {
"Ganang",
63163361,
"nic-plc",
ancestors = "izr",
}
m["gng"] = {
"Ngangam",
35888,
"nic-grm",
}
m["gnh"] = {
"Lere",
3915319,
"nic-jer",
}
m["gni"] = {
"Gooniyandi",
2669219,
"aus-bub",
"Latn",
}
m["gnj"] = {
"Ngen of Djonkro",
63170838,
"dmn-nbe",
"Latn",
}
m["gnk"] = {
"ǁGana",
1975199,
"khi-kal",
"Latn",
}
m["gnl"] = {
"Gangulu",
4916329,
"aus-pam",
"Latn",
}
m["gnm"] = {
"Ginuman",
11732210,
"ngf-dag",
"Latn",
}
m["gnn"] = {
"Gumatj",
10510745,
"aus-yol",
"Latn",
}
m["gnq"] = {
"Gana",
5520523,
"poz-san",
"Latn",
}
m["gnr"] = {
"Gureng Gureng",
5619998,
"aus-pam",
"Latn",
}
m["gnt"] = {
"Guntai",
12952475,
"paa-ton",
"Latn",
}
m["gnu"] = {
"Gnau",
3915810,
"paa-trr",
"Latn",
}
m["gnw"] = {
"Western Bolivian Guarani",
3775037,
"gn",
"Latn",
}
m["gnz"] = {
"Ganzi",
11137942,
"nic-nkb",
"Latn",
}
m["goa"] = {
"Guro",
35251,
"dmn-mda",
"Latn",
}
m["gob"] = {
"Playero",
3027923,
"sai-guh",
}
m["goc"] = {
"Gorakor",
12952463,
"poz-ocw",
"Latn",
}
m["god"] = {
"Godié",
3914412,
"kro-bet",
}
m["goe"] = {
"Gongduk",
2669221,
"sit",
}
m["gof"] = {
"Gofa",
12631584,
"omv-nom",
"Latn, Ethi",
}
m["gog"] = {
"Gogo",
3272630,
"bnt-ruv",
"Latn",
}
m["goh"] = {
"Old High German",
35218,
"gmw-hgm",
"Latn, Runr",
strip_diacritics = {
remove_diacritics = c.circ .. c.macron .. c.diaer,
from = {"[ƷȤ]", "[ʒȥ]"},
to = {"Z", "z"}
},
translit = {
Runr = "Runr-translit",
},
}
m["goi"] = {
"Gobasi",
5575414,
"ngf-est",
"Latn",
}
m["goj"] = {
"Gowlan",
12953532,
"inc-sou",
}
-- gok is a spurious language, see [[w:Spurious languages]]
m["gol"] = {
"Gola",
35482,
"alv",
"Latn, Vaii",
}
m["gon"] = {
"Gondi",
1775361,
"dra-gon",
"Telu, Gonm, Gong, Deva, Orya",
translit = {
Telu = "te-translit",
Gong = "gon-Gong-translit",
Gonm = "gon-Gonm-translit",
},
}
m["goo"] = {
"Gone Dau",
3110470,
"poz-pcc",
"Latn",
}
m["gop"] = {
"Yeretuar",
8052565,
"poz-hce",
"Latn",
}
m["goq"] = {
"Gorap",
3110816,
"crp",
"Latn",
ancestors = "ms",
}
m["gor"] = {
"Gorontalo",
2501174,
"phi",
"Latn",
}
m["got"] = {
"Gothic",
35722,
"gme",
"Goth, Runr, Latn",
translit = {Goth = "Goth-translit"},
link_tr = true,
strip_diacritics = {Latn = {remove_diacritics = c.macron}},
}
m["gou"] = {
"Gavar",
3441180,
"cdc-cbm",
}
m["gov"] = {
"Goo",
16927208,
"dmn",
"Latn",
}
m["gow"] = {
"Gorwaa",
3437626,
"cus-sou",
"Latn",
}
m["gox"] = {
"Gobu",
7194986,
"bad-cnt",
}
m["goy"] = {
"Goundo",
317636,
"alv-kim",
}
m["goz"] = {
"Gozarkhani",
5590235,
"xme-ttc",
ancestors = "xme-ttc-eas",
}
m["gpa"] = {
"Gupa-Abawa",
3915352,
"alv-ngb",
"Latn",
}
m["gpn"] = {
"Taiap",
56237,
"qfa-dis", -- Papuan; isolate in Glottolog; relationship with Torricelli proposed by Usher
"Latn",
}
m["gqa"] = {
"Ga'anda",
56245,
"cdc-cbm",
"Latn",
}
m["gqi"] = {
"Guiqiong",
3120647,
"sit-qia",
}
m["gqn"] = { -- a variety of 'ter'
"Kinikinao",
53386731,
"awd",
"Latn",
}
m["gqr"] = {
"Gor",
759992,
"csu-sar",
"Latn",
}
m["gqu"] = {
"Qau",
17284874,
"gio",
}
m["gra"] = {
"Rajput Garasia",
21041529,
"inc-bhi",
"Deva, Gujr",
ancestors = "bhb",
}
m["grc"] = {
"Ancient Greek",
35497,
"grk",
"Polyt, Cprt",
translit = {
Cprt = "Cprt-translit",
},
override_translit = true,
-- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]]
standard_chars = {
Polyt = "ΑΆἈἉἊἋἌἍἎἏᾈᾉᾊᾋᾌᾍᾎᾏᾸᾹᾺᾼΒΓΔΕΈἘἙἚἛἜἝῈΖΗΉἨἩἪἫἬἭἮἯᾘᾙᾚᾛᾜᾝᾞᾟῊῌΘΙΊΪἸἹἺἻἼἽἾἿῘῙῚΚΛΜΝΞΟΌὈὉὊὋὌὍΠΡῬΡ̓ΣΤΥΎΫὙὛὝὟῨῩῪΦΧΨΩΏὨὩὪὫὬὭὮὯᾨᾩᾪᾫᾬᾭᾮᾯῸῺῼαάἀἁἂἃἄἅἆἇὰᾀᾁᾂᾃᾄᾅᾆᾇᾰᾱᾲᾳᾴᾶᾷβγδεέἐἑἒἓἔἕὲζηήἠἡἢἣἤἥἦἧὴᾐᾑᾒᾓᾔᾕᾖᾗῂῃῄῆῇθιίϊΐἰἱἲἳἴἵἶἷὶῐῑῒῖῗκλμνξοόὀὁὂὃὄὅὸπρῤῥςστυύϋΰὐὑὒὓὔὕὖὗὺῠῡῢῦῧφχψωώὠὡὢὣὤὥὦὧὼᾠᾡᾢᾣᾤᾥᾦᾧῲῳῴῶῷ·ͺ΄΅᾽᾿῀῁῍῎῏῝῞῟῭`´῾",
Cprt = "𐠀𐠁𐠂𐠃𐠄𐠅𐠈𐠊𐠋𐠌𐠍𐠎𐠏𐠐𐠑𐠒𐠓𐠔𐠕𐠖𐠗𐠘𐠙𐠚𐠛𐠜𐠝𐠞𐠟𐠠𐠡𐠢𐠣𐠤𐠥𐠦𐠧𐠨𐠩𐠪𐠫𐠬𐠭𐠮𐠯𐠰𐠱𐠲𐠳𐠴𐠵𐠷𐠸𐠼𐠿",
c.punc
},
}
m["grd"] = {
"Guruntum",
3441272,
"cdc-wst",
"Latn",
}
m["grg"] = {
"Madi",
6727664,
"ngf-gmo",
"Latn",
}
m["grh"] = {
"Gbiri-Niragu",
3913936,
"nic-kau",
"Latn",
}
m["gri"] = {
"Ghari",
3104782,
"poz-sls",
"Latn",
}
m["grj"] = {
"Southern Grebo",
3914444,
"grb",
"Latn",
}
m["grm"] = {
"Kota Marudu Talantang",
6433808,
"poz-san",
"Latn",
}
m["gro"] = {
"Groma",
56551,
"sit-tib",
}
m["grq"] = {
"Gorovu",
56355,
"paa-por",
"Latn",
}
m["grs"] = {
"Gresi",
5607612,
"paa-nim",
"Latn",
}
m["grt"] = {
"Garo",
36137,
"tbq-bdg",
"Latn, Beng, Brai",
}
m["gru"] = {
"Kistane",
13273,
"sem-eth",
"Latn, Ethi",
}
m["grv"] = {
"Central Grebo",
18385114,
"grb",
"Latn",
}
m["grw"] = {
"Gweda",
5623387,
"poz-ocw",
"Latn",
}
m["grx"] = {
"Guriaso",
12631954,
"qfa-unc", -- no consensus; may be Kwomtari per Baron (1983) and Usher (2020), but no connections accepted by
-- Glottolog.
"Latn",
}
m["gry"] = {
"Barclayville Grebo",
11157342,
"grb",
"Latn",
}
m["grz"] = {
"Guramalum",
3120935,
"poz-ocw",
"Latn",
}
m["gse"] = {
"Ghanaian Sign Language",
35289,
"sgn-asl",
"Latn", -- when documented
}
m["gsg"] = {
"German Sign Language",
33282,
"sgn-gsl",
"Sgnw",
}
m["gsl"] = {
"Gusilay",
35439,
"alv-jol",
"Latn",
}
m["gsm"] = {
"Guatemalan Sign Language",
2886781,
"sgn",
"Latn", -- when documented
}
m["gsn"] = {
"Gusan",
11732224,
"ngf-era",
"Latn",
}
m["gso"] = {
"Southwest Gbaya",
4919322,
"gba-sou",
"Latn",
}
m["gsp"] = {
"Wasembo",
7971402,
"ngf-mad", -- placed in under Rai Coast by Glottolog (under Greater Yaganon) and Pawley-Hammarström
"Latn",
}
m["gss"] = {
"Greek Sign Language",
3565084,
"sgn",
}
m["gsw"] = {
"Alemannic German",
131339,
"gmw-hgm",
"Latn",
wikimedia_codes = "als",
ancestors = "gmh",
}
m["gta"] = {
"Guató",
3027940,
"qfa-dis", -- isolate or Macro-Jê
"Latn",
}
m["gtu"] = {
"Aghu Tharrnggala",
16825981,
"aus-pmn",
"Latn",
}
m["gua"] = {
"Shiki",
3913946,
"nic-jrn",
"Latn",
}
m["gub"] = {
"Guajajára",
7699720,
"tup-gua",
"Latn",
}
m["guc"] = {
"Wayuu",
891085,
"awd-taa",
"Latn",
}
m["gud"] = {
"Yocoboué Dida",
21074781,
"kro-did",
"Latn",
}
m["gue"] = {
"Gurindji",
10511016,
"aus-pam",
"Latn",
}
m["guf"] = {
"Gupapuyngu",
10511004,
"aus-yol",
"Latn",
}
m["gug"] = {
"Paraguayan Guarani",
17478066,
"gn",
"Latn",
wikimedia_codes = "gn",
ancestors = "gn-cls",
}
m["guh"] = {
"Guahibo",
2669193,
"sai-guh",
"Latn",
}
m["gui"] = {
"Eastern Bolivian Guarani",
2963912,
"gn",
"Latn",
}
m["guk"] = {
"Gumuz",
2396970,
"ssa",
"Latn, Ethi",
}
m["gul"] = {
"Gullah",
33395,
"crp",
"Latn",
ancestors = "en",
}
m["gum"] = {
"Guambiano",
2744745,
"sai-bar",
"Latn",
}
m["gun"] = {
"Mbya Guarani",
3915584,
"gn",
"Latn",
}
m["guo"] = {
"Guayabero",
2980375,
"sai-guh",
"Latn",
}
m["gup"] = {
"Gunwinggu",
1406574,
"aus-gun",
"Latn",
}
m["guq"] = {
"Aché",
383701,
"tup",
"Latn",
}
m["gur"] = {
"Farefare",
35331,
"nic-mre",
"Latn",
}
m["gus"] = {
"Guinean Sign Language",
15983937,
"sgn-asl", -- sic, not sgn-fsl
"Latn", -- when documented
}
m["gut"] = {
"Maléku Jaíka",
3915782,
"cba",
"Latn",
}
m["guu"] = {
"Yanomamö",
8048928,
"sai-ynm",
"Latn",
}
m["guv"] = {
"Gey",
11137816,
"alv-sav",
"Latn",
}
m["guw"] = {
"Gun",
3111668,
"alv-gbe",
"Latn",
strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.macron},
}
m["gux"] = {
"Gourmanchéma",
35474,
"nic-grm",
"Latn",
}
m["guz"] = {
"Gusii",
33603,
"bnt-lok",
"Latn",
}
m["gva"] = {
"Kaskihá",
3033534,
"sai-mas",
"Latn",
}
m["gvc"] = {
"Guanano",
3566001,
"sai-tuc",
"Latn",
}
m["gve"] = {
"Duwet",
5317647,
"poz-ocw",
"Latn",
}
m["gvf"] = {
"Golin",
3110291,
"ngf-sim",
"Latn",
}
m["gvj"] = {
"Guajá",
3915506,
"tup",
"Latn",
}
m["gvl"] = {
"Gulay",
641737,
"csu-sar",
"Latn",
}
m["gvm"] = {
"Gurmana",
3913363,
"nic-shi",
"Latn",
}
m["gvn"] = {
"Kuku-Yalanji",
5621973,
"aus-pam",
"Latn",
}
m["gvo"] = {
"Gavião do Jiparaná",
5528335,
"tup",
"Latn",
}
m["gvp"] = {
"Pará Gavião",
3365443,
"sai-nje",
"Latn",
}
m["gvr"] = {
"Gurung",
2392342,
"sit-tam",
"Gukh, Deva",
}
m["gvs"] = {
"Gumawana",
5618041,
"poz-ocw",
"Latn",
}
m["gvy"] = {
"Guyani",
10511230,
"aus-pam",
"Latn",
}
m["gwa"] = {
"Mbato",
3914941,
"alv-ptn",
"Latn",
}
m["gwb"] = {
"Gwa",
5623219,
"nic-jrn",
"Latn",
}
m["gwc"] = {
"Kalami",
1675961,
"inc-koh",
"Arab",
strip_diacritics = {
["Arab"] = {
-- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif
from = {"هٔ", "ۂ", "ٱ"},
to = {"ہ", "ہ", "ا"},
remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.superalef .. u(0x065e)
},
},
}
m["gwd"] = {
"Gawwada",
3032135,
"cus-eas",
"Latn, Ethi",
}
m["gwe"] = {
"Gweno",
3358211,
"bnt-chg",
"Latn",
}
m["gwf"] = {
"Gowro",
3812403,
"inc-koh",
"Arab",
}
m["gwg"] = {
"Moo",
6907057,
"alv-bwj",
"Latn",
}
m["gwi"] = {
"Gwich'in",
21057,
"ath-nor",
"Latn",
}
m["gwj"] = {
"Gcwi",
12631978,
"khi-kal",
"Latn",
}
m["gwm"] = {
"Awngthim",
4830109,
"aus-pmn",
"Latn",
}
m["gwn"] = {
"Gwandara",
56521,
"cdc-wst",
"Latn",
}
m["gwr"] = {
"Gwere",
5623559,
"bnt-nyg",
"Latn",
}
m["gwt"] = {
"Gawar-Bati",
33894,
"inc-kun",
"Arab",
}
m["gwu"] = {
"Guwamu",
10511225,
"aus-pam",
"Latn",
}
m["gww"] = {
"Kwini",
10551249,
"aus-wor",
"Latn",
}
m["gwx"] = {
"Gua",
35422,
"alv-gng",
"Latn",
}
m["gxx"] = {
"Wè Southern",
19921582,
"kro-wee",
"Latn",
}
m["gya"] = {
"Northwest Gbaya",
36594,
"gba-wes",
"Latn",
}
m["gyb"] = {
"Garus",
5524492,
"ngf-han",
"Latn",
}
m["gyd"] = {
"Kayardild",
3913770,
"aus-tnk",
"Latn",
}
m["gye"] = {
"Gyem",
5624046,
"nic-jer",
"Latn",
}
m["gyf"] = {
"Gungabula",
10510783,
"aus-pam",
"Latn",
}
m["gyg"] = {
"Gbayi",
11137618,
"nic-ngd",
"Latn",
}
m["gyi"] = {
"Gyele",
35434,
"bnt-mnj",
"Latn",
}
m["gyl"] = {
"Gayil",
5528771,
"omv-aro",
"Latn",
}
m["gym"] = {
"Ngäbere",
3915581,
"cba",
"Latn",
}
m["gyn"] = {
"Guyanese Creole English",
3305477,
"crp",
"Latn",
ancestors = "en",
}
m["gyo"] = {
"Gyalsumdo",
53575940,
"sit-kyk",
}
m["gyr"] = {
"Guarayu",
3118779,
"tup-gua",
"Latn",
}
m["gyy"] = {
"Gunya",
10511001,
"aus-pam",
"Latn",
}
m["gza"] = {
"Ganza",
5521556,
"omv-mao",
"Latn",
}
m["gzn"] = {
"Gane",
3095108,
"poz-hce",
"Latn",
}
return require("Module:languages").finalizeData(m, "language")
q05tyc0mjzemd401ed5dd7cm8z1cgxq
Teamplaid:gd-noun
10
17245
88697
88265
2026-07-30T19:24:57Z
Altronic
4137
88697
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{head|gd|{{#if:{{{suff|}}}|suffix|noun}}|cat2={{#if:{{{suff|}}}|noun-forming suffixes}}|head={{{head|}}}|sort={{{sort|}}}<!--
-->|g={{{1|?}}}<!--
-->|g2={{{g2|}}}<!--
-->|g3={{{g3|}}}<!--
-->|{{#if:{{{dat|}}}|dative singular}}<!--
-->|{{{dat|}}}<!--
-->|{{#if:{{{dat2|}}}|or}}<!--
-->|{{{dat2|}}}<!--
-->|{{#if:{{{dat3|}}}|or}}<!--
-->|{{{dat3|}}}<!--
-->|f1accel-form=dat{{!}}s<!--
-->|f2accel-form=dat{{!}}s<!--
-->|f3accel-form=dat{{!}}s<!--
-->|{{#if:{{{2|}}}|genitive singular}}<!--
-->|{{{2|}}}<!--
-->|{{#if:{{{gen2|}}}|or}}<!--
-->|{{{gen2|}}}<!--
-->|{{#if:{{{gen3|}}}|or}}<!--
-->|{{{gen3|}}}<!--
-->|{{#if:{{{gen4|}}}|or}}<!--
-->|{{{gen4|}}}<!--
-->|f4accel-form=gen{{!}}s<!--
-->|f5accel-form=gen{{!}}s<!--
-->|f6accel-form=gen{{!}}s<!--
-->|f7accel-form=gen{{!}}s<!--
-->|{{#ifeq:{{{3|}}}|-|no plural}}<!--
-->|<!--
-->|{{#switch:{{{3|}}}|?|-|=|#default=plural}}<!--
-->|{{{3|}}}<!--
-->|{{#if:{{{pl2|}}}|or}}<!--
-->|{{{pl2|}}}<!--
-->|{{#if:{{{pl3|}}}|or}}<!--
-->|{{{pl3|}}}<!--
-->|{{#if:{{{pl4|}}}|or}}<!--
-->|{{{pl4}}}<!--
-->|f8accel-form=p<!--
-->|f9accel-form=p<!--
-->|f10accel-form=p<!--
-->|{{#if:{{{genpl|}}}|genitive plural}}<!--
-->|{{{genpl|}}}<!--
-->|f11accel-form=genpl<!--
-->}}<!--
--><includeonly><!--
-->{{#if:{{{g|}}}{{{gen|}}}{{{pl|}}}|[[Category:gd-noun 2]]}}<!--
--></includeonly><!--
--><noinclude>{{documentation}}</noinclude>
dve9cb4owrrwmnvhh3co44q2cuwghbj
88698
88697
2026-07-30T20:49:24Z
Altronic
4137
88698
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{head|gd|{{#if:{{{suff|}}}|suffix|noun}}|cat2={{#if:{{{suff|}}}|noun-forming suffixes}}|head={{{head|}}}|sort={{{sort|}}}<!--
-->|g={{{1|?}}}<!--
-->|g2={{{g2|}}}<!--
-->|g3={{{g3|}}}<!--
-->|{{#if:{{{dat|}}}|dative singular}}<!--
-->|{{{dat|}}}<!--
-->|{{#if:{{{dat2|}}}|or}}<!--
-->|{{{dat2|}}}<!--
-->|{{#if:{{{dat3|}}}|or}}<!--
-->|{{{dat3|}}}<!--
-->|f1accel-form=dat{{!}}s<!--
-->|f2accel-form=dat{{!}}s<!--
-->|f3accel-form=dat{{!}}s<!--
-->|{{#if:{{{2|}}}|genitive singular}}<!--
-->|{{{2|}}}<!--
-->|{{#if:{{{gen2|}}}|or}}<!--
-->|{{{gen2|}}}<!--
-->|{{#if:{{{gen3|}}}|or}}<!--
-->|{{{gen3|}}}<!--
-->|{{#if:{{{gen4|}}}|or}}<!--
-->|{{{gen4|}}}<!--
-->|f4accel-form=gen{{!}}s<!--
-->|f5accel-form=gen{{!}}s<!--
-->|f6accel-form=gen{{!}}s<!--
-->|f7accel-form=gen{{!}}s<!--
-->|{{#ifeq:{{{3|}}}|-|no plural}}<!--
-->|<!--
-->|{{#switch:{{{3|}}}|?|-|=|#default=plural}}<!--
-->|{{{3|}}}<!--
-->|{{#if:{{{pl2|}}}|or}}<!--
-->|{{{pl2|}}}<!--
-->|{{#if:{{{pl3|}}}|or}}<!--
-->|{{{pl3|}}}<!--
-->|{{#if:{{{pl4|}}}|or}}<!--
-->|{{{pl4}}}<!--
-->|f8accel-form=p<!--
-->|f9accel-form=p<!--
-->|f10accel-form=p<!--
-->|{{#if:{{{genpl|}}}|genitive plural}}<!--
-->|{{{genpl|}}}<!--
-->|f11accel-form=genpl<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
kzhbndp6lwrcpocslfhvpmskk5m4th2
Mòideal:labels/data/lang/gd
828
17305
88675
88350
2026-07-30T12:57:40Z
Altronic
4137
test
88675
Scribunto
text/plain
local labels = {}
labels["Applecross"] = {
Wikipedia = "Applecross",
regional_categories = "Wester Ross",
}
labels["Argyll"] = {
Wikipedia = "Argyll",
region = "[[Argyll]] in western [[Scotland]]",
regional_categories = true,
parent = true,
}
labels["Arran"] = {
Wikipedia = "Arran Gaelic",
regional_categories = true,
parent = "South Argyll",
verb = "formerly spoken",
prep = "on",
region = "the [[Isle of Arran]]",
type = "extinct",
}
labels["Ardnamurchan"] = {
Wikipedia = "Ardnamurchan",
regional_categories = true,
parent = true,
region = "the [[Ardnamurchan]] Peninsula in the historic province of [[Lochaber]]",
}
labels["Badenoch"] = {
Wikipedia = "Badenoch",
regional_categories = true,
parent = true,
region = "the district of [[Badenoch]] in the [[Scottish Highlands]]",
}
labels["Barra"] = {
Wikipedia = "Barra",
regional_categories = true,
parent = "Southern Hebridean",
prep = "on",
region = "the island of [[Barra]] in the [[Outer Hebrides]]",
}
labels["Benbecula"] = {
Wikipedia = "Benbecula",
regional_categories = true,
parent = "Uist",
prep = "on",
region = "the island of [[Benbecula]] in the [[Outer Hebrides]]",
}
labels["Bernera"] = {
aliases = {"Great Bernera"},
Wikipedia = "Great Bernera",
regional_categories = "Lewis",
}
labels["Bracadale"] = {
Wikipedia = "Bracadale",
regional_categories = "Skye",
}
labels["Canada"] = {
Wikipedia = "Canadian Gaelic",
regional_categories = "Canadian",
parent = true,
}
labels["Cape Breton"] = {
aliases = {"Cape Breton Island"},
Wikipedia = "Cape Breton Island",
regional_categories = true,
parent = "Canada",
}
labels["Coigach"] = {
aliases = {"Coigeach"},
Wikipedia = "Coigach",
regional_categories = true,
parent = "Ross-shire",
region = "the peninsula north of [[Ullapool]] in [[Ross]] in the [[Scottish Highlands]]",
}
labels["Colonsay"] = {
Wikipedia = "Colonsay",
regional_categories = true,
parent = true,
prep = "on",
region = "the island of [[Colonsay]] in the [[Inner Hebrides]]",
}
labels["Deeside"] = {
Wikipedia = "Deeside Gaelic",
regional_categories = true,
parent = true,
verb = "formerly spoken",
region = "[[Aberdeenshire]], until 1984",
type = "extinct",
}
labels["Duirinish"] = {
aliases = {"Dunvegan"},
Wikipedia = "Duirinish, Skye",
regional_categories = "Skye",
}
labels["Easter Ross"] = {
Wikipedia = "Easter Ross",
regional_categories = true,
parent = "Ross-shire",
region = "the eastern part of the area of [[Ross]] in the [[Scottish Highlands]]",
}
labels["Eigg"] = {
Wikipedia = "Eigg",
regional_categories = true,
parent = true,
prep = "on",
region = "the island of [[Eigg]] in the [[Inner Hebrides]]",
}
labels["Eriskay"] = {
Wikipedia = "Eriskay",
regional_categories = true,
parent = "Uist",
prep = "on",
region = "the island of [[Eriskay]] in the [[Outer Hebrides]]",
}
labels["Gigha"] = {
Wikipedia = "Gigha",
regional_categories = true,
parent = "South Argyll",
prep = "in",
region = "the island of [[Gigha]] off the west coast of [[Kintyre]]",
}
labels["Harris"] = {
Wikipedia = "Harris, Outer Hebrides",
regional_categories = true,
parent = "Southern Hebridean",
region = "the southern and more mountainous part of the island of [[Lewis and Harris]], the largest island in the [[Outer Hebrides]]",
}
labels["Islay"] = {
Wikipedia = "Islay",
regional_categories = true,
parent = "South Argyll",
prep = "on",
region = "the island of [[Islay]], the southernmost island of the [[Inner Hebrides]]",
}
labels["Jura"] = {
Wikipedia = "Jura, Scotland",
regional_categories = true,
parent = "South Argyll",
prep = "on",
region = "the island of [[Jura]] in the [[Inner Hebrides]]",
}
labels["Kintyre"] = {
Wikipedia = "Kintyre",
regional_categories = true,
parent = "South Argyll",
region = "the peninsula of [[Kintyre]] in western [[Scotland]]",
}
labels["Lewis"] = {
aliases = {"Isle of Lewis"},
Wikipedia = "Isle of Lewis",
regional_categories = true,
parent = true,
region = "the northern part of the island of [[Lewis and Harris]], the largest island in the [[Outer Hebrides]]",
}
labels["Lismore"] = {
Wikipedia = "Lismore, Scotland",
regional_categories = true,
parent = "Argyll",
}
labels["Lochaber"] = {
Wikipedia = "Lochaber",
regional_categories = true,
parent = true,
region = "[[Lochaber]], a historic province in the western part of the [[Scottish Highlands]]",
}
labels["Lochalsh"] = {
Wikipedia = "Lochalsh",
regional_categories = true,
parent = "Ross-shire",
region = "the region of [[Lochalsh]] in the western part of the [[Scottish Highlands]]",
}
labels["Lochs"] = {
aliases = {"Leurbost"},
Wikipedia = "Lochs, Outer Hebrides",
regional_categories = "Lewis",
}
labels["Mackay Country"] = {
aliases = {"Reay", "MacKay Country", "Strathnaver", "North Sutherland"},
Wikipedia = "Strathnaver",
regional_categories = true,
parent = true,
region = "the historic province of [[Mackay Country]] in the northern part of the [[Scottish Highlands]]",
}
labels["Mull"] = {
Wikipedia = "Isle of Mull",
regional_categories = true,
parent = "Argyll",
prep = "on",
region = "the island of [[Mull]], the second largest island of the [[Inner Hebrides]]",
}
labels["mì-GOC litreachadh"] = {
Wikipedia = "Gnàthachas litreachaidh na Gàidhlig",
aliases = {"non-GOC spelling", "non-GOC", "mì-GOC"}
}
labels["Ness"] = {
Wikipedia = "Ness, Lewis",
regional_categories = "Lewis",
}
labels["North Uist"] = {
Wikipedia = "North Uist",
regional_categories = true,
parent = "Uist",
prep = "on",
region = "the island of [[North Uist]] in the [[Outer Hebrides]]",
}
labels["Perthshire"] = {
Wikipedia = "Perthshire",
regional_categories = true,
parent = true,
region = "the historic county of [[Perthshire]] in central [[Scotland]]",
}
labels["Prince Edward Island"] = {
Wikipedia = "Prince Edward Island",
regional_categories = true,
parent = "Canada",
}
labels["Raasay"] = {
aliases = {"Isle of Raasay"},
Wikipedia = "Raasay",
regional_categories = true,
parent = "Skye",
prep = "on",
region = "the island of [[Raasay]] in the [[Inner Hebrides]], between [[Skye]] and the mainland",
}
labels["Ross-shire"] = {
aliases = {"Ross"},
Wikipedia = "Ross-shire",
regional_categories = true,
parent = true,
region = "the historic county of [[Ross-shire]] in the [[Scottish Highlands]]",
}
labels["Scalpay"] = {
Wikipedia = "Scalpay, Outer Hebrides",
regional_categories = true,
parent = "Harris",
prep = "on",
region = "the island of [[Scalpay, Outer Hebrides|Scalpay]] in the [[Outer Hebrides]]",
}
labels["Skye"] = {
aliases = {"Isle of Skye"},
Wikipedia = "Isle of Skye",
regional_categories = true,
parent = true,
prep = "on",
region = "the island of [[Syke]], the largest island of the [[Inner Hebrides]]",
}
labels["Sleat"] = {
Wikipedia = "Sleat",
regional_categories = "Skye",
}
labels["South Argyll"] = {
aliases = {"Southwestern"},
Wikipedia = "South Argyll dialect group",
regional_categories = true,
parent = "Argyll",
region = "the islands of [[Islay]], [[Jura, Scotland|Jura]], [[Colonsay]], [[Gigha]] and [[Isle of Arran|Arran]], and the peninsula of [[Kintyre]]",
}
labels["South Uist"] = {
Wikipedia = "South Uist",
regional_categories = true,
parent = "Uist",
prep = "on",
region = "the island of [[South Uist]], the second largest island of the [[Outer Hebrides]]",
}
labels["Southern Hebridean"] = {
Wikipedia = "Southern Hebridean dialect group",
regional_categories = true,
region = "the island groups of [[Harris, Outer Hebrides|Harris]], [[Uist]] and [[Barra]]",
}
labels["Strath"] = {
aliases = {"Strath Swordale"},
regional_categories = "Skye",
}
labels["Strathspey"] = {
Wikipedia = "Strathspey, Scotland",
regional_categories = true,
parent = true,
region = "the region of [[Strathspey]], comprising part of the valley of [[Spey]] in the [[Scottish Highlands]]",
}
labels["Sutherland"] = {
aliases = {"East Sutherland"},
Wikipedia = "East Sutherland Gaelic",
regional_categories = true,
parent = true,
verb = "formerly spoken",
region = "the historic county of [[Sutherland]] in the [[Scottish Highlands]]",
type = "extinct",
}
labels["Tiree"] = {
Wikipedia = "Tiree",
regional_categories = true,
parent = true,
region = "the island of [[Tiree]], the most westerly island of the [[Inner Hebrides]]",
}
labels["Trotternish"] = {
Wikipedia = "Trotternish",
regional_categories = "Skye",
}
labels["Uig"] = {
aliases = {"Uig Lewis"},
Wikipedia = "Uig, Lewis",
regional_categories = "Lewis",
}
labels["Uist"] = {
Wikipedia = "Uist",
regional_categories = true,
parent = "Southern Hebridean",
prep = "in",
region = "the archipelago of [[Uist]], part of the [[Outer Hebrides]]",
}
labels["Wester Ross"] = {
Wikipedia = "Wester Ross",
regional_categories = true,
parent = "Ross-shire",
region = "the western part of the area of [[Ross]] in the [[Scottish Highlands]]",
}
return require("Module:labels").finalize_data(labels)
sy3tqfcbl212yvac30t949hdjmizazu
Teamplaid:gd-proper noun
10
17767
88699
88479
2026-07-30T20:50:04Z
Altronic
4137
88699
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{head|gd|{{#if:{{{suff|}}}|suffix|proper noun}}|head={{{head|}}}|sort={{{sort|}}}<!--
-->|g={{{1|?}}}<!--
-->|g2={{{g2|}}}<!--
-->|g3={{{g3|}}}<!--
-->|{{#if:{{{dat|}}}|dative singular}}<!--
-->|{{{dat|}}}<!--
-->|{{#if:{{{dat2|}}}|or}}<!--
-->|{{{dat2|}}}<!--
-->|{{#if:{{{dat3|}}}|or}}<!--
-->|{{{dat3|}}}<!--
-->|f1accel-form=dat{{!}}s<!--
-->|f2accel-form=dat{{!}}s<!--
-->|f3accel-form=dat{{!}}s<!--
-->|{{#if:{{{2|}}}|genitive singular}}<!--
-->|{{{2|}}}<!--
-->|{{#if:{{{gen2|}}}|or}}<!--
-->|{{{gen2|}}}<!--
-->|{{#if:{{{gen3|}}}|or}}<!--
-->|{{{gen3|}}}<!--
-->|{{#if:{{{gen4|}}}|or}}<!--
-->|{{{gen4|}}}<!--
-->|f4accel-form=gen{{!}}s<!--
-->|f5accel-form=gen{{!}}s<!--
-->|f6accel-form=gen{{!}}s<!--
-->|f7accel-form=gen{{!}}s<!--
-->|{{#ifeq:{{{3|}}}|-|no plural}}<!--
-->|<!--
-->|{{#switch:{{{3|}}}|?|-|=|#default=plural}}<!--
-->|{{{3|}}}<!--
-->|{{#if:{{{pl2|}}}|or}}<!--
-->|{{{pl2|}}}<!--
-->|{{#if:{{{pl3|}}}|or}}<!--
-->|{{{pl3|}}}<!--
-->|{{#if:{{{pl4|}}}|or}}<!--
-->|{{{pl4}}}<!--
-->|f8accel-form=p<!--
-->|f9accel-form=p<!--
-->|f10accel-form=p<!--
-->|{{#if:{{{genpl|}}}|genitive plural}}<!--
-->|{{{genpl|}}}<!--
-->|f11accel-form=genpl<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
eed3m415foi8rk6umfhnuv4jpdcswr7
Èirinn
0
17769
88679
88485
2026-07-30T15:18:00Z
Altronic
4137
88679
wikitext
text/x-wiki
==Gàidhlig==
[[Image:LocationIslandIreland.png|thumb|Àite an Eilean '''Èireann'''.]]
===Cruthan eile===
* [[Éirinn]] {{lb|gd|mì-GOC litreachadh}}
===Ainmear sònrachaidh===
{{gd-proper noun|b|Èireann|-}}
# [[eilean|Eilean]] mòr a th' ann an [[Roinn-Eòrpa]] iar-thuathach, ri taobh Eilean na [[Breatann Mòr|Breatainne Mòire]].
# [[dùthaich|Dùthaich]] a th' ann an [[Roinn-Eòrpa]] iar-thuathach, anns an Eilean Èireann.
#: {{synonyms|gd|Poblachd na h-Èireann}}
====Teàrnadh====
{{gd-decl-Èirinn}}
===Mùthachadh===
{{gd-mut}}
===Tuilleadh fiosrachadh===
* {{R:Dwelly}}
b2hwswphoxqn7ghb79kx3556i8j10yk
attá
0
17851
88673
2026-07-30T12:12:29Z
Altronic
4137
Chaidh duilleag le "==Meadhan-Ghàidhlig== ===Freumhachadh=== {{root|mga|ine-pro|*steh₂-}} On {{inh|mga|sga|at·tá}}. ===Fuaimneachadh=== * {{IPA|mga|/aˈtaː/}} ===Gnìomhair=== {{head|mga|verb|head=at·tá}} # [[bi]] ====Sliochdan==== * {{desc|ghc|a-tá}} * {{desc|ga|tá}} * {{desc|gv|ta}} * {{desc|gd|tà|tha}} ==Seann-Ghàidhlig== ===Cruthan eile=== * {{alter|sga|ad·tá|a·tá|at·táa|a·táa}} ===Freumhachadh=== {{root|sga|ine-pro|*steh₂-}} On {{affix|sga|..." a chruthachadh
88673
wikitext
text/x-wiki
==Meadhan-Ghàidhlig==
===Freumhachadh===
{{root|mga|ine-pro|*steh₂-}}
On {{inh|mga|sga|at·tá}}.
===Fuaimneachadh===
* {{IPA|mga|/aˈtaː/}}
===Gnìomhair===
{{head|mga|verb|head=at·tá}}
# [[bi]]
====Sliochdan====
* {{desc|ghc|a-tá}}
* {{desc|ga|tá}}
* {{desc|gv|ta}}
* {{desc|gd|tà|tha}}
==Seann-Ghàidhlig==
===Cruthan eile===
* {{alter|sga|ad·tá|a·tá|at·táa|a·táa}}
===Freumhachadh===
{{root|sga|ine-pro|*steh₂-}}
On {{affix|sga|ad-|·tá}}.
===Fuaimneachadh===
{{sga-IPA}}
===Gnìomhair===
{{sga-verb|prot=·tá|[[buith]], [[buid]]|head=at·tá}}
# [[bi]]
====Nòtaichean ùsaide====
Chleachdadh ''at·tá'' leis na co-ghnìomhairean, abairtean nan co-ghnìomhairean agus abairtean nan roimhearan. Leis na h-ainmearan, na riochdairean agus na buadhairean, chleachdadh ''{{l|sga|is}}'' na àite.
====Co-nasgadh====
{{sga-conj-attá}}
====Sliochdan====
* {{desctree|mga|at·tá}}
lomok9b511m73nsxssd8ocy8d03z1jw
Mòideal:object usage/style.css
828
17852
88676
2026-04-15T09:00:35Z
en>Surjection
0
Changed protection settings for "[[Module:object usage/style.css]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite))
88676
sanitized-css
text/css
.object-usage-tag {
font-style: italic;
}
.deprecated {
color: var(--wikt-palette-grey-lime-8,olivedrab);
}
gnijkdu0e20qpciwdwr4k25ijoc1ntl
88677
88676
2026-07-30T13:56:46Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Module:object_usage/style.css]]
88676
sanitized-css
text/css
.object-usage-tag {
font-style: italic;
}
.deprecated {
color: var(--wikt-palette-grey-lime-8,olivedrab);
}
gnijkdu0e20qpciwdwr4k25ijoc1ntl
Teamplaid:cog
10
17853
88680
2023-07-08T19:03:34Z
en>Theknightwho
0
Changed protection settings for "[[Template:cog]]": Highly visible template/module ([Edit=Allow only template editors and administrators] (indefinite) [Move=Allow only template editors and administrators] (indefinite))
88680
wikitext
text/x-wiki
#REDIRECT [[Template:cognate]]
9vitttkk3dkte091z8ys1es9cbxf3o9
88681
88680
2026-07-30T15:31:48Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:cog]]
88680
wikitext
text/x-wiki
#REDIRECT [[Template:cognate]]
9vitttkk3dkte091z8ys1es9cbxf3o9
Teamplaid:cognate
10
17854
88682
2025-02-08T03:28:17Z
en>Benwing2
0
entry points consolidated into [[Module:etymology/templates]]
88682
wikitext
text/x-wiki
<includeonly>{{#invoke:etymology/templates|cognate}}</includeonly><!--
--><noinclude>{{cog|und|test}}{{documentation}}
[[fa:الگو:cognate]]</noinclude>
391psw99skib7cng9d3izuk2o7vs9ic
88683
88682
2026-07-30T15:31:54Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:cognate]]
88682
wikitext
text/x-wiki
<includeonly>{{#invoke:etymology/templates|cognate}}</includeonly><!--
--><noinclude>{{cog|und|test}}{{documentation}}
[[fa:الگو:cognate]]</noinclude>
391psw99skib7cng9d3izuk2o7vs9ic
ta
0
17855
88684
2026-07-30T16:03:26Z
Altronic
4137
Chaidh duilleag le "==Gàidhlig Mhanainneach== ===Freumhachadh=== {{root|gv|ine-pro|*steh₂-}} On {{inh|gv|sga|attá|at·tá}}, on {{inh|gv|cel-pro|*[[ad-]][[tāyeti]]}} (samhlaich {{cog|cy|taw}}), on {{der|gv|ine-pro|*steh₂-||seas}}. Co-dhàimh le {{cog|ga|tá}}, {{cog|gd|tà}} agus {{cog|gd|tha}}. ===Fuaimneachadh=== * {{IPA|gv|/ta/|/tɛː/}} ===Gnìomhair=== {{head|gv|cruth gnìomhair}} # {{infl of|gv|ve||làthaireach|neo-eisimeileach}}: [[tha]] ===Nòtaichean ùs..." a chruthachadh
88684
wikitext
text/x-wiki
==Gàidhlig Mhanainneach==
===Freumhachadh===
{{root|gv|ine-pro|*steh₂-}}
On {{inh|gv|sga|attá|at·tá}}, on {{inh|gv|cel-pro|*[[ad-]][[tāyeti]]}} (samhlaich {{cog|cy|taw}}), on {{der|gv|ine-pro|*steh₂-||seas}}. Co-dhàimh le {{cog|ga|tá}}, {{cog|gd|tà}} agus {{cog|gd|tha}}.
===Fuaimneachadh===
* {{IPA|gv|/ta/|/tɛː/}}
===Gnìomhair===
{{head|gv|cruth gnìomhair}}
# {{infl of|gv|ve||làthaireach|neo-eisimeileach}}: [[tha]]
===Nòtaichean ùsaide===
A' co-aontachadh leis {{l|gv|yn|t=an}} a chruthachadh {{l|gv|ta'n}}. A' co-aontachadh leis na riochdairean pearsanta, a chruthachadh {{l|gv|t'ou}}, {{l|gv|t'ee}}, {{l|gv|t'eh}}/{{l|gv|te}} agus {{l|gv|t'ad}}.
mptgl95yqcb6ysyp37gvx6klnd4xl5y
Teamplaid:sga-mutation
10
17856
88685
2025-07-25T02:47:21Z
en>Mellohi!
0
roll out conversion to Lua
88685
wikitext
text/x-wiki
{{#invoke:sga-mutation|show}}<!--
--><noinclude>{{documentation}}</noinclude>
jq2oadn0n3nkov3vg6k3ewhs0gh59eb
88686
88685
2026-07-30T18:31:40Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:sga-mutation]]
88685
wikitext
text/x-wiki
{{#invoke:sga-mutation|show}}<!--
--><noinclude>{{documentation}}</noinclude>
jq2oadn0n3nkov3vg6k3ewhs0gh59eb
Mòideal:sga-mutation
828
17857
88687
2025-12-22T07:30:36Z
en>Fish bowl
0
[[Special:LintErrors/missing-end-tag]]
88687
Scribunto
text/plain
local export = {}
local m_IPA = require("Module:IPA")
local m_str_utils = require("Module:string utilities")
local m_table = require("Module:table")
local lang = require("Module:languages").getByCode("sga")
local gsub = m_str_utils.gsub
local len = m_str_utils.len
local match = m_str_utils.match
local sub = m_str_utils.sub
local find = m_str_utils.find
local char = m_str_utils.char
local upper = m_str_utils.upper
local lower = m_str_utils.lower
local function lself(text)
text = mw.getCurrentFrame():expandTemplate{
title = "l-self",
args = {"sga", text},
}
return text
end
local function small(text)
text = mw.getCurrentFrame():expandTemplate{
title = "small",
args = {text},
}
return text
end
local function q(text)
text = mw.getCurrentFrame():expandTemplate{
title = "q",
args = {text},
}
return text
end
local function IPAchar(text)
text = mw.getCurrentFrame():expandTemplate{
title = "IPAchar",
args = {text},
}
return text
end
local eclipses = {
["m"] = "mm", ["n"] = "nn", ["M"] = "mM", ["N"] = "nN",
["r"] = "rr", ["l"] = "ll", ["R"] = "Rr", ["L"] = "Ll",
["b"] = "mb", ["d"] = "nd", ["g"] = "ng", ["B"] = "mB", ["D"] = "nD", ["G"] = "nG",
["p"] = "b", ["t"] = "d", ["c"] = "ɡ", ["P"] = "b", ["T"] = "d", ["C"] = "ɡ",
["f"] = "β̃", ["F"] = "β̃",
}
local lenitions = {
["p"] = "ph", ["t"] = "th", ["c"] = "ch", ["P"] = "Ph", ["T"] = "Th", ["C"] = "Ch",
["b"] = "β", ["d"] = "ð", ["g"] = "ɣ", ["B"] = "β", ["D"] = "ð", ["G"] = "ɣ",
["m"] = "β̃", ["M"] = "β̃",
["N"] = "n",
["f"] = "ḟ", ["s"] = "ṡ", ["F"] = "Ḟ", ["S"] = "Ṡ", ["sw"] = "ph", ["Sw"] = "Ph",
["r"] = "ɾ", ["R"] = "ɾ", ["L"] = "l",
}
local radicals = {
["sw"] = "s", ["Sw"] = "S",
}
local function radical(text, xp)
if find(text, "·") and not xp then punct, text = match(text, "(.*·)(.*)") end
if punct then punct_test = match(punct, "[aeiou]·") end
local note
if find(text, "^[Ss]w") then
text = gsub(text, "^[Ss]w", radicals)
elseif find(text, "^[aæeiïouháǽéíóúAÆEIÏOUHÁǼÉÍÓÚ]") then
note = "<br/>" .. small(q("pronounced with " .. IPAchar("/h/") .. " in ''h''-prothesis environments"))
elseif find(text, "^[rlmn]") and punct then
if punct_test then
note = "<br/>" .. small("''also'' " .. lself(punct .. gsub(text, "^[rlmn]", eclipses)))
end
elseif find(text, "^[rlmnRLMN]") then
note = "<br/>" .. small("''also'' " .. lself(gsub(text, "^[rlmnRLMN]", eclipses)) .. " ''in h-prothesis environments''")
end
if punct then text = punct .. text end
return text, note
end
local function lenite(text, xp)
if find(text, "·") and not xp then punct, text = match(text, "(.*·)(.*)") end
local note
if find(text, "^[tcfsTCFS]w?") then
if not find(text, "^[Ss][cptm]") then
text = gsub(text, "^%ww?", lenitions)
end
elseif find(text, "^[pP]") then
text = gsub(text, "^%w", lenitions)
note = "<br/>" .. small("''or unchanged''")
elseif find(text, "^[bdgmrlnBDGMRLN]") then
local len_initial = gsub(sub(text, 1, 1), ".", lenitions)
if find(text, "^[Ss]?[pbmtdncgfslrPBMTDNCGFSLR][pbmtdncgfslr]?[eiéíï]") then
len_initial = len_initial .. "ʲ"
end
note = "<br/>" .. small("''pronounced with'' " .. IPAchar("/" .. len_initial .. "-/"))
end
if punct then text = punct .. text end
return text, note
end
local function eclipse(text, xp)
if find(text, "·") and not xp then punct, text = match(text, "(.*·)(.*)") end
if punct then punct_test = match(punct, "[aeiou]·") end
if find(text, "^[Ss]w") then
text = gsub(text, "^[Ss]w", radicals)
elseif find(text, "^[bdgBDG]") then
text = gsub(text, "^%w", eclipses)
elseif find(text, "^[ptcfPTCF]") then
local n_initial = gsub(sub(text, 1, 1), ".", eclipses)
if find(text, "^[Ss]?[pbmtdncgfslrPBMTDNCGFSLR][pbmtdncgfslr]?[eiéíï]") then
n_initial = n_initial .. "ʲ"
end
if find(n_initial, "d") then
n_initial = gsub(n_initial, "(d)", "%1̪")
n_initial = gsub(n_initial, "(d̪)ʲ", "%1̠ʲ")
end
note = "<br/>" .. small("''pronounced with'' " .. IPAchar("/" .. n_initial .. "-/"))
elseif find(text, "^[rlmn]") and punct then
if punct_test then
note = "<br/>" .. small("''also'' " .. lself(punct .. gsub(text, "^[rlmn]", eclipses)))
end
elseif find(text, "^[rlmnRLMN]") then
note = "<br/>" .. small("''also'' " .. lself(gsub(text, "^[rlmnRLMN]", eclipses)))
elseif find(text, "^[aæeiïouháǽéíóú]") then
text = "n-" .. text
elseif find(text, "^[AÆEIÏOUHÁǼÉÍÓÚ]") then
text = "n" .. text
end
if punct then text = punct .. text end
return text, note
end
local preverbs = {
"ad", "con", "ɔ", "for", "fo", "fu", "do", "du", "as", "etar", "eter", "ar",
"ind", "in", "imm", "im", "ro", "ru", "fris",
"remi", "íarmi", "tarmi", "tremi",
"ocu",
"·",
}
local function preverb(text)
-- Splits a complex verb into detected first prefix and post-prefix material
for i, preverb in ipairs(preverbs) do
if find(text, "^" .. preverb) then
local main = sub(text, len(preverb)+1, -1)
if find(main, "^[%-·]") then main = gsub(main, "^[%-·]", "") end -- allow for fo-reith etc.
if preverb == "·" then preverb = "" end -- prototonic forms of verbs
return preverb .. "·" .. main
end
end
end
function export.show(frame)
local parent_args = frame:getParent().args
local params = {
[1] = {},
[2] = {},
["p"] = {}
}
local args = require("Module:parameters").process(parent_args, params)
local title = mw.loadData("Module:headword/data").pagename
local input = args[1] or title
-- Temporary compatibility with old parameter style while it is being deprecated
if args[1] and args[2] and not args["p"] then
input = args[1] .. args[2]
elseif args[1] and args[2] and args["p"] then
args[2] = args[1] .. args[2]
args[1] = "p"
end
-- Special values for 1=
if args[1] == "p" then
local complex = args[2] or title
if args["p"] then
input = args["p"] .. args[2]
else
input = preverb(complex)
end
elseif args[1] == "xp" then
input = preverb(title)
xp = true
end
if args[1] == "pt" then input = "·" .. (args[2] or title) end
if args[1] == "sw" then input = gsub(title, "^([Ss])", "%1w") end
if args[1] and find(args[1], "%-") then
local prefix = gsub(args[1], "%-", "·")
local tonic = sub(title, len(prefix), -1)
input = prefix .. tonic
end
local radical, rad_note = radical(input, xp)
local lenition, len_note = lenite(input, xp)
local eclipsis, ecl_note = eclipse(input, xp)
local radical_title = radical
if find(radical, "[dtlns]·[dtlns]") or find(radical, "[mpb]·[mpb]") or find(radical, "[cg]·[cg]") then
lenition = radical
len_note = ""
end
radical = lself(radical)
lenition = lself(lenition)
eclipsis = lself(eclipsis)
if find(input, "^[Ss]w") then lenition = lenition .. ", " .. lself(gsub(input, "^[Ss]w", {["sw"] = "f", ["Sw"] = "F"})) end
if rad_note then radical = radical .. rad_note end
if len_note then lenition = lenition .. len_note end
if ecl_note then eclipsis = eclipsis .. ecl_note end
local table_top = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = 'Mutation of' .. " ''" .. radical_title .. "''",
palette = 'yellow',
},
}
local table_bottom = mw.getCurrentFrame():expandTemplate{
title= "inflection-table-bottom",
args = {notes = "<p style=\"font-size: 85%\">''Note:'' Certain mutated forms of some words can never occur in Old Irish.<br/> All possible mutated forms are displayed for convenience.</p>"},
}
text = table_top .. "! radical !! lenition !! nasalization \n|-\n" .. "| " .. radical .. "|| " .. lenition .. "|| " .. eclipsis .. " \n" .. table_bottom
return text
end
return export
j8uscnamepxd6csd8glxm192u997o6n
88688
88687
2026-07-30T18:32:08Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Module:sga-mutation]]
88687
Scribunto
text/plain
local export = {}
local m_IPA = require("Module:IPA")
local m_str_utils = require("Module:string utilities")
local m_table = require("Module:table")
local lang = require("Module:languages").getByCode("sga")
local gsub = m_str_utils.gsub
local len = m_str_utils.len
local match = m_str_utils.match
local sub = m_str_utils.sub
local find = m_str_utils.find
local char = m_str_utils.char
local upper = m_str_utils.upper
local lower = m_str_utils.lower
local function lself(text)
text = mw.getCurrentFrame():expandTemplate{
title = "l-self",
args = {"sga", text},
}
return text
end
local function small(text)
text = mw.getCurrentFrame():expandTemplate{
title = "small",
args = {text},
}
return text
end
local function q(text)
text = mw.getCurrentFrame():expandTemplate{
title = "q",
args = {text},
}
return text
end
local function IPAchar(text)
text = mw.getCurrentFrame():expandTemplate{
title = "IPAchar",
args = {text},
}
return text
end
local eclipses = {
["m"] = "mm", ["n"] = "nn", ["M"] = "mM", ["N"] = "nN",
["r"] = "rr", ["l"] = "ll", ["R"] = "Rr", ["L"] = "Ll",
["b"] = "mb", ["d"] = "nd", ["g"] = "ng", ["B"] = "mB", ["D"] = "nD", ["G"] = "nG",
["p"] = "b", ["t"] = "d", ["c"] = "ɡ", ["P"] = "b", ["T"] = "d", ["C"] = "ɡ",
["f"] = "β̃", ["F"] = "β̃",
}
local lenitions = {
["p"] = "ph", ["t"] = "th", ["c"] = "ch", ["P"] = "Ph", ["T"] = "Th", ["C"] = "Ch",
["b"] = "β", ["d"] = "ð", ["g"] = "ɣ", ["B"] = "β", ["D"] = "ð", ["G"] = "ɣ",
["m"] = "β̃", ["M"] = "β̃",
["N"] = "n",
["f"] = "ḟ", ["s"] = "ṡ", ["F"] = "Ḟ", ["S"] = "Ṡ", ["sw"] = "ph", ["Sw"] = "Ph",
["r"] = "ɾ", ["R"] = "ɾ", ["L"] = "l",
}
local radicals = {
["sw"] = "s", ["Sw"] = "S",
}
local function radical(text, xp)
if find(text, "·") and not xp then punct, text = match(text, "(.*·)(.*)") end
if punct then punct_test = match(punct, "[aeiou]·") end
local note
if find(text, "^[Ss]w") then
text = gsub(text, "^[Ss]w", radicals)
elseif find(text, "^[aæeiïouháǽéíóúAÆEIÏOUHÁǼÉÍÓÚ]") then
note = "<br/>" .. small(q("pronounced with " .. IPAchar("/h/") .. " in ''h''-prothesis environments"))
elseif find(text, "^[rlmn]") and punct then
if punct_test then
note = "<br/>" .. small("''also'' " .. lself(punct .. gsub(text, "^[rlmn]", eclipses)))
end
elseif find(text, "^[rlmnRLMN]") then
note = "<br/>" .. small("''also'' " .. lself(gsub(text, "^[rlmnRLMN]", eclipses)) .. " ''in h-prothesis environments''")
end
if punct then text = punct .. text end
return text, note
end
local function lenite(text, xp)
if find(text, "·") and not xp then punct, text = match(text, "(.*·)(.*)") end
local note
if find(text, "^[tcfsTCFS]w?") then
if not find(text, "^[Ss][cptm]") then
text = gsub(text, "^%ww?", lenitions)
end
elseif find(text, "^[pP]") then
text = gsub(text, "^%w", lenitions)
note = "<br/>" .. small("''or unchanged''")
elseif find(text, "^[bdgmrlnBDGMRLN]") then
local len_initial = gsub(sub(text, 1, 1), ".", lenitions)
if find(text, "^[Ss]?[pbmtdncgfslrPBMTDNCGFSLR][pbmtdncgfslr]?[eiéíï]") then
len_initial = len_initial .. "ʲ"
end
note = "<br/>" .. small("''pronounced with'' " .. IPAchar("/" .. len_initial .. "-/"))
end
if punct then text = punct .. text end
return text, note
end
local function eclipse(text, xp)
if find(text, "·") and not xp then punct, text = match(text, "(.*·)(.*)") end
if punct then punct_test = match(punct, "[aeiou]·") end
if find(text, "^[Ss]w") then
text = gsub(text, "^[Ss]w", radicals)
elseif find(text, "^[bdgBDG]") then
text = gsub(text, "^%w", eclipses)
elseif find(text, "^[ptcfPTCF]") then
local n_initial = gsub(sub(text, 1, 1), ".", eclipses)
if find(text, "^[Ss]?[pbmtdncgfslrPBMTDNCGFSLR][pbmtdncgfslr]?[eiéíï]") then
n_initial = n_initial .. "ʲ"
end
if find(n_initial, "d") then
n_initial = gsub(n_initial, "(d)", "%1̪")
n_initial = gsub(n_initial, "(d̪)ʲ", "%1̠ʲ")
end
note = "<br/>" .. small("''pronounced with'' " .. IPAchar("/" .. n_initial .. "-/"))
elseif find(text, "^[rlmn]") and punct then
if punct_test then
note = "<br/>" .. small("''also'' " .. lself(punct .. gsub(text, "^[rlmn]", eclipses)))
end
elseif find(text, "^[rlmnRLMN]") then
note = "<br/>" .. small("''also'' " .. lself(gsub(text, "^[rlmnRLMN]", eclipses)))
elseif find(text, "^[aæeiïouháǽéíóú]") then
text = "n-" .. text
elseif find(text, "^[AÆEIÏOUHÁǼÉÍÓÚ]") then
text = "n" .. text
end
if punct then text = punct .. text end
return text, note
end
local preverbs = {
"ad", "con", "ɔ", "for", "fo", "fu", "do", "du", "as", "etar", "eter", "ar",
"ind", "in", "imm", "im", "ro", "ru", "fris",
"remi", "íarmi", "tarmi", "tremi",
"ocu",
"·",
}
local function preverb(text)
-- Splits a complex verb into detected first prefix and post-prefix material
for i, preverb in ipairs(preverbs) do
if find(text, "^" .. preverb) then
local main = sub(text, len(preverb)+1, -1)
if find(main, "^[%-·]") then main = gsub(main, "^[%-·]", "") end -- allow for fo-reith etc.
if preverb == "·" then preverb = "" end -- prototonic forms of verbs
return preverb .. "·" .. main
end
end
end
function export.show(frame)
local parent_args = frame:getParent().args
local params = {
[1] = {},
[2] = {},
["p"] = {}
}
local args = require("Module:parameters").process(parent_args, params)
local title = mw.loadData("Module:headword/data").pagename
local input = args[1] or title
-- Temporary compatibility with old parameter style while it is being deprecated
if args[1] and args[2] and not args["p"] then
input = args[1] .. args[2]
elseif args[1] and args[2] and args["p"] then
args[2] = args[1] .. args[2]
args[1] = "p"
end
-- Special values for 1=
if args[1] == "p" then
local complex = args[2] or title
if args["p"] then
input = args["p"] .. args[2]
else
input = preverb(complex)
end
elseif args[1] == "xp" then
input = preverb(title)
xp = true
end
if args[1] == "pt" then input = "·" .. (args[2] or title) end
if args[1] == "sw" then input = gsub(title, "^([Ss])", "%1w") end
if args[1] and find(args[1], "%-") then
local prefix = gsub(args[1], "%-", "·")
local tonic = sub(title, len(prefix), -1)
input = prefix .. tonic
end
local radical, rad_note = radical(input, xp)
local lenition, len_note = lenite(input, xp)
local eclipsis, ecl_note = eclipse(input, xp)
local radical_title = radical
if find(radical, "[dtlns]·[dtlns]") or find(radical, "[mpb]·[mpb]") or find(radical, "[cg]·[cg]") then
lenition = radical
len_note = ""
end
radical = lself(radical)
lenition = lself(lenition)
eclipsis = lself(eclipsis)
if find(input, "^[Ss]w") then lenition = lenition .. ", " .. lself(gsub(input, "^[Ss]w", {["sw"] = "f", ["Sw"] = "F"})) end
if rad_note then radical = radical .. rad_note end
if len_note then lenition = lenition .. len_note end
if ecl_note then eclipsis = eclipsis .. ecl_note end
local table_top = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = 'Mutation of' .. " ''" .. radical_title .. "''",
palette = 'yellow',
},
}
local table_bottom = mw.getCurrentFrame():expandTemplate{
title= "inflection-table-bottom",
args = {notes = "<p style=\"font-size: 85%\">''Note:'' Certain mutated forms of some words can never occur in Old Irish.<br/> All possible mutated forms are displayed for convenience.</p>"},
}
text = table_top .. "! radical !! lenition !! nasalization \n|-\n" .. "| " .. radical .. "|| " .. lenition .. "|| " .. eclipsis .. " \n" .. table_bottom
return text
end
return export
j8uscnamepxd6csd8glxm192u997o6n
Teamplaid:sga-conj-table-simple
10
17858
88689
2026-07-06T21:12:36Z
en>Benwing2
0
this is causing 600 errors; Undid revision [[Special:Diff/91510133|91510133]] by [[Special:Contributions/Mahagaja|Mahagaja]] ([[User talk:Mahagaja|talk]])
88689
wikitext
text/x-wiki
{{inflection-table-top|title={{{info}}}|palette=yellow|tall=yes|class=wide very-narrow}}
! colspan=2 |
! colspan=6 | active
! colspan=2 | passive
|-
! colspan=2 |
! colspan=3 | singular
! colspan=3 | plural
! colspan=1 rowspan=2 | singular
! colspan=1 rowspan=2 | plural
|-
! colspan=2 |
! class="secondary" | 1st
! class="secondary" | 2nd
! class="secondary" | 3rd
! class="secondary" | 1st
! class="secondary" | 2nd
! class="secondary" | 3rd
|-
! rowspan="3" | present indicative
! class="secondary" | {{abbr|abs.|absolute}}
| {{{present_1s_abso}}}
| {{{present_2s_abso}}}
| {{{present_3s_abso}}}
| {{{present_1p_abso}}}
| {{{present_2p_abso}}}
| {{{present_3p_abso}}}
| {{{present_ps_abso}}}
| {{{present_pp_abso}}}
|-
! class="secondary" | {{abbr|conj.|conjunct}}
| {{{present_1s_conj}}}
| {{{present_2s_conj}}}
| {{{present_3s_conj}}}
| {{{present_1p_conj}}}
| {{{present_2p_conj}}}
| {{{present_3p_conj}}}
| {{{present_ps_conj}}}
| {{{present_pp_conj}}}
|-
! class="secondary" | {{abbr|rel.|relative}}
|
|
| {{{present_3s_rel}}}
| {{{present_1p_rel}}}
|
| {{{present_3p_rel}}}
| {{{present_ps_rel}}}
| {{{present_pp_rel}}}
|-
| class="separator" colspan="999" |
|-
! colspan="2" | imperfect indicative
| {{{imperfect_1s}}}
| {{{imperfect_2s}}}
| {{{imperfect_3s}}}
| {{{imperfect_1p}}}
| {{{imperfect_2p}}}
| {{{imperfect_3p}}}
| {{{imperfect_ps}}}
| {{{imperfect_pp}}}
|-
| class="separator" colspan="999" |
|-
! rowspan="3" | preterite
! class="secondary" | {{abbr|abs.|absolute}}
| {{{preterite_1s_abso}}}
| {{{preterite_2s_abso}}}
| {{{preterite_3s_abso}}}
| {{{preterite_1p_abso}}}
| {{{preterite_2p_abso}}}
| {{{preterite_3p_abso}}}
| {{{preterite_ps_abso}}}
| {{{preterite_pp_abso}}}
|-
! class="secondary" | {{abbr|conj.|conjunct}}
| {{{preterite_1s_conj}}}
| {{{preterite_2s_conj}}}
| {{{preterite_3s_conj}}}
| {{{preterite_1p_conj}}}
| {{{preterite_2p_conj}}}
| {{{preterite_3p_conj}}}
| {{{preterite_ps_conj}}}
| {{{preterite_pp_conj}}}
|-
! class="secondary" | {{abbr|rel.|relative}}
|
|
| {{{preterite_3s_rel}}}
| {{{preterite_1p_rel}}}
|
| {{{preterite_3p_rel}}}
| {{{preterite_ps_rel}}}
| {{{preterite_pp_rel}}}
|-
| class="separator" colspan="999" |
|-
! rowspan="2" | perfect
! class="secondary" | {{abbr|deut.|deuterotonic}}
| {{{perfect_1s_deut}}}
| {{{perfect_2s_deut}}}
| {{{perfect_3s_deut}}}
| {{{perfect_1p_deut}}}
| {{{perfect_2p_deut}}}
| {{{perfect_3p_deut}}}
| {{{perfect_ps_deut}}}
| {{{perfect_pp_deut}}}
|-
! class="secondary" | {{abbr|prot.|prototonic}}
| {{{perfect_1s_prot}}}
| {{{perfect_2s_prot}}}
| {{{perfect_3s_prot}}}
| {{{perfect_1p_prot}}}
| {{{perfect_2p_prot}}}
| {{{perfect_3p_prot}}}
| {{{perfect_ps_prot}}}
| {{{perfect_pp_prot}}}
|-
| class="separator" colspan="999" |
|-
! rowspan="3" | future
! class="secondary" | {{abbr|abs.|absolute}}
| {{{future_1s_abso}}}
| {{{future_2s_abso}}}
| {{{future_3s_abso}}}
| {{{future_1p_abso}}}
| {{{future_2p_abso}}}
| {{{future_3p_abso}}}
| {{{future_ps_abso}}}
| {{{future_pp_abso}}}
|-
! class="secondary" | {{abbr|conj.|conjunct}}
| {{{future_1s_conj}}}
| {{{future_2s_conj}}}
| {{{future_3s_conj}}}
| {{{future_1p_conj}}}
| {{{future_2p_conj}}}
| {{{future_3p_conj}}}
| {{{future_ps_conj}}}
| {{{future_pp_conj}}}
|-
! class="secondary" | {{abbr|rel.|relative}}
|
|
| {{{future_3s_rel}}}
| {{{future_1p_rel}}}
|
| {{{future_3p_rel}}}
| {{{future_ps_rel}}}
| {{{future_pp_rel}}}
|-
| class="separator" colspan="999" |
|-
! colspan="2" | conditional
| {{{conditional_1s}}}
| {{{conditional_2s}}}
| {{{conditional_3s}}}
| {{{conditional_1p}}}
| {{{conditional_2p}}}
| {{{conditional_3p}}}
| {{{conditional_ps}}}
| {{{conditional_pp}}}
|-
| class="separator" colspan="999" |
|-
! rowspan="3" | present subjunctive
! class="secondary" | {{abbr|abs.|absolute}}
| {{{subjunctive_1s_abso}}}
| {{{subjunctive_2s_abso}}}
| {{{subjunctive_3s_abso}}}
| {{{subjunctive_1p_abso}}}
| {{{subjunctive_2p_abso}}}
| {{{subjunctive_3p_abso}}}
| {{{subjunctive_ps_abso}}}
| {{{subjunctive_pp_abso}}}
|-
! class="secondary" | {{abbr|conj.|conjunct}}
| {{{subjunctive_1s_conj}}}
| {{{subjunctive_2s_conj}}}
| {{{subjunctive_3s_conj}}}
| {{{subjunctive_1p_conj}}}
| {{{subjunctive_2p_conj}}}
| {{{subjunctive_3p_conj}}}
| {{{subjunctive_ps_conj}}}
| {{{subjunctive_pp_conj}}}
|-
! class="secondary" | {{abbr|rel.|relative}}
|
|
| {{{subjunctive_3s_rel}}}
| {{{subjunctive_1p_rel}}}
|
| {{{subjunctive_3p_rel}}}
| {{{subjunctive_ps_rel}}}
| {{{subjunctive_pp_rel}}}
|-
| class="separator" colspan="999" |
|-
! colspan="2" | past subjunctive
| {{{pastsubj_1s}}}
| {{{pastsubj_2s}}}
| {{{pastsubj_3s}}}
| {{{pastsubj_1p}}}
| {{{pastsubj_2p}}}
| {{{pastsubj_3p}}}
| {{{pastsubj_ps}}}
| {{{pastsubj_pp}}}
|-
| class="separator" colspan="999" |
|-
! colspan="2" | imperative
| {{{imperative_1s}}}
| {{{imperative_2s}}}
| {{{imperative_3s}}}
| {{{imperative_1p}}}
| {{{imperative_2p}}}
| {{{imperative_3p}}}
| {{{imperative_ps}}}
| {{{imperative_pp}}}
|-
| class="separator" colspan="3" |
| class="blank-end-row" colspan="999" rowspan="999" |
|-
! colspan="2" | verbal noun
| {{{verbal_noun}}}
|-
! colspan="2" | past participle
| {{{past_participle}}}
|-
! colspan="2" | verbal of necessity
| {{{necessity}}}
{{inflection-table-bottom}}<noinclude>{{documentation}}</noinclude>
jhuxyri3fhf48jwsk7sciqkyzyqgbfb
88690
88689
2026-07-30T18:32:30Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:sga-conj-table-simple]]
88689
wikitext
text/x-wiki
{{inflection-table-top|title={{{info}}}|palette=yellow|tall=yes|class=wide very-narrow}}
! colspan=2 |
! colspan=6 | active
! colspan=2 | passive
|-
! colspan=2 |
! colspan=3 | singular
! colspan=3 | plural
! colspan=1 rowspan=2 | singular
! colspan=1 rowspan=2 | plural
|-
! colspan=2 |
! class="secondary" | 1st
! class="secondary" | 2nd
! class="secondary" | 3rd
! class="secondary" | 1st
! class="secondary" | 2nd
! class="secondary" | 3rd
|-
! rowspan="3" | present indicative
! class="secondary" | {{abbr|abs.|absolute}}
| {{{present_1s_abso}}}
| {{{present_2s_abso}}}
| {{{present_3s_abso}}}
| {{{present_1p_abso}}}
| {{{present_2p_abso}}}
| {{{present_3p_abso}}}
| {{{present_ps_abso}}}
| {{{present_pp_abso}}}
|-
! class="secondary" | {{abbr|conj.|conjunct}}
| {{{present_1s_conj}}}
| {{{present_2s_conj}}}
| {{{present_3s_conj}}}
| {{{present_1p_conj}}}
| {{{present_2p_conj}}}
| {{{present_3p_conj}}}
| {{{present_ps_conj}}}
| {{{present_pp_conj}}}
|-
! class="secondary" | {{abbr|rel.|relative}}
|
|
| {{{present_3s_rel}}}
| {{{present_1p_rel}}}
|
| {{{present_3p_rel}}}
| {{{present_ps_rel}}}
| {{{present_pp_rel}}}
|-
| class="separator" colspan="999" |
|-
! colspan="2" | imperfect indicative
| {{{imperfect_1s}}}
| {{{imperfect_2s}}}
| {{{imperfect_3s}}}
| {{{imperfect_1p}}}
| {{{imperfect_2p}}}
| {{{imperfect_3p}}}
| {{{imperfect_ps}}}
| {{{imperfect_pp}}}
|-
| class="separator" colspan="999" |
|-
! rowspan="3" | preterite
! class="secondary" | {{abbr|abs.|absolute}}
| {{{preterite_1s_abso}}}
| {{{preterite_2s_abso}}}
| {{{preterite_3s_abso}}}
| {{{preterite_1p_abso}}}
| {{{preterite_2p_abso}}}
| {{{preterite_3p_abso}}}
| {{{preterite_ps_abso}}}
| {{{preterite_pp_abso}}}
|-
! class="secondary" | {{abbr|conj.|conjunct}}
| {{{preterite_1s_conj}}}
| {{{preterite_2s_conj}}}
| {{{preterite_3s_conj}}}
| {{{preterite_1p_conj}}}
| {{{preterite_2p_conj}}}
| {{{preterite_3p_conj}}}
| {{{preterite_ps_conj}}}
| {{{preterite_pp_conj}}}
|-
! class="secondary" | {{abbr|rel.|relative}}
|
|
| {{{preterite_3s_rel}}}
| {{{preterite_1p_rel}}}
|
| {{{preterite_3p_rel}}}
| {{{preterite_ps_rel}}}
| {{{preterite_pp_rel}}}
|-
| class="separator" colspan="999" |
|-
! rowspan="2" | perfect
! class="secondary" | {{abbr|deut.|deuterotonic}}
| {{{perfect_1s_deut}}}
| {{{perfect_2s_deut}}}
| {{{perfect_3s_deut}}}
| {{{perfect_1p_deut}}}
| {{{perfect_2p_deut}}}
| {{{perfect_3p_deut}}}
| {{{perfect_ps_deut}}}
| {{{perfect_pp_deut}}}
|-
! class="secondary" | {{abbr|prot.|prototonic}}
| {{{perfect_1s_prot}}}
| {{{perfect_2s_prot}}}
| {{{perfect_3s_prot}}}
| {{{perfect_1p_prot}}}
| {{{perfect_2p_prot}}}
| {{{perfect_3p_prot}}}
| {{{perfect_ps_prot}}}
| {{{perfect_pp_prot}}}
|-
| class="separator" colspan="999" |
|-
! rowspan="3" | future
! class="secondary" | {{abbr|abs.|absolute}}
| {{{future_1s_abso}}}
| {{{future_2s_abso}}}
| {{{future_3s_abso}}}
| {{{future_1p_abso}}}
| {{{future_2p_abso}}}
| {{{future_3p_abso}}}
| {{{future_ps_abso}}}
| {{{future_pp_abso}}}
|-
! class="secondary" | {{abbr|conj.|conjunct}}
| {{{future_1s_conj}}}
| {{{future_2s_conj}}}
| {{{future_3s_conj}}}
| {{{future_1p_conj}}}
| {{{future_2p_conj}}}
| {{{future_3p_conj}}}
| {{{future_ps_conj}}}
| {{{future_pp_conj}}}
|-
! class="secondary" | {{abbr|rel.|relative}}
|
|
| {{{future_3s_rel}}}
| {{{future_1p_rel}}}
|
| {{{future_3p_rel}}}
| {{{future_ps_rel}}}
| {{{future_pp_rel}}}
|-
| class="separator" colspan="999" |
|-
! colspan="2" | conditional
| {{{conditional_1s}}}
| {{{conditional_2s}}}
| {{{conditional_3s}}}
| {{{conditional_1p}}}
| {{{conditional_2p}}}
| {{{conditional_3p}}}
| {{{conditional_ps}}}
| {{{conditional_pp}}}
|-
| class="separator" colspan="999" |
|-
! rowspan="3" | present subjunctive
! class="secondary" | {{abbr|abs.|absolute}}
| {{{subjunctive_1s_abso}}}
| {{{subjunctive_2s_abso}}}
| {{{subjunctive_3s_abso}}}
| {{{subjunctive_1p_abso}}}
| {{{subjunctive_2p_abso}}}
| {{{subjunctive_3p_abso}}}
| {{{subjunctive_ps_abso}}}
| {{{subjunctive_pp_abso}}}
|-
! class="secondary" | {{abbr|conj.|conjunct}}
| {{{subjunctive_1s_conj}}}
| {{{subjunctive_2s_conj}}}
| {{{subjunctive_3s_conj}}}
| {{{subjunctive_1p_conj}}}
| {{{subjunctive_2p_conj}}}
| {{{subjunctive_3p_conj}}}
| {{{subjunctive_ps_conj}}}
| {{{subjunctive_pp_conj}}}
|-
! class="secondary" | {{abbr|rel.|relative}}
|
|
| {{{subjunctive_3s_rel}}}
| {{{subjunctive_1p_rel}}}
|
| {{{subjunctive_3p_rel}}}
| {{{subjunctive_ps_rel}}}
| {{{subjunctive_pp_rel}}}
|-
| class="separator" colspan="999" |
|-
! colspan="2" | past subjunctive
| {{{pastsubj_1s}}}
| {{{pastsubj_2s}}}
| {{{pastsubj_3s}}}
| {{{pastsubj_1p}}}
| {{{pastsubj_2p}}}
| {{{pastsubj_3p}}}
| {{{pastsubj_ps}}}
| {{{pastsubj_pp}}}
|-
| class="separator" colspan="999" |
|-
! colspan="2" | imperative
| {{{imperative_1s}}}
| {{{imperative_2s}}}
| {{{imperative_3s}}}
| {{{imperative_1p}}}
| {{{imperative_2p}}}
| {{{imperative_3p}}}
| {{{imperative_ps}}}
| {{{imperative_pp}}}
|-
| class="separator" colspan="3" |
| class="blank-end-row" colspan="999" rowspan="999" |
|-
! colspan="2" | verbal noun
| {{{verbal_noun}}}
|-
! colspan="2" | past participle
| {{{past_participle}}}
|-
! colspan="2" | verbal of necessity
| {{{necessity}}}
{{inflection-table-bottom}}<noinclude>{{documentation}}</noinclude>
jhuxyri3fhf48jwsk7sciqkyzyqgbfb
Teamplaid:gv-verb
10
17859
88691
2025-12-31T08:31:55Z
en>WingerBot
0
misc cleanup of uses of {{PAGENAME}}, sometimes reworking {{head}} calls to incorporate inflections into {{head}}; replace {{hwcat}} with {{tcat|hw}} (manually assisted)
88691
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{head|gv|verb|head={{{head|}}}|<!--
-->{{#if:{{{past|}}}|past independent}}|{{{past|}}}|<!--
-->{{#if:{{{past2|}}}|or}}|{{{past2|}}}|<!--
-->{{#if:{{{past3|}}}|or}}|{{{past3|}}}|<!--
-->{{#if:{{{fut|}}}|future independent}}|{{{fut|}}}|<!--
-->{{#if:{{{futind|}}}|future independent}}|{{{futind|}}}|<!--
-->{{#if:{{{vn|}}}|verbal noun}}|{{{vn|}}}|<!--
-->{{#if:{{{vn2|}}}|or}}|{{{vn2|}}}|<!--
-->{{#if:{{{vn3|}}}|or}}|{{{vn3|}}}|<!--
-->{{#if:{{{gform|}}}|g-form}}|{{{gform|}}}|<!--
-->{{#if:{{{gform2|}}}|or}}|{{{gform2|}}}|<!--
-->{{#if:{{{pp|}}}|past participle}}|{{{pp|}}}|<!--
-->{{#if:{{{pp2|}}}|or}}|{{{pp2|}}}|<!--
-->{{#if:{{{pp3|}}}|or}}|{{{pp3|}}}|<!--
-->{{#if:{{{imp|}}}|imperative}}|{{{imp|}}}|<!--
-->{{#if:{{{irreg|}}}|{{cln|gv|irregular verbs}}}}<!--
-->{{#if:{{{phrasal|}}}|{{cln|gv|phrasal verbs|phrasal verbs formed with "{{{phrasal}}}"}}}}<!--
-->}}<!--
--><noinclude>{{documentation}}
{{tcat|hw}}</noinclude>
ivs53mdynbqvc0r2zgzps40rk35owon
88692
88691
2026-07-30T19:01:55Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:gv-verb]]
88691
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{head|gv|verb|head={{{head|}}}|<!--
-->{{#if:{{{past|}}}|past independent}}|{{{past|}}}|<!--
-->{{#if:{{{past2|}}}|or}}|{{{past2|}}}|<!--
-->{{#if:{{{past3|}}}|or}}|{{{past3|}}}|<!--
-->{{#if:{{{fut|}}}|future independent}}|{{{fut|}}}|<!--
-->{{#if:{{{futind|}}}|future independent}}|{{{futind|}}}|<!--
-->{{#if:{{{vn|}}}|verbal noun}}|{{{vn|}}}|<!--
-->{{#if:{{{vn2|}}}|or}}|{{{vn2|}}}|<!--
-->{{#if:{{{vn3|}}}|or}}|{{{vn3|}}}|<!--
-->{{#if:{{{gform|}}}|g-form}}|{{{gform|}}}|<!--
-->{{#if:{{{gform2|}}}|or}}|{{{gform2|}}}|<!--
-->{{#if:{{{pp|}}}|past participle}}|{{{pp|}}}|<!--
-->{{#if:{{{pp2|}}}|or}}|{{{pp2|}}}|<!--
-->{{#if:{{{pp3|}}}|or}}|{{{pp3|}}}|<!--
-->{{#if:{{{imp|}}}|imperative}}|{{{imp|}}}|<!--
-->{{#if:{{{irreg|}}}|{{cln|gv|irregular verbs}}}}<!--
-->{{#if:{{{phrasal|}}}|{{cln|gv|phrasal verbs|phrasal verbs formed with "{{{phrasal}}}"}}}}<!--
-->}}<!--
--><noinclude>{{documentation}}
{{tcat|hw}}</noinclude>
ivs53mdynbqvc0r2zgzps40rk35owon
88700
88692
2026-07-30T22:04:48Z
Altronic
4137
88700
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{head|gv|verb|head={{{head|}}}|<!--
-->{{#if:{{{past|}}}|past independent}}|{{{past|}}}|<!--
-->{{#if:{{{past2|}}}|no}}|{{{past2|}}}|<!--
-->{{#if:{{{past3|}}}|no}}|{{{past3|}}}|<!--
-->{{#if:{{{fut|}}}|future independent}}|{{{fut|}}}|<!--
-->{{#if:{{{futind|}}}|future independent}}|{{{futind|}}}|<!--
-->{{#if:{{{vn|}}}|ainmear gnìomhaireach}}|{{{vn|}}}|<!--
-->{{#if:{{{vn2|}}}|no}}|{{{vn2|}}}|<!--
-->{{#if:{{{vn3|}}}|no}}|{{{vn3|}}}|<!--
-->{{#if:{{{gform|}}}|g-form}}|{{{gform|}}}|<!--
-->{{#if:{{{gform2|}}}|no}}|{{{gform2|}}}|<!--
-->{{#if:{{{pp|}}}|past participle}}|{{{pp|}}}|<!--
-->{{#if:{{{pp2|}}}|no}}|{{{pp2|}}}|<!--
-->{{#if:{{{pp3|}}}|no}}|{{{pp3|}}}|<!--
-->{{#if:{{{imp|}}}|imperative}}|{{{imp|}}}|<!--
-->{{#if:{{{irreg|}}}|{{cln|gv|irregular verbs}}}}<!--
-->{{#if:{{{phrasal|}}}|{{cln|gv|phrasal verbs|phrasal verbs formed with "{{{phrasal}}}"}}}}<!--
-->}}<!--
--><noinclude>{{documentation}}
{{tcat|hw}}</noinclude>
2ger3y7m2jgk23n2djc5peu3yw49wjh
Teamplaid:verbal noun of
10
17860
88694
2026-04-15T09:13:33Z
en>Surjection
0
Changed protection settings for "[[Template:verbal noun of]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite))
88694
wikitext
text/x-wiki
{{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!--
-->{{#invoke:form of/templates|tagged_form_of_t|vnoun|cat=verbal nouns}}<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
o57zd8ygkiugqqi87tumb3d1zz3in92
88695
88694
2026-07-30T19:23:45Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:verbal_noun_of]]
88694
wikitext
text/x-wiki
{{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!--
-->{{#invoke:form of/templates|tagged_form_of_t|vnoun|cat=verbal nouns}}<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
o57zd8ygkiugqqi87tumb3d1zz3in92
88696
88695
2026-07-30T19:24:26Z
Altronic
4137
88696
wikitext
text/x-wiki
{{#invoke:form of/templates|tagged_form_of_t|vnoun|cat=verbal nouns}}<!--
--><noinclude>{{documentation}}</noinclude>
7iolov86ddbprobszid7inj776vfy8y