Wiksiyonaryo
tlwiktionary
https://tl.wiktionary.org/wiki/Wiksiyonaryo:Unang_Pahina
MediaWiki 1.47.0-wmf.24
case-sensitive
Midya
Natatangi
Usapan
Tagagamit
Usapang tagagamit
Wiksiyonaryo
Usapang Wiksiyonaryo
Talaksan
Usapang talaksan
MediaWiki
Usapang MediaWiki
Padron
Usapang padron
Tulong
Usapang tulong
Kategorya
Usapang kategorya
TimedText
TimedText talk
Module
Module talk
Event
Event talk
mahaba
0
33602
178255
178241
2026-10-17T00:25:24Z
GinawaSaHapon
3989
/* Etimolohiya */ (using [[wikt:en:MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
178255
wikitext
text/x-wiki
=={{=tl=}}==
===Etimolohiya===
{{ety|tl|:af|ma-<id:stative prefix>|haba|text=+|tree=1}}
===Pagbigkas===
{{tl-pr|mahabà}}
===Pang-uri===
{{tl-adj|mahabà|pl=mahahaba|b=+}}
# mailalarawan bilang kapansin-pansin ang [[haba]]
#: {{ant|tl|maikli|maiksi}}
====Paalala sa paggamit====
* Parehong ginagamit ang ''mahaba'', ''[[malawak]]'', ''[[malapad]]'', at ''[[malayo]]'' para sa pahigang sukat. Gayunpaman,
** inilalarawan ng ''mahaba'' ang sukat mula sa simula hanggang sa kabilang dulo ng isang bagay, lugar, o panahon (''mahabang'' lakad, ''mahabang'' lapis)
** inilalarawan ng ''malawak'' ang saklaw ng isang lugar (''malawak'' na bukid, ''malawak'' na gubat)
** inilalarawan ng ''malapad'' ang sukat ng simulang gilid hanggang sa kabilang gilid ng isang bagay o lugar (''malapad'' na kahoy, ''malapad'' na mesa)
** inilalarawan ng ''malayo'' ang agwat ng dalawang bagay, lugar, o panahon (''malayong'' bahay, ''malayong'' kaibigan).
* Para sa pataas na patayong sukat, gamitin ang ''[[mataas]]'' o ''[[matangkad]]''. Para sa pababang patayong sukat, gamitin ang ''[[malalim]]''.
====Pagbabanghay====
{{tl-infl-adj|h|a|ba|none}}
====Hinangong kataga====
{{col3|tl|mahaba ang pasensiya}}
====Kaugnay na kataga====
{{col3|tl|mahabaan}}
===Magbasa pa===
* {{R:KWF Diksiyonaryo}}
* {{R:Pambansang Diksiyonaryo}}
am4ghkbs8an607cgqan9jof86kigky6
178256
178255
2026-10-17T00:25:54Z
GinawaSaHapon
3989
/* Etimolohiya */ (using [[wikt:en:MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
178256
wikitext
text/x-wiki
=={{=tl=}}==
===Etimolohiya===
{{ety|tl|:af|ma-<id:katayuan>|haba|text=+|tree=1}}
===Pagbigkas===
{{tl-pr|mahabà}}
===Pang-uri===
{{tl-adj|mahabà|pl=mahahaba|b=+}}
# mailalarawan bilang kapansin-pansin ang [[haba]]
#: {{ant|tl|maikli|maiksi}}
====Paalala sa paggamit====
* Parehong ginagamit ang ''mahaba'', ''[[malawak]]'', ''[[malapad]]'', at ''[[malayo]]'' para sa pahigang sukat. Gayunpaman,
** inilalarawan ng ''mahaba'' ang sukat mula sa simula hanggang sa kabilang dulo ng isang bagay, lugar, o panahon (''mahabang'' lakad, ''mahabang'' lapis)
** inilalarawan ng ''malawak'' ang saklaw ng isang lugar (''malawak'' na bukid, ''malawak'' na gubat)
** inilalarawan ng ''malapad'' ang sukat ng simulang gilid hanggang sa kabilang gilid ng isang bagay o lugar (''malapad'' na kahoy, ''malapad'' na mesa)
** inilalarawan ng ''malayo'' ang agwat ng dalawang bagay, lugar, o panahon (''malayong'' bahay, ''malayong'' kaibigan).
* Para sa pataas na patayong sukat, gamitin ang ''[[mataas]]'' o ''[[matangkad]]''. Para sa pababang patayong sukat, gamitin ang ''[[malalim]]''.
====Pagbabanghay====
{{tl-infl-adj|h|a|ba|none}}
====Hinangong kataga====
{{col3|tl|mahaba ang pasensiya}}
====Kaugnay na kataga====
{{col3|tl|mahabaan}}
===Magbasa pa===
* {{R:KWF Diksiyonaryo}}
* {{R:Pambansang Diksiyonaryo}}
mmd5v8tc93c8ydq94js9qq6qk9bjmzd
Module:senseno
828
38916
178254
2026-10-17T00:11:17Z
GinawaSaHapon
3989
Nilikha ang pahina na may 'local export = {} local M = require("Module:module loader").init({ require = { string_utilities = "Module:string utilities", template_parser = "Module:template parser", languages = "Module:languages", parameters = "Module:parameters", pages = "Module:pages", }, }) local unpack = unpack or table.unpack -- Lua 5.2 compatibility local SENSE_LABEL = "sense" local ETYMOLOGY_LABEL = "etymology" local SENSE_INDEX_HIDE_LABEL = "-" local TEMPLATE_TO_TYPE =...'
178254
Scribunto
text/plain
local export = {}
local M = require("Module:module loader").init({
require = {
string_utilities = "Module:string utilities",
template_parser = "Module:template parser",
languages = "Module:languages",
parameters = "Module:parameters",
pages = "Module:pages",
},
})
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local SENSE_LABEL = "sense"
local ETYMOLOGY_LABEL = "etymology"
local SENSE_INDEX_HIDE_LABEL = "-"
local TEMPLATE_TO_TYPE = {}
for template_type, template_names in pairs{
etymon = { "etymon", "ety" },
etymid = { "etymid" },
senseid = { "senseid", "sid" },
tcl = { "tcl", "transclude sense", "transclude" },
} do
for _, name in ipairs(template_names) do
TEMPLATE_TO_TYPE[name] = template_type
end
end
local PRIORITY_ORDER = { "senseid", "tcl", "etymon", "etymid" }
local MATCH_PRIORITY = {}
for priority_index, template_type in ipairs(PRIORITY_ORDER) do
MATCH_PRIORITY[template_type] = #PRIORITY_ORDER + 1 - priority_index
end
local ETYMOLOGY_TYPES = { etymon = true, etymid = true }
local IGNORE_HEADERS = {
["alternative forms"] = true,
["anagrams"] = true,
["antonyms"] = true,
["conjugation"] = true,
["coordinate terms"] = true,
["declension"] = true,
["derived terms"] = true,
["descendants"] = true,
["description"] = true,
["etymology"] = true,
["further reading"] = true,
["glyph origin"] = true,
["hypernyms"] = true,
["hyponyms"] = true,
["inflection"] = true,
["notes"] = true,
["production"] = true,
["pronunciation"] = true,
["references"] = true,
["related terms"] = true,
["see also"] = true,
["statistics"] = true,
["synonyms"] = true,
["translations"] = true,
["trivia"] = true,
["usage notes"] = true,
}
local function heading_level(raw_heading)
local start_pos, end_pos = raw_heading:find("^=+")
return start_pos and (end_pos - start_pos + 1) or 0
end
local function heading_text(raw_heading)
return M.string_utilities.trim((raw_heading:match("^=+%s*(.-)%s*=+$") or raw_heading))
end
local function heading_clean_key(raw_heading)
local text = heading_text(raw_heading):lower()
if not text:match("^etymology%s+%d") then
text = text:gsub("%s+%d+$", "")
end
return text
end
local function is_etymology_heading(text)
return text and text:match("^[Ee]tymology")
end
local function count_senses(text)
local lines = M.string_utilities.gmatch(text, "\n#[#*:]*")
local senseno = {}
local line = lines()
while line ~= nil do
if not line:find(":") and not line:find("%*") then
line = line:match("#+")
local indentation = line and #line or 0
if indentation > #senseno then
table.insert(senseno, 1)
else
senseno = { unpack(senseno, 1, indentation) }
senseno[#senseno] = senseno[#senseno] + 1
end
end
line = lines()
end
return senseno
end
local function parsed_slice_to_string(parsed, from_idx, to_idx)
local parts = {}
for idx = from_idx, to_idx do
parts[#parts + 1] = tostring(parsed[idx])
end
return table.concat(parts)
end
local parsed_content = {}
local function get_page_content(page_title)
local current = mw.title.getCurrentTitle()
if page_title == current.prefixedText then
return current:getContent()
end
local title_obj = mw.title.new(page_title)
return title_obj and title_obj:getContent() or nil
end
local function get_parsed_content(title)
if not parsed_content[title] then
local content = get_page_content(title)
if not content then
error("Could not read content of page [[" .. title .. "]] (page may not exist or has no content)")
end
parsed_content[title] = M.template_parser.parse(content)
end
return parsed_content[title]
end
local function is_heading(node)
return M.template_parser.class_else_type(node) == "heading"
end
local function get_arg_text(arg)
if arg == nil then return nil end
if type(arg) == "table" and arg.expand then
return tostring(arg)
end
return arg
end
local function get_id_arg(args)
if not args then return nil end
local id_arg = args["id"] or args.id
if id_arg then return id_arg end
for key, value in pairs(args) do
if type(key) == "string" and M.string_utilities.lower(M.string_utilities.trim(key)) == "id" then
return value
end
end
return nil
end
local function match_etymon(args, id, get_text)
local id_arg = get_id_arg(args)
local trimmed_id = id_arg and M.string_utilities.trim(tostring(get_text(id_arg)))
return trimmed_id and trimmed_id ~= "" and trimmed_id == M.string_utilities.trim(id)
end
local function match_etymid(args, id, get_text)
local arg1 = args and args[1]
return get_text(arg1) == id
end
local function normalize_id_for_compare(s)
return s and (s:gsub("_", " ")) or nil
end
local function match_senseid(args, code, id, get_text)
local arg1, arg2 = args and args[1], args and args[2]
local lang_arg = get_text(arg1)
local id_arg = normalize_id_for_compare(get_text(arg2))
return lang_arg == code and id_arg == normalize_id_for_compare(id)
end
local function match_tcl(args, code, id, get_text)
local arg1 = args and args[1]
if get_text(arg1) ~= code then return false end
local id_arg = get_id_arg(args)
if not id_arg then return false end
local id_str = M.string_utilities.trim(tostring(get_text(id_arg)))
if id_str == "" then return false end
for part in M.string_utilities.gsplit(id_str, ",") do
if M.string_utilities.trim(part) == id then return true end
end
return false
end
local function template_matches(name, args, code, id, get_text)
local template_type = TEMPLATE_TO_TYPE[name]
if not template_type then return nil end
if template_type == "etymon" then return match_etymon(args, id, get_text) and template_type end
if template_type == "etymid" then return match_etymid(args, id, get_text) and template_type end
if template_type == "senseid" then return match_senseid(args, code, id, get_text) and template_type end
if template_type == "tcl" then return match_tcl(args, code, id, get_text) and template_type end
return nil
end
local function compute_ambiguity(parsed, lang_name)
local in_lang_section = false
local distinct_pos_count = 0
for _, node in ipairs(parsed) do
if is_heading(node) then
local raw_heading = tostring(node)
local level = heading_level(raw_heading)
local text = heading_text(raw_heading)
if level == 2 then
in_lang_section = (text == lang_name)
elseif in_lang_section and level > 2 then
local key = heading_clean_key(raw_heading)
if not IGNORE_HEADERS[key] and not key:match("^etymology") then
distinct_pos_count = distinct_pos_count + 1
end
end
end
end
return distinct_pos_count > 1
end
local function find_best_template_match(parsed, code, id, get_text)
local best_priority, best_match_index, best_last_heading, best_type = 0, nil, nil, nil
local last_heading_index = 0
for idx, node in ipairs(parsed) do
local node_type = M.template_parser.class_else_type(node)
if node_type == "heading" then
last_heading_index = idx
elseif node_type == "template" then
local name = node:get_name()
if TEMPLATE_TO_TYPE[name] and node.get_arguments then
local args = node:get_arguments()
local match_type = template_matches(name, args, code, id, get_text)
if match_type and MATCH_PRIORITY[match_type] > best_priority then
best_priority = MATCH_PRIORITY[match_type]
best_match_index = idx
best_last_heading = last_heading_index
best_type = match_type
end
end
end
end
return best_match_index, best_last_heading, best_type
end
local function find_parent_heading(parsed, heading_i, level)
if level <= 1 then return 0, 0 end
for idx = heading_i - 1, 1, -1 do
local prev = parsed[idx]
if is_heading(prev) then
local raw_heading = tostring(prev)
local prev_level = heading_level(raw_heading)
if prev_level < level then
return idx, prev_level
end
end
end
return 0, 0
end
local function find_scope_end(parsed, parent_index, parent_level)
if parent_index > 0 then
for idx = parent_index + 1, #parsed do
local node = parsed[idx]
if is_heading(node) then
local node_level = heading_level(tostring(node))
if node_level <= parent_level then
return idx - 1
end
end
end
end
return #parsed
end
local function find_etymology_header(parsed, heading_i, level)
if level <= 1 then return "" end
for idx = heading_i - 1, 1, -1 do
local prev = parsed[idx]
if is_heading(prev) then
local prev_raw = tostring(prev)
if heading_level(prev_raw) < level then
local prev_text = heading_text(prev_raw)
if is_etymology_heading(prev_text) then
return prev_text
end
break
end
end
end
return ""
end
local function normalize_heading_label(text)
return text and M.string_utilities.lower(M.string_utilities.trim(text)) or ""
end
local function is_pos_heading(text)
local key = heading_clean_key(text)
return not IGNORE_HEADERS[key] and not key:match("^etymology")
end
local function get_heading_name(node)
if node.get_name then
local name = node:get_name()
if name then
return M.string_utilities.trim(name)
end
end
return heading_text(tostring(node))
end
local function get_sibling_heading_label(parsed, heading_i, is_heading_fn)
if heading_i <= 0 then
return "", 0
end
local raw_heading = tostring(parsed[heading_i])
local label = heading_text(raw_heading)
local level = heading_level(raw_heading)
local clean_key = heading_clean_key(raw_heading)
local parent_index, parent_level = find_parent_heading(parsed, heading_i, level)
local scope_end = find_scope_end(parsed, parent_index, parent_level)
local siblings_count, my_index, level_count = 0, 0, 0
for idx = parent_index + 1, scope_end do
local node = parsed[idx]
if is_heading_fn(node) then
local sibling_raw = tostring(node)
if heading_level(sibling_raw) == level then
level_count = level_count + 1
if heading_clean_key(sibling_raw) == clean_key then
siblings_count = siblings_count + 1
if idx == heading_i then
my_index = siblings_count
end
end
end
end
end
if siblings_count > 1 then
label = label .. " " .. my_index
end
return label, level_count
end
local function get_containing_heading_at_section(parsed, lang_name, current_section)
local in_lang_section = false
local containing = nil
local heading_fallback = 0
for idx, node in ipairs(parsed) do
if is_heading(node) then
local section = node.section
if not section then
heading_fallback = heading_fallback + 1
section = heading_fallback
end
if section > current_section then
break
end
local level = node.level or heading_level(tostring(node))
local text = get_heading_name(node)
if level == 2 then
in_lang_section = (text == lang_name)
if not in_lang_section then
containing = nil
end
elseif in_lang_section then
containing = { level = level, text = text, idx = idx }
end
end
end
return containing
end
local function get_invocation_containing(title, lang_name, parsed)
local current_title = mw.title.getCurrentTitle()
if not mw.title.equals(mw.title.new(title), current_title) then
return nil
end
if not M.pages.is_content_page(current_title) then
return nil
end
local current_section = M.pages.get_current_section()
if current_section == 0 then
return nil
end
return get_containing_heading_at_section(parsed, lang_name, current_section)
end
local function get_containing_header_label(parsed, containing, kind)
if kind == "etym" then
if not is_etymology_heading(containing.text) then
return ""
end
return containing.text
end
if not is_pos_heading(containing.text) then
return ""
end
local label = get_sibling_heading_label(parsed, containing.idx, is_heading)
return label
end
local function should_hide_redundant_header(header, kind, title, lang_name, parsed)
if header == "" then
return false
end
local containing = get_invocation_containing(title, lang_name, parsed)
if not containing then
return false
end
local containing_label = get_containing_header_label(parsed, containing, kind)
if containing_label == "" then
return false
end
return normalize_heading_label(containing_label) == normalize_heading_label(header)
end
local function default_show_header(header, kind, ambiguous, explicit, title, lang_name, parsed)
if explicit ~= nil then
return explicit
end
if header == "" then
return false
end
if kind == "pos" and not ambiguous then
return false
end
return not should_hide_redundant_header(header, kind, title, lang_name, parsed)
end
local function build_result_for_match(parsed, match_i, heading_i, is_heading_fn)
if heading_i <= 0 then
local slice_str = parsed_slice_to_string(parsed, heading_i + 1, match_i - 1)
local senseno_list = count_senses(slice_str)
return table.concat(senseno_list, "."), "", ""
end
local raw_heading = tostring(parsed[heading_i])
local level = heading_level(raw_heading)
local pos_header, pos_count = get_sibling_heading_label(parsed, heading_i, is_heading_fn)
local etym_header = find_etymology_header(parsed, heading_i, level)
if etym_header ~= "" and pos_count == 1 then
pos_header = ""
end
local slice_str = parsed_slice_to_string(parsed, heading_i + 1, match_i - 1)
local senseno_list = count_senses(slice_str)
return table.concat(senseno_list, "."), etym_header, pos_header
end
local function adjust_sense_index_for_tcl(sense_index, id_str, id)
local position = 1
for part in M.string_utilities.gsplit(id_str, ",") do
if M.string_utilities.trim(part) == id then break end
position = position + 1
end
if position <= 1 then return sense_index end
local parts = {}
for part in M.string_utilities.gsplit(sense_index, "%.") do
parts[#parts + 1] = tonumber(part) or 1
end
if #parts > 0 then
parts[#parts] = parts[#parts] + (position - 1)
return table.concat(parts, ".")
end
return sense_index
end
local function find_senseid(title, code, id)
local parsed = get_parsed_content(title)
local lang = M.languages.getByCode(code)
local lang_name = lang:getCanonicalName()
local ambiguous = compute_ambiguity(parsed, lang_name)
local best_match_index, best_last_heading, best_type = find_best_template_match(parsed, code, id, get_arg_text)
if not best_match_index then
local template_list = table.concat(PRIORITY_ORDER, ", ")
local message = "Could not find " .. template_list .. " template in the entry [[" .. title
.. "]] (with language " .. code .. " and id '" .. id
.. "'); this could be because you are in preview mode and the template has not yet been saved to the page"
error(message)
end
local sense_index, etym_header, pos_header = build_result_for_match(parsed, best_match_index, best_last_heading, is_heading)
if best_type == "tcl" then
local template_node = parsed[best_match_index]
local template_args = template_node.get_arguments and template_node:get_arguments()
local id_arg = template_args and get_id_arg(template_args)
local id_str = id_arg and M.string_utilities.trim(tostring(get_arg_text(id_arg))) or ""
sense_index = adjust_sense_index_for_tcl(sense_index, id_str, id)
end
return sense_index, etym_header, pos_header, ambiguous, best_type
end
local function format_pos_header(etym_header, pos_header, show_etym, show_pos)
local header_parts = {}
if show_etym and etym_header and etym_header ~= "" then
table.insert(header_parts, etym_header)
end
if show_pos and pos_header and pos_header ~= "" then
table.insert(header_parts, pos_header)
end
if #header_parts == 0 then
return ""
end
return M.string_utilities.lower(table.concat(header_parts, ", "))
end
local function extract_etymology_number(etym_header)
if etym_header and etym_header ~= "" then
return etym_header:match("^[Ee]tymology%s+(%d+)") or ""
end
return ""
end
local function fallback_etymology_link_text(sense_index, etym_header, formatted_header)
if sense_index ~= "" then
return ETYMOLOGY_LABEL .. " " .. sense_index
end
local etym_num = extract_etymology_number(etym_header)
if etym_num ~= "" then
return ETYMOLOGY_LABEL .. " " .. etym_num
end
if formatted_header ~= "" then
return formatted_header
end
return ETYMOLOGY_LABEL
end
local function build_link_text(sense_index, etym_header, pos_header, ambiguous, matched_type, args)
local link_text = ""
local is_etymology_link = ETYMOLOGY_TYPES[matched_type]
local show_pos = default_show_header(
pos_header, "pos", ambiguous, args["pos"], args["title"], args["lang_name"], args["parsed"]
)
local show_etym = default_show_header(
etym_header, "etym", ambiguous, args["etym"], args["title"], args["lang_name"], args["parsed"]
)
local formatted_header = format_pos_header(etym_header, pos_header, show_etym, show_pos)
if formatted_header ~= "" then
link_text = formatted_header .. " "
end
if not is_etymology_link then
if sense_index ~= "" then
if args[3] ~= SENSE_INDEX_HIDE_LABEL then
link_text = link_text .. SENSE_LABEL .. " "
end
link_text = link_text .. sense_index
end
else
if link_text == "" then
link_text = fallback_etymology_link_text(sense_index, etym_header, formatted_header)
end
link_text = M.string_utilities.trim(link_text)
end
if link_text == "" and sense_index ~= "" then
link_text = sense_index
end
if args["uc"] then
link_text = M.string_utilities.ucfirst(link_text)
end
return link_text
end
function export.link_text(lang_code, id, options)
options = options or {}
local lang = M.languages.getByCode(lang_code)
local args = {
[1] = lang,
[2] = id,
[3] = options[3],
["title"] = options["title"],
["pos"] = options["pos"],
["etym"] = options["etym"],
["uc"] = options["uc"],
["t"] = options["t"],
["q"] = options["q"],
}
args["link"] = (options["link"] == nil) and true or options["link"]
local code = lang:getCode()
local title = args["title"] or mw.title.getCurrentTitle().prefixedText
local lang_name = lang:getCanonicalName()
if #id == 0 then
error("Empty or invalid id list")
end
local parsed = get_parsed_content(title)
args["title"] = title
args["lang_name"] = lang_name
args["parsed"] = parsed
local parts = {}
for _, one_id in ipairs(id) do
local decoded_id = mw.uri.decode(one_id, "WIKI")
local anchor = lang_name .. ":_" .. mw.uri.anchorEncode(one_id)
local sense_index, etym_header, pos_header, ambiguous, matched_type = find_senseid(title, code, decoded_id)
local text = build_link_text(sense_index, etym_header, pos_header, ambiguous, matched_type, args)
if args["link"] then
text = "[[" .. title .. "#" .. anchor .. "|" .. text .. "]]"
end
table.insert(parts, text)
end
local link_text = table.concat(parts, ", ")
if args["t"] and args["t"] ~= "" then
link_text = link_text .. " (“" .. args["t"] .. "”)"
end
if args["q"] and args["q"] ~= "" then
link_text = "(''" .. args["q"] .. "'') " .. link_text
end
return link_text
end
function export.link(frame)
local boolean = { type = "boolean" }
local params = {
[1] = { required = true, type = "language", default = "und" },
[2] = { required = true, sublist = "comma without whitespace" },
[3] = true,
["title"] = true,
["q"] = true,
["pos"] = boolean,
["etym"] = boolean,
["t"] = true,
["uc"] = boolean,
["cap"] = { alias_of = "uc" },
["link"] = { type = "boolean", default = true },
}
local args = M.parameters.process(frame:getParent().args, params)
return export.link_text(args[1]:getCode(), args[2], {
[3] = args[3],
["title"] = args["title"],
["pos"] = args["pos"],
["etym"] = args["etym"],
["uc"] = args["uc"],
["link"] = args["link"],
["t"] = args["t"],
["q"] = args["q"],
})
end
return export
q3tw3obwq2f9gfpr4w53p2s7xg5o601