Wikikamus mswiktionary https://ms.wiktionary.org/wiki/Wikikamus:Laman_Utama MediaWiki 1.47.0-wmf.5 case-sensitive Media Khas Perbincangan Pengguna Perbincangan pengguna Wikikamus Perbincangan Wikikamus Fail Perbincangan fail MediaWiki Perbincangan MediaWiki Templat Perbincangan templat Bantuan Perbincangan bantuan Kategori Perbincangan kategori Lampiran Perbincangan lampiran Rima Perbincangan rima Tesaurus Perbincangan tesaurus Indeks Perbincangan indeks Petikan Perbincangan petikan Rekonstruksi Perbincangan rekonstruksi Padanan isyarat Perbincangan padanan isyarat Konkordans Perbincangan konkordans TimedText TimedText talk Modul Perbincangan modul Acara Perbincangan acara Templat:Perkataan Nombor 10 2608 344650 6823 2026-06-07T17:48:29Z EmausBot 3738 Memperbetulkan pelencongan berganda ke [[Templat:kata bilangan bahasa Melayu]] 344650 wikitext text/x-wiki #LENCONG [[Templat:kata bilangan bahasa Melayu]] 9uugfu2aa0h4jdpt1aafq8nk0kowzg6 Templat:Perkataan nombor 10 2610 344651 6825 2026-06-07T17:48:39Z EmausBot 3738 Memperbetulkan pelencongan berganda ke [[Templat:kata bilangan bahasa Melayu]] 344651 wikitext text/x-wiki #LENCONG [[Templat:kata bilangan bahasa Melayu]] 9uugfu2aa0h4jdpt1aafq8nk0kowzg6 Templat:R:Man'yōshū 3 10 9848 344663 342938 2026-06-08T09:12:29Z Hakimi97 2668 344663 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-book |ja|last=Satake|first=Akihiro|coauthors=Hideo Yamada; Rikio Kudō; Masao Ōtani; Yoshiyuki Yamazaki|title=Shin Nihon Koten Bungaku Taikei 3: [[w:Man'yōshū|Man’yōshū]] 3|location=[[w:Tokyo|Tōkyō]]|publisher=[[w:Iwanami Shoten Publishing|Iwanami Shoten]]|year=c. 759|year_published=2002|isbn=978-4-00-240003-7 |usenodot=1 }}<noinclude>{{refcat|ja}}</noinclude> j2lgtgzrsavb7i6bujku90raksetqy6 Modul:translations 828 9941 344652 344628 2026-06-08T08:58:33Z Hakimi97 2668 Mengemas kini terjemahan bahasa Melayu 344652 Scribunto text/plain local export = {} local anchors_module = "Module:anchors" local debug_track_module = "Module:debug/track" local languages_module = "Module:languages" local links_module = "Module:links" local pages_module = "Module:pages" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local templatestyles_module = "Module:TemplateStyles" local utilities_module = "Module:utilities" local wikimedia_languages_module = "Module:wikimedia languages" local concat = table.concat local html_create = mw.html.create local insert = table.insert local load_data = mw.loadData local new_title = mw.title.new local require = require --[==[ Loaders for functions in other modules, which overwrite themselves with the target function whms called. This mssures modules are only loaded whms needed, retains the speed/convmsimsce of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function decode_uri(...) decode_uri = require(string_utilities_module).decode_uri return decode_uri(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_wikimedia_lang(...) get_wikimedia_lang = require(wikimedia_languages_module).getByCode return get_wikimedia_lang(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function normalize_anchor(...) normalize_anchor = require(anchors_module).normalize_anchor return normalize_anchor(...) end local function plain_link(...) plain_link = require(links_module).plain_link return plain_link(...) end local function process_params(...) process_params = require(parameters_module).process return process_params(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function split_on_slashes(...) split_on_slashes = require(links_module).split_on_slashes return split_on_slashes(...) end local function templatestyles(...) templatestyles = require(templatestyles_module) return templatestyles(...) end local function track(...) track = require(debug_track_module) return track(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local en local function get_en() en, get_en = require(languages_module).getByCode("ms"), nil return en end local headword_data local function get_headword_data() headword_data, get_headword_data = load_data("Module:headword/data"), nil return headword_data end local parameters_data local function get_parameters_data() parameters_data, get_parameters_data = load_data("Module:parameters/data"), nil return parameters_data end local translations_data local function get_translations_data() translations_data, get_translations_data = load_data("Module:translations/data"), nil return translations_data end local function is_translation_subpage(pagename) if (headword_data or get_headword_data()).page.namespace ~= "" then return false elseif not pagename then pagename = (headword_data or get_headword_data()).encoded_pagename end return pagename:match("./translations$") and true or false end local function canonical_pagename() local pagename = (headword_data or get_headword_data()).encoded_pagename return is_translation_subpage(pagename) and pagename:sub(1, -14) or pagename end local function interwiki(terminfo, term, lang, langcode) -- No interwiki link if term is empty/missing if not term or #term < 1 then terminfo.interwiki = false return end -- Percent-decode the term. term = decode_uri(terminfo.term, "PATH") -- Don't show an interwiki link if it's an invalid title. if not new_title(term) then terminfo.interwiki = false return end local interwiki_langcode = (translations_data or get_translations_data()).interwiki_langs[langcode] local wmlangs = interwiki_langcode and {get_wikimedia_lang(interwiki_langcode)} or lang:getWikimediaLanguages() -- Don't show the interwiki link if the language is not recognised by Wikimedia. if #wmlangs == 0 then terminfo.interwiki = false return end local sc = terminfo.sc local target_page = get_link_page(term, lang, sc) local split = split_on_slashes(target_page) if not split[1] then terminfo.interwiki = false return end target_page = split[1] local wmlangcode = wmlangs[1]:getCode() local interwiki_link = language_link{ lang = lang, sc = sc, term = wmlangcode .. ":" .. target_page, alt = "(" .. wmlangcode .. ")", tr = "-" } terminfo.interwiki = tostring(html_create("span") :addClass("tpos") :wikitext("&nbsp;" .. interwiki_link) ) end function export.show_terminfo(terminfo, check) local lang = terminfo.lang local langcode, langname = lang:getCode(), lang:getCanonicalName() -- Translations must be for mainspace languages. if not lang:hasType("regular") then error("Translations must be for attested and approved main-namespace languages.") else local disallowed = (translations_data or get_translations_data()).disallowed local err_msg = disallowed[langcode] if err_msg then error("Translations not allowed in " .. langname .. " (" .. langcode .. "). " .. langname .. " translations should " .. err_msg) end local fullcode = lang:getFullCode() if fullcode ~= langcode then err_msg = disallowed[fullcode] if err_msg then langname = lang:getFullName() error("Translations not allowed in " .. langname .. " (" .. fullcode .. "). " .. langname .. " translations should " .. err_msg) end end end if langcode == "ms" then if terminfo.interwiki then error("Interwiki translations not allowed for English; they should always link to a different Wiktionary") end local current_L2 = require(pages_module).get_current_L2() if current_L2 ~= "Rentas bahasa" and mw.title.getCurrentTitle().nsText ~= "Wikikamus" then if current_L2 then error("English translations only allowed in Translingual section, not in " .. current_L2) else error("English translations only allowed in Translingual section, not outside of any L2") end end end local term = terminfo.term -- Check if there is a term. Don't show the interwiki link if there is nothing to link to. if not term then -- Track entries that don't provide a term. -- FIXME: This should be a category. track("translations/no term") track("translations/no term/" .. langcode) end if terminfo.interwiki then interwiki(terminfo, term, lang, langcode) end langcode = lang:getFullCode() if (translations_data or get_translations_data()).need_super[langcode] then local tr = terminfo.tr if tr ~= nil then terminfo.tr = tr:gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>") end end terminfo.show_qualifiers = true local link = full_link(terminfo, "translation") local canonical_name = lang:getCanonicalName() local full_name = lang:getFullName() local categories = {"Perkataan dengan terjemahan bahasa " .. canonical_name} if canonical_name ~= full_name then insert(categories, "Perkataan dengan terjemahan bahasa " .. full_name) end if check then link = tostring(html_create("span") :addClass("ttbc") :tag("sup") :addClass("ttbc") :wikitext("(sila [[WT:Terjemahan#Terjemahan untuk disemak|sahkan]])") :done() :wikitext(" " .. link) ) insert(categories, "Permintaan pengesahan terjemahan bahasa " .. langname ) end return link .. format_categories(categories, en or get_en(), nil, canonical_pagename()) end -- Implements {{t}}, {{t+}}, {{t-check}} and {{t+check}}. function export.show(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["translation"]) local check = frame.args.check return export.show_terminfo({ lang = args[1], sc = args.sc, track_sc = true, term = args[2], alt = args.alt, id = args.id, genders = args[3], tr = args.tr, ts = args.ts, lit = args.lit, q = args.q, qq = args.qq, l = args.l, ll = args.ll, refs = args.ref, interwiki = frame.args.interwiki, }, check and check ~= "") end local function add_id(div, id) return id and div:attr("id", normalize_anchor("Translations-" .. id)) or div end -- Implements {{ter-atas}} and part of {{ter-atas-juga}}. local function top(args, title, id, navhead) local column_width = (args["column-width"] == "wide" or args["column-width"] == "narrow") and "-" .. args["column-width"] or "" local div = html_create("div") :addClass("NavFrame") :node(navhead) :tag("div") :addClass("NavContent") :tag("table") :addClass("translations") :attr("role", "presentation") :attr("data-gloss", title or "") :tag("tr") :tag("td") :addClass("translations-cell") :addClass("multicolumn-list" .. column_width) :attr("colspan", "3") :allDone() div = add_id(div, id) local categories = {} if not title then insert(categories, "Pengepala jadual terjemahan kekurangan padanan kata") end local pagename = canonical_pagename() if is_translation_subpage() then insert(categories, "Sublaman terjemahan") end return (tostring(div):gsub("</td></tr></table></div></div>$", "")) .. (#categories > 0 and format_categories(categories, en or get_en(), nil, pagename) or "") .. -- Category to trigger [[MediaWiki:Gadget-TranslationAdder.js]]; we want this even on -- user pages and such. format_categories("Perkataan dengan kotak terjemahan", nil, nil, nil, true) .. templatestyles("Modul:translations/styles.css") end -- Entry point for {{ter-atas}}. function export.top(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["ter-atas"]) local title = args[1] local id = args.id or title title = title and remove_links(title) return top(args, title, id, html_create("div") :addClass("NavHead") :css("text-align", "left") :wikitext(title or "Terjemahan") ) end -- Entry point for {{checktrans-top}}. function export.check_top(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["checktrans-top"]) local text = "\n:''The translations below need to be checked and inserted above into the appropriate translation tables. See instructions at " .. frame:expandTemplate{ title = "section link", args = {"Wikikamus:Susun atur entri#Terjemahan"} } .. ".''\n" local header = html_create("div") :addClass("checktrans") :wikitext(text) local subtitle = args[1] local title = "Terjemahan untuk disemak" if subtitle then title = title .. "&zwnj;: \"" .. subtitle .. "\"" end -- No ID, since these should always accompany proper translation tables, and can't be trusted anyway (i.e. there's no use-case for links). return tostring(header) .. "\n" .. top(args, title, nil, html_create("div") :addClass("NavHead") :css("text-align", "left") :wikitext(title or "Terjemahan") ) end -- Implements {{ter-bawah}}. function export.bottom(frame) -- Check nothing is being passed as a parameter. process_params(frame:getParent().args, (parameters_data or get_parameters_data())["ter-bawah"]) return "</table></div></div>" end -- Implements {{ter-lihat}} and part of {{ter-atas-juga}}. local function see(args, see_text) local navhead = html_create("div") :addClass("NavHead") :css("text-align", "left") :wikitext(args[1] .. " ") :tag("span") :css("font-weight", "normal") :wikitext("— ") :tag("i") :wikitext(see_text) :allDone() local terms, id = args[2], args.id if #terms == 0 then terms[1] = args[1] end for i = 1, #terms do local term_id = id[i] or id.default local data = { term = terms[i], id = term_id and "Translations-" .. term_id or "Translations", } terms[i] = plain_link(data) end return navhead:wikitext(concat(terms, ",&lrm; ")) end -- Entry point for {{ter-lihat}}. function export.see(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["ter-lihat"]) local div = html_create("div") :addClass("pseudo") :addClass("NavFrame") :node(see(args, "see ")) return tostring(add_id(div, args.id.default or args[1])) end -- Entry point for {{ter-atas-juga}}. function export.top_also(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["ter-atas-juga"]) local navhead = see(args, "lihat juga ") local title = args[1] local id = args.id.default or title title = remove_links(title) return top(args, title, id, navhead) end -- Implements {{translation subpage}}. function export.subpage(frame) process_params(frame:getParent().args, (parameters_data or get_parameters_data())["translation subpage"]) if not is_translation_subpage() then error("This template should only be used on translation subpages, which have titles that end with '/translations'.") end -- "Translation subpages" category is handled by {{trans-top}}. return ("''This page contains translations for ''%s''. See the main entry for more information.''"):format(full_link{ lang = en or get_en(), term = canonical_pagename(), }) end -- Implements {{t-needed}}. function export.needed(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["t-needed"]) local lang, category = args[1], "" local span = html_create("span") :addClass("trreq") :attr("data-lang", lang:getCode()) :tag("i") :wikitext("please add this translation if you can") :done() if not args.nocat then local type, sort = args[2], args.sort if type == "quote" then category = "Permintaan terjemahan petikan bahasa " .. lang:getCanonicalName() elseif type == "usex" then category = "Permintaan terjemahan contoh penggunaan bahasa " .. lang:getCanonicalName() else category = "Permintaan terjemahan ke dalam bahasa " .. lang:getCanonicalName() lang = en or get_en() end category = format_categories(category, lang, sort, not sort and canonical_pagename() or nil) end return tostring(span) .. category end -- Implements {{no equivalent translation}}. function export.no_equivalent(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["no equivalent translation"]) local text = "tiada padanan kata dalam bahasa " .. args[1]:getCanonicalName() if not args.noend then text = text .. ", tetapi lihat" end return tostring(html_create("i"):wikitext(text)) end -- Implements {{no attested translation}}. function export.no_attested(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["no attested translation"]) local langname = args[1]:getCanonicalName() local text = "tiada perkataan [[WT:ATTEST|disahkan]] dalam bahasa " .. langname local category = "" if not args.noend then text = text .. ", but see" local sort = args.sort category = format_categories("Terjemahan bahasa " .. langname .. " yang tidak disahkan", en or get_en(), sort, not sort and canonical_pagename() or nil) end return tostring(html_create("i"):wikitext(text)) .. category end -- Implements {{not used}}. function export.not_used(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["not used"]) return tostring(html_create("i"):wikitext((args[2] or "tidak digunakan") .. " dalam " .. args[1]:getCanonicalName())) end return export q9l9ndsqlitq7y3z0pvlk646rgx258k 344653 344652 2026-06-08T09:00:04Z Hakimi97 2668 344653 Scribunto text/plain local export = {} local anchors_module = "Module:anchors" local debug_track_module = "Module:debug/track" local languages_module = "Module:languages" local links_module = "Module:links" local pages_module = "Module:pages" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local templatestyles_module = "Module:TemplateStyles" local utilities_module = "Module:utilities" local wikimedia_languages_module = "Module:wikimedia languages" local concat = table.concat local html_create = mw.html.create local insert = table.insert local load_data = mw.loadData local new_title = mw.title.new local require = require --[==[ Loaders for functions in other modules, which overwrite themselves with the target function whms called. This mssures modules are only loaded whms needed, retains the speed/convmsimsce of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function decode_uri(...) decode_uri = require(string_utilities_module).decode_uri return decode_uri(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_wikimedia_lang(...) get_wikimedia_lang = require(wikimedia_languages_module).getByCode return get_wikimedia_lang(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function normalize_anchor(...) normalize_anchor = require(anchors_module).normalize_anchor return normalize_anchor(...) end local function plain_link(...) plain_link = require(links_module).plain_link return plain_link(...) end local function process_params(...) process_params = require(parameters_module).process return process_params(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function split_on_slashes(...) split_on_slashes = require(links_module).split_on_slashes return split_on_slashes(...) end local function templatestyles(...) templatestyles = require(templatestyles_module) return templatestyles(...) end local function track(...) track = require(debug_track_module) return track(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local en local function get_en() en, get_en = require(languages_module).getByCode("ms"), nil return en end local headword_data local function get_headword_data() headword_data, get_headword_data = load_data("Module:headword/data"), nil return headword_data end local parameters_data local function get_parameters_data() parameters_data, get_parameters_data = load_data("Module:parameters/data"), nil return parameters_data end local translations_data local function get_translations_data() translations_data, get_translations_data = load_data("Module:translations/data"), nil return translations_data end local function is_translation_subpage(pagename) if (headword_data or get_headword_data()).page.namespace ~= "" then return false elseif not pagename then pagename = (headword_data or get_headword_data()).encoded_pagename end return pagename:match("./translations$") and true or false end local function canonical_pagename() local pagename = (headword_data or get_headword_data()).encoded_pagename return is_translation_subpage(pagename) and pagename:sub(1, -14) or pagename end local function interwiki(terminfo, term, lang, langcode) -- No interwiki link if term is empty/missing if not term or #term < 1 then terminfo.interwiki = false return end -- Percent-decode the term. term = decode_uri(terminfo.term, "PATH") -- Don't show an interwiki link if it's an invalid title. if not new_title(term) then terminfo.interwiki = false return end local interwiki_langcode = (translations_data or get_translations_data()).interwiki_langs[langcode] local wmlangs = interwiki_langcode and {get_wikimedia_lang(interwiki_langcode)} or lang:getWikimediaLanguages() -- Don't show the interwiki link if the language is not recognised by Wikimedia. if #wmlangs == 0 then terminfo.interwiki = false return end local sc = terminfo.sc local target_page = get_link_page(term, lang, sc) local split = split_on_slashes(target_page) if not split[1] then terminfo.interwiki = false return end target_page = split[1] local wmlangcode = wmlangs[1]:getCode() local interwiki_link = language_link{ lang = lang, sc = sc, term = wmlangcode .. ":" .. target_page, alt = "(" .. wmlangcode .. ")", tr = "-" } terminfo.interwiki = tostring(html_create("span") :addClass("tpos") :wikitext("&nbsp;" .. interwiki_link) ) end function export.show_terminfo(terminfo, check) local lang = terminfo.lang local langcode, langname = lang:getCode(), lang:getCanonicalName() -- Translations must be for mainspace languages. if not lang:hasType("regular") then error("Translations must be for attested and approved main-namespace languages.") else local disallowed = (translations_data or get_translations_data()).disallowed local err_msg = disallowed[langcode] if err_msg then error("Translations not allowed in " .. langname .. " (" .. langcode .. "). " .. langname .. " translations should " .. err_msg) end local fullcode = lang:getFullCode() if fullcode ~= langcode then err_msg = disallowed[fullcode] if err_msg then langname = lang:getFullName() error("Translations not allowed in " .. langname .. " (" .. fullcode .. "). " .. langname .. " translations should " .. err_msg) end end end if langcode == "ms" then if terminfo.interwiki then error("Interwiki translations not allowed for English; they should always link to a different Wiktionary") end local current_L2 = require(pages_module).get_current_L2() if current_L2 ~= "Rentas bahasa" and mw.title.getCurrentTitle().nsText ~= "Wikikamus" then if current_L2 then error("English translations only allowed in Translingual section, not in " .. current_L2) else error("English translations only allowed in Translingual section, not outside of any L2") end end end local term = terminfo.term -- Check if there is a term. Don't show the interwiki link if there is nothing to link to. if not term then -- Track entries that don't provide a term. -- FIXME: This should be a category. track("translations/no term") track("translations/no term/" .. langcode) end if terminfo.interwiki then interwiki(terminfo, term, lang, langcode) end langcode = lang:getFullCode() if (translations_data or get_translations_data()).need_super[langcode] then local tr = terminfo.tr if tr ~= nil then terminfo.tr = tr:gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>") end end terminfo.show_qualifiers = true local link = full_link(terminfo, "translation") local canonical_name = lang:getCanonicalName() local full_name = lang:getFullName() local categories = {"Perkataan dengan terjemahan bahasa " .. canonical_name} if canonical_name ~= full_name then insert(categories, "Perkataan dengan terjemahan bahasa " .. full_name) end if check then link = tostring(html_create("span") :addClass("ttbc") :tag("sup") :addClass("ttbc") :wikitext("(sila [[WT:Terjemahan#Terjemahan untuk disemak|sahkan]])") :done() :wikitext(" " .. link) ) insert(categories, "Permintaan pengesahan terjemahan bahasa " .. langname ) end return link .. format_categories(categories, en or get_en(), nil, canonical_pagename()) end -- Implements {{t}}, {{t+}}, {{t-check}} and {{t+check}}. function export.show(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["translation"]) local check = frame.args.check return export.show_terminfo({ lang = args[1], sc = args.sc, track_sc = true, term = args[2], alt = args.alt, id = args.id, genders = args[3], tr = args.tr, ts = args.ts, lit = args.lit, q = args.q, qq = args.qq, l = args.l, ll = args.ll, refs = args.ref, interwiki = frame.args.interwiki, }, check and check ~= "") end local function add_id(div, id) return id and div:attr("id", normalize_anchor("Translations-" .. id)) or div end -- Implements {{ter-atas}} and part of {{ter-atas-juga}}. local function top(args, title, id, navhead) local column_width = (args["column-width"] == "wide" or args["column-width"] == "narrow") and "-" .. args["column-width"] or "" local div = html_create("div") :addClass("NavFrame") :node(navhead) :tag("div") :addClass("NavContent") :tag("table") :addClass("translations") :attr("role", "presentation") :attr("data-gloss", title or "") :tag("tr") :tag("td") :addClass("translations-cell") :addClass("multicolumn-list" .. column_width) :attr("colspan", "3") :allDone() div = add_id(div, id) local categories = {} if not title then insert(categories, "Pengepala jadual terjemahan kekurangan padanan kata") end local pagename = canonical_pagename() if is_translation_subpage() then insert(categories, "Sublaman terjemahan") end return (tostring(div):gsub("</td></tr></table></div></div>$", "")) .. (#categories > 0 and format_categories(categories, en or get_en(), nil, pagename) or "") .. -- Category to trigger [[MediaWiki:Gadget-TranslationAdder.js]]; we want this even on -- user pages and such. format_categories("Perkataan dengan kotak terjemahan", nil, nil, nil, true) .. templatestyles("Modul:translations/styles.css") end -- Entry point for {{ter-atas}}. function export.top(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["ter-atas"]) local title = args[1] local id = args.id or title title = title and remove_links(title) return top(args, title, id, html_create("div") :addClass("NavHead") :css("text-align", "left") :wikitext(title or "Terjemahan") ) end -- Entry point for {{checktrans-top}}. function export.check_top(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["checktrans-top"]) local text = "\n:''The translations below need to be checked and inserted above into the appropriate translation tables. See instructions at " .. frame:expandTemplate{ title = "section link", args = {"Wikikamus:Susun atur entri#Terjemahan"} } .. ".''\n" local header = html_create("div") :addClass("checktrans") :wikitext(text) local subtitle = args[1] local title = "Terjemahan untuk disemak" if subtitle then title = title .. "&zwnj;: \"" .. subtitle .. "\"" end -- No ID, since these should always accompany proper translation tables, and can't be trusted anyway (i.e. there's no use-case for links). return tostring(header) .. "\n" .. top(args, title, nil, html_create("div") :addClass("NavHead") :css("text-align", "left") :wikitext(title or "Terjemahan") ) end -- Implements {{ter-bawah}}. function export.bottom(frame) -- Check nothing is being passed as a parameter. process_params(frame:getParent().args, (parameters_data or get_parameters_data())["ter-bawah"]) return "</table></div></div>" end -- Implements {{ter-lihat}} and part of {{ter-atas-juga}}. local function see(args, see_text) local navhead = html_create("div") :addClass("NavHead") :css("text-align", "left") :wikitext(args[1] .. " ") :tag("span") :css("font-weight", "normal") :wikitext("— ") :tag("i") :wikitext(see_text) :allDone() local terms, id = args[2], args.id if #terms == 0 then terms[1] = args[1] end for i = 1, #terms do local term_id = id[i] or id.default local data = { term = terms[i], id = term_id and "Translations-" .. term_id or "Translations", } terms[i] = plain_link(data) end return navhead:wikitext(concat(terms, ",&lrm; ")) end -- Entry point for {{ter-lihat}}. function export.see(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["ter-lihat"]) local div = html_create("div") :addClass("pseudo") :addClass("NavFrame") :node(see(args, "see ")) return tostring(add_id(div, args.id.default or args[1])) end -- Entry point for {{ter-atas-juga}}. function export.top_also(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["ter-atas-juga"]) local navhead = see(args, "lihat juga ") local title = args[1] local id = args.id.default or title title = remove_links(title) return top(args, title, id, navhead) end -- Implements {{translation subpage}}. function export.subpage(frame) process_params(frame:getParent().args, (parameters_data or get_parameters_data())["translation subpage"]) if not is_translation_subpage() then error("This template should only be used on translation subpages, which have titles that end with '/translations'.") end -- "Translation subpages" category is handled by {{trans-top}}. return ("''This page contains translations for ''%s''. See the main entry for more information.''"):format(full_link{ lang = en or get_en(), term = canonical_pagename(), }) end -- Implements {{t-needed}}. function export.needed(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["t-needed"]) local lang, category = args[1], "" local span = html_create("span") :addClass("trreq") :attr("data-lang", lang:getCode()) :tag("i") :wikitext("sila tambah terjemahan ini jika boleh") :done() if not args.nocat then local type, sort = args[2], args.sort if type == "quote" then category = "Permintaan terjemahan petikan bahasa " .. lang:getCanonicalName() elseif type == "usex" then category = "Permintaan terjemahan contoh penggunaan bahasa " .. lang:getCanonicalName() else category = "Permintaan terjemahan ke dalam bahasa " .. lang:getCanonicalName() lang = en or get_en() end category = format_categories(category, lang, sort, not sort and canonical_pagename() or nil) end return tostring(span) .. category end -- Implements {{no equivalent translation}}. function export.no_equivalent(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["no equivalent translation"]) local text = "tiada padanan kata dalam bahasa " .. args[1]:getCanonicalName() if not args.noend then text = text .. ", tetapi lihat" end return tostring(html_create("i"):wikitext(text)) end -- Implements {{no attested translation}}. function export.no_attested(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["no attested translation"]) local langname = args[1]:getCanonicalName() local text = "tiada perkataan [[WT:ATTEST|disahkan]] dalam bahasa " .. langname local category = "" if not args.noend then text = text .. ", but see" local sort = args.sort category = format_categories("Terjemahan bahasa " .. langname .. " yang tidak disahkan", en or get_en(), sort, not sort and canonical_pagename() or nil) end return tostring(html_create("i"):wikitext(text)) .. category end -- Implements {{not used}}. function export.not_used(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["not used"]) return tostring(html_create("i"):wikitext((args[2] or "tidak digunakan") .. " dalam " .. args[1]:getCanonicalName())) end return export pvow12yg2wbwz129ibqcuqfuhq84xcp Templat:R:Man'yōshū 1 10 10534 344667 342936 2026-06-08T09:16:54Z Hakimi97 2668 344667 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-book |ja|last=Satake|first=Akihiro|coauthors=Hideo Yamada; Rikio Kudō; Masao Ōtani; Yoshiyuki Yamazaki|title=Shin Nihon Koten Bungaku Taikei 1: [[w:Man'yōshū|Man’yōshū]] 1|location=[[w:Tokyo|Tōkyō]]|publisher=[[w:Iwanami Shoten Publishing|Iwanami Shoten]]|year=c. 759|year_published=1999|isbn=978-4-00-240001-3 |usenodot=1 }}<noinclude>{{refcat|ja}}</noinclude> 59n64vquziiav3mc8dfkew2zvmguuqf Templat:R:Man'yōshū 2 10 10536 344664 342937 2026-06-08T09:13:03Z Hakimi97 2668 344664 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-book |ja|last=Satake|first=Akihiro|coauthors=Hideo Yamada; Rikio Kudō; Masao Ōtani; Yoshiyuki Yamazaki|title=Shin Nihon Koten Bungaku Taikei 2: [[w:Man'yōshū|Man’yōshū]] 2|location=[[w:Tokyo|Tōkyō]]|publisher=[[w:Iwanami Shoten Publishing|Iwanami Shoten]]|year=c. 759|year_published=2000|isbn=978-4-00-240002-0 |usenodot=1 }}<noinclude>{{refcat|ja}}</noinclude> 4coom6yog53hbvcmeblv8iun4b0hrsl Templat:R:Nihon Kokugo Daijiten Concise 10 35003 344657 146785 2026-06-08T09:08:21Z Hakimi97 2668 Hakimi97 telah memindahkan laman [[Templat:R:Nihon Kokugo Daijiten 2]] ke [[Templat:R:Nihon Kokugo Daijiten Concise]] 146785 wikitext text/x-wiki {{cite-book |entryurl=https://kotobank.jp/word/{{{1<includeonly>|{{PAGENAME}}</includeonly>}}}?dic=nikkoku |entry={{lang|ja|{{{1<includeonly>|{{PAGENAME}}</includeonly>}}}}} |title={{lw|ja|日本国語大辞典|tr=Nihon Kokugo Daijiten|t=[[w:Nihon Kokugo Daijiten|Nihon Kokugo Daijiten]]}} |url=https://kotobank.jp/dictionary/nikkoku/ |lang=ja |edition=2 |location=[[w:Tōkyō|Tōkyō]] |publisher=[[w:Shogakukan|Shogakukan]] |year=2000 |isbn=4-09-521001-X }}<noinclude>{{documentation}}[[Category:Templat rujukan bahasa Jepun|Nihon Kokugo Daijiten 2]] </noinclude> 0jtddygrsmk26es1ry2gzaa8m8hx74z 344659 344657 2026-06-08T09:08:48Z Hakimi97 2668 344659 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-book |ja |entryurl=https://kotobank.jp/word/{{urlencode:{{{1<includeonly>|{{pagename}}</includeonly>}}}|PATH}}#E7.B2.BE.E9.81.B8.E7.89.88.20.E6.97.A5.E6.9C.AC.E5.9B.BD.E8.AA.9E.E5.A4.A7.E8.BE.9E.E5.85.B8 |entry={{lang|ja|{{{1<includeonly>|{{pagename}}</includeonly>}}}}} |title={{lw|ja|日本国語大辞典}} |trans-title={{w|Nihon Kokugo Daijiten}} |url=https://kotobank.jp/dictionary/nikkokuseisen/ |edition=concise |location=w:Tokyo |publisher=w:Shogakukan |year=2006 }}<noinclude> {{documentation}} {{shortcut|Template:R:ja:NKD Concise}} {{refcat|ja}} </noinclude> pxjfsezuh3j5bpw8xg89pu0dux2nkxt Modul:reference template cat 828 35045 344666 342930 2026-06-08T09:16:19Z Hakimi97 2668 344666 Scribunto text/plain local export = {} local concat = table.concat local format = string.format local get_lang = require("Module:languages").getByCode local insert = table.insert local insert_if_not = require("Module:table/insertIfNot") local keys_to_list = require("Module:table/keysToList") local process_params = require("Module:parameters").process local table_contains = require("Module:table/contains") local prefixes = { ["rujukan"] = "R", ["petikan"] = "RQ", ["penggunaan"] = "U", ["senarai"] = "list", ["jadual"] = "table" } local options = { comparison = function (obj1, obj2) return obj1:getCode() == obj2:getCode() end } function export.categorize(title, langs, sortkey, what) what = what or "rujukan" local name = title.text:gsub("^" .. prefixes[what] .. ":", "") local title_code, rest = name:match("^(%l[%a-]*%a):(.+)$") if title_code then local title_lang = get_lang(title_code, nil, true, true) if not title_lang then -- Check for proto-languages manually, which catches any with code -- xxx-pro where there is no family xxx (which shouldn't really -- happen, but sometimes does). Don't allow families this time, as -- they can't be proto-languages. title_lang = get_lang(title_code .. "-pro", nil, true) elseif title_lang:hasType("family") then title_lang = title_lang:getProtoLanguage() end if title_lang and not table_contains(langs, title_lang, options) then insert(langs, 1, title_lang) end name = rest end sortkey = sortkey or name local cats = {} for _, lang in ipairs(langs) do repeat local cat = format( "[[Kategori:Templat %s bahasa %s|%s]]", what, lang:getCanonicalName(), sortkey ) insert_if_not(cats, cat) lang = lang:getParent() until not lang end return concat(cats) end function export.main(frame) local iargs = process_params(frame.args, { ["what"] = {set = keys_to_list(prefixes), default = "rujukan"}, }) local args = process_params(frame:getParent().args, { [1] = {type = "language", list = true}, ["title"] = {type = "title", demo = true}, ["sort"] = true, }) -- FIXME: this should be more specific. local current_title = mw.title.getCurrentTitle() if current_title.nsText == "" or current_title.nsText == "Rekonstruksi" then error("This template is meant to be used in the Template namespace.") end local title = args.title local categories = export.categorize(title or current_title, args[1], args.sort, iargs.what) if title then categories = mw.text.nowiki(categories) end return categories end return export q5qzmcmiwa1xa8p8u5edzso2cknaacd Templat:reference template cat 10 35083 344665 229201 2026-06-08T09:14:44Z Hakimi97 2668 Mengemas kini mengikut padanan Wikikamus bahasa Inggeris (semakan [[en:Special:Diff/90161550|90161550]]) 344665 wikitext text/x-wiki <includeonly>{{#invoke:reference template cat|main}}</includeonly><noinclude>{{documentation}}</noinclude> luksmm5vfifoqus9yfyen1rylkztzgo Templat:R:Lexico 10 36946 344656 149508 2026-06-08T09:07:10Z Hakimi97 2668 Mengemas kini mengikut padanan Wikikamus bahasa Inggeris (semakan [[en:Special:Diff/88879225|88879225]]) 344656 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{#if:{{{subentry|}}} | “{{#invoke:string/templates|replace|{{#invoke:string/templates|replace|{{{subentry}}}|'|’}}|’’|''}}{{#if:{{{subpos|}}}|, ''{{{subpos}}}{{#switch:{{{subpos|}}} | phrase|prefix|suffix =<!--Do nothing--> | . }}''}}” under&#32; }}{{cite-book |entry = {{#invoke:string/templates|replace|{{#invoke:string/templates|replace|{{#if:{{{alt|}}} | {{{alt}}} | {{{entry|{{{1|{{pagename}}}}}}}} }}|'|’}}|’’|''}}{{#if:{{{part of speech|}}}{{{pos|}}}{{{2|}}} |, {{#if:{{{noformat|}}} | {{{part of speech|{{{pos|{{{2|}}}}}}}}} | ''{{{part of speech|{{{pos|{{{2|}}}}}}}}}{{#switch:{{{part of speech|}}}{{{pos|}}}{{{2|}}} | phrase|prefix|suffix =<!--Do nothing--> | . }}'' }} }} |entryurl = {{#if:{{{url|}}}{{{3|}}} | {{{url|{{{3|}}}}}} | https://web.archive.org/https://www.lexico.com/{{#if:{{{us|}}}|en/}}definition/{{urlencode:{{replace|{{{entry|{{{1|{{pagename}}}}}}}}| |_}}|PATH}} }} |title = [[w:Lexico|Lexico]] |publisher = [[w:Dictionary.com|Dictionary.com]]; [[w:Oxford University Press|Oxford University Press]] |year = 2019–2022 |passage = {{{passage|{{{text|{{{4|}}}}}}}}} }}{{#if:{{{nodot|}}}||.}}<noinclude>{{documentation}}</noinclude> m2qyithht9lbm6ra4nonb7v4f4ivsvs basaan lumoyog 0 56568 344669 296183 2026-06-08T10:40:46Z CommonsDelinker 79 Replacing Chloe_Sutton.jpg with [[File:Chloe_Sutton_-_USA_Swimsuit_(4661622460).jpg]] (by [[:c:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: [[:c:COM:FR#FR2|Criterion 2]] (meaningless or ambiguous name) · [[:c::File:Chloe Sut 344669 wikitext text/x-wiki [[File:Chloe Sutton - USA Swimsuit (4661622460).jpg|thumb|poinrasuk do basaan lumoyog]] ==Bahasa Kadazandusun== ===Kata nama=== {{inti|dtp|kata nama}} #baju renang ===Sebutan=== [[File:LL-Q5317225 (dtp)-Nelynnnnn-basaan lumoyog.wav|thumb|left]] ===Rujukan=== * Komoiboros Kigambal. (2023) l9j2dwzdatm4pjgmbryr536lx7eotli Templat:R:ESBKGDK 10 78099 344662 256020 2026-06-08T09:10:22Z Hakimi97 2668 344662 wikitext text/x-wiki {{cite-book |entry = {{{entry|{{{1|{{PAGENAME}}}}}}}} |url = |author = Abdulhadi Muhammad |author2 = Hamidah Mahmud |title = Ensiklopedia Simpulan Bahasa dan Kata Ganda Dialek Kelantan |trans-reference = |location = |publisher = {{w|Pertubuhan Peradaban Melayu Malaysia Kelantan}} |year = 2023 |isbn = 9780671301255 |issn = |page = {{{page|{{{2|}}}}}} |pages = {{{pages|}}} |passage = {{{passage|{{{3|}}}}}} |nodot = {{{nodot|}}} }}<noinclude>[[Kategori:Templat bahasa Melayu Kelantan-Patani]]{{pendokumenan}}</noinclude> 9yy252dszjgq38x9wrx8wp8d2aqjh3f Templat:R:KPLK 10 86295 344654 244751 2026-06-08T09:02:54Z Hakimi97 2668 Baiki templat 344654 wikitext text/x-wiki {{cite-book |title = Kamus Pertuturan Loghat Kelantan |url = https://books.google.com.my/books/about/Kamus_pertuturan_loghat_Kelantan.html?id=ud1NAQAAIAAJ&redir_esc=y |author = Abdullah al-Qari bin Haji Salleh |reference = |trans-reference = |location = Malaysia |publisher = Pustaka Asa |year = 1981 |isbn = |issn = |page = {{{page|{{{|}}}}}} |pages = {{{pages|}}} |passage = {{{passage|{{{|}}}}}} |nodot = {{{nodot|}}} }}<noinclude>{{pendokumenan}} [[Kategori:Templat rujukan bahasa Melayu Kelantan-Patani]]</noinclude> 0ogv7kwqyu3ako3uscrjrwlmodyxjwy Templat:R:BMKMIMW 10 86309 344661 245025 2026-06-08T09:09:48Z Hakimi97 2668 344661 wikitext text/x-wiki {{cite-book |title = Bahasa Melayu Kelantan: Menggali Ilmu Menyusur Warisan |url = https://search.worldcat.org/en/title/Bahasa-Melayu-Kelantan-:-menggali-ilmu-menyusur-warisan/oclc/973767412 |author = Nik Safiah Abdul Karim, Rozita Che Rodi |reference = |trans-reference = |location = |publisher = Majlis Agama Islam Kelantan dan Adat Istiadat Melayu Kelantan |year = 2016 |isbn = 9789832391692 |issn = |page = {{{page|{{{|}}}}}} |pages = {{{pages|}}} |passage = {{{passage|{{{|}}}}}} |nodot = {{{nodot|}}} }}<noinclude>{{pendokumenan}} [[Kategori:Templat rujukan bahasa Melayu Kelantan-Patani]]</noinclude> 2xs3moun279cg16cod0y3z1rduscu4g Templat:R:GSBKGDK 10 86310 344660 244812 2026-06-08T09:09:29Z Hakimi97 2668 344660 wikitext text/x-wiki {{cite-book |title = Ensiklopedia Simpulan Bahasa dan Kata Ganda Dialek Kelantan |url = https://books.google.com.my/books?id=do3EswEACAAJ |author = Abdulhadi Muhamad, Hamidah Mahmud |reference = |trans-reference = |location = |publisher = Pertubuhan Peradaban Melayu Malaysia Kelantan |year = 2017 |isbn = 9780671301255 |issn = |page = {{{page|{{{|}}}}}} |pages = {{{pages|}}} |passage = {{{passage|{{{|}}}}}} |nodot = {{{nodot|}}} }}<noinclude>{{pendokumenan}} [[Kategori:Templat rujukan bahasa Melayu Kelantan-Patani]]</noinclude> 9qannihpbrn4sa6udtx1pfvikik15ma Modul:template cat 828 118621 344668 342886 2026-06-08T09:24:35Z Hakimi97 2668 344668 Scribunto text/plain -- Author: Benwing local export = {} local require_when_needed = require("Module:utilities/require when needed") local is_callable = require_when_needed("Module:fun", "is_callable") local format_categories = require_when_needed("Module:utilities", "format_categories") local parse_interface_module = "Module:parse interface" local m_string_utilities = require("Module:string utilities") local und_lang = require("Module:languages").getByCode("und", true) local ugsub = m_string_utilities.gsub local ufind = m_string_utilities.find local split = m_string_utilities.split local insert = table.insert local concat = table.concat local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- This table detects the category type of the template given its name. When this is invoked, the language code has -- already been removed from the beginning, and anything starting with a slash has been truncated. The entries are -- processed in order and are two-element lists of Lua patterns (anchored on both sides; beware of hyphens, which need -- to be %-escaped) and the category type to use. The category types themselves are mapped to categories in -- category_type_to_category. local detect_category_type_list = { -- order is important here -- nouns, proper nouns, pronouns -- (1) unambiguous decl/infl templates {"decl%-.*proper.*", "noun inflection-table"}, {"infl%-.*proper.*", "noun inflection-table"}, {"decl%-.*pron.*", "pronoun inflection-table"}, {"infl%-.*pron.*", "pronoun inflection-table"}, {"decl%-noun.*", "noun inflection-table"}, {"infl%-noun.*", "noun inflection-table"}, -- (2) nouns {"noun", "headword-line"}, {"noun[ -]form", "headword-line"}, {"noun[ -]pl", "headword-line"}, {"noun[ -]plonly", "headword-line"}, -- Some languages, e.g. Urdu, have inflection templates called e.g. [[Template:ur-noun-f-ī]]. They should be called -- [[Template:ur-decl-noun-f-ī]] but we can autodetect them if we exclude the likely cases that are not declension -- templates. {"noun%-.*", "noun inflection-table"}, {"ndecl", "noun inflection-table"}, {"ndecl%-.*", "noun inflection-table"}, -- (3) proper nouns {"proper[ -]?noun", "headword-line"}, {"proper[ -]?noun[ -]form", "headword-line"}, {"proper[ -]?noun[ -]pl", "headword-line"}, {"proper[ -]?noun[ -]plonly", "headword-line"}, {"pnoun", "headword-line"}, {"pnoun[ -]form", "headword-line"}, {"pnoun[ -]pl", "headword-line"}, {"pnoun[ -]plonly", "headword-line"}, {"propn", "headword-line"}, {"propn[ -]form", "headword-line"}, {"propn[ -]pl", "headword-line"}, {"propn[ -]plonly", "headword-line"}, -- See above for inflection templates without 'decl' or 'infl' in them. {"proper[ -]?noun%-.*", "noun inflection-table"}, {"pnoun%-.*", "noun inflection-table"}, {"propn%-.*", "noun inflection-table"}, -- (4) pronouns {"pron", "headword-line"}, {"pronoun", "headword-line"}, {"pron[ -]form", "headword-line"}, {"pronoun[ -]form", "headword-line"}, {"prondecl", "pronoun inflection-table"}, {"prondecl%-.*", "pronoun inflection-table"}, -- adjectives {"decl%-adj.*", "adjective inflection-table"}, {"infl%-adj.*", "adjective inflection-table"}, {"adj", "headword-line"}, {"adjective", "headword-line"}, {"adj[ -]form", "headword-line"}, {"adjective[ -]form", "headword-line"}, {"adj[ -]comp", "headword-line"}, {"adjective[ -]comp", "headword-line"}, {"adj[ -]sup", "headword-line"}, {"adjective[ -]sup", "headword-line"}, -- Some languages, e.g. Urdu and Lithuanian, have inflection templates called e.g. [[Template:ur-adj-1]] and -- [[Template:lt-adj-is]]. They should be called [[Template:ur-decl-adj-1]] and [[Template:lt-decl-adj-is]] but we -- can autodetect them if we exclude the likely cases that are not declension templates. {"adj%-.*", "adjective inflection-table"}, {"adecl", "adjective inflection-table"}, {"adecl%-.*", "adjective inflection-table"}, -- verbs; need to avoid including conjunctions {"verb", "headword-line"}, {"conj", "verb inflection-table"}, {"conj[0-9 -].*", "verb inflection-table"}, {"conjug.*", "verb inflection-table"}, {"infl%-verb.*", "verb inflection-table"}, -- pronunciation {".*IPA.*", "pronunciation"}, {"pronunciation", "pronunciation"}, {"pr", "pronunciation"}, {"p", "pronunciation"}, -- form-of {".*form of", "form-of"}, -- pronominal boxes {".*personal pronouns", "personal pronoun"}, {".*demonstrative.*", "demonstrative"}, {".*interrogative.*", "interrogative"}, {".*possessives", "possessive"}, {".*possessive .*", "possessive"}, {".*reflexives", "reflexive"}, {".*reflexive .*", "reflexive"}, -- these next two should precede 'relative' {".*correlatives", "pro-form"}, {".*correlative .*", "pro-form"}, {".*relative .*", "relative"}, {".*articles", "article"}, {".*prefixes", "affix"}, {".*suffixes", "affix"}, -- TOC tables {".*TOC", "TOC"}, -- numbers, numerals {".*numbers", "number"}, {".*numerals", "number"}, {".*ordinals", "ordinal"}, {".*cardinals", "cardinal"}, {".*digits", "digit"}, -- transliteration {".*xlit", "orthographic conversion"}, {".*translit", "orthographic conversion"}, -- orthographic and regional variants {".*variant", "orthographic variant"}, {".*regional", "regional variant"}, -- sign production templates -- FIXME: We should limit this to sign languages. As it is, we put it near the bottom of the -- pattern list so it doesn't accidentally override other patterns for non-sign languages. {"prod .*", "sign production"}, } -- This table indicates how to convert template category types to categories. It consists of a list of pairs, where the -- first element is the category type and the second element is a key-value table containing the following keys: -- * `aliases`: Optional list of aliases for the category type, which can be used when explicitly specifying the type, -- e.g. {{tcat|hw}} instead of {{tcat|headword-line}}. -- * `cats`: List of categories to add the template to. Each entry either specifies a ''raw'' category (if the category -- name begins with "Category:"), a ''full table'' category (if the category name begins with "label:", where what -- follows specifies the full label without the prefixed language name) or a ''regular label'' category (for other -- strings, where e.g. if the label is "noun inflection-table", the category name is -- "LANG noun inflection-table templates"). An entry is either a string, directly specifying the category name, or a -- key-value table with keys `name` (the category name) and `sort` (how to generate the sort base). By default, the -- sort base for raw categories is a comma-separated list of the language names (not codes) associated with the -- template, or the full template name if there are no languages, and the sort base for label categories is the -- template name minus the initial language code. If this isn't correct, the `sort` field specifies how to compute the -- sort base. It is either a function of two arguments, the template name and language object, which should return the -- sort base; or a table of specs telling how to compute the sort base. In the case of a function, the template name -- passed in is the full name for raw categories, but the name minus any language code prefix in the case of label -- categories; and for raw categories, a list of all associated language objects is passed in, or {nil} if none, while -- for label categories, a single language object is passed in. (Label categories can only exist if there are -- associated languages.) In the case where `sort` is a table of specs, it is a list where each element is a -- two-element list of a Lua pattern anchored on both sides and the corresponding pattern replacement string. The -- specs are processed in order. local category_type_to_category = { -- Inflection-table templates {"noun inflection-table", { aliases = {"nouninfl", "noundecl", "ndecl"}, cats = {{name = "noun inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"noun%-(.*)", "%1"}, -- put this twice to catch noun-decl-* and decl-noun-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"noun", "*"}, {"ndecl%-base%-(.*)", " %1"}, {"ndecl%-base", " "}, {"ndecl%-(.*)", "%1"}, {"ndecl", "*"}, {"propndecl%-base%-(.*)", " %1"}, {"propndecl%-base", " "}, {"propndecl%-(.*)", "%1"}, {"propndecl", "*"}, {"proper[ -]?noun%-(.*)", "%1"}, {"propn%-(.*)", "%1"}, {"pnoun%-(.*)", "%1"}, }}}, }}, {"pronoun inflection-table", { aliases = {"proninfl", "prondecl"}, cats = {{name = "pronoun inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"pronoun%-(.*)", "%1"}, {"pron%-(.*)", "%1"}, -- put this twice to catch pron-decl-* and decl-pron-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"pronoun", "*"}, {"pron", "*"}, {"prondecl%-base%-(.*)", " %1"}, {"prondecl%-base", " "}, {"prondecl%-(.*)", "%1"}, {"prondecl", "*"}, }}}, }}, {"article inflection-table", { aliases = {"artinfl", "artdecl"}, cats = {{name = "article inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"article%-(.*)", "%1"}, {"art%-(.*)", "%1"}, -- put this twice to catch art-decl-* and decl-art-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"article", "*"}, {"art", "*"}, {"artdecl%-base%-(.*)", " %1"}, {"artdecl%-base", " "}, {"artdecl%-(.*)", "%1"}, {"artdecl", "*"}, }}}, }}, {"determiner inflection-table", { aliases = {"detinfl", "detdecl"}, cats = {{name = "determiner inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"determiner%-(.*)", "%1"}, {"det%-(.*)", "%1"}, -- put this twice to catch det-decl-* and decl-det-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"determiner", "*"}, {"det", "*"}, {"detdecl%-base%-(.*)", " %1"}, {"detdecl%-base", " "}, {"detdecl%-(.*)", "%1"}, {"detdecl", "*"}, }}}, }}, {"preposition inflection-table", { aliases = {"prepinfl", "prepdecl"}, cats = {{name = "preposition inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"preposition%-(.*)", "%1"}, {"prep%-(.*)", "%1"}, -- put this twice to catch prep-decl-* and decl-prep-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"preposition", "*"}, {"prep", "*"}, {"prepdecl%-base%-(.*)", " %1"}, {"prepdecl%-base", " "}, {"prepdecl%-(.*)", "%1"}, {"prepdecl", "*"}, {"prepinfl%-base%-(.*)", " %1"}, {"prepinfl%-base", " "}, {"prepinfl%-(.*)", "%1"}, {"prepinfl", "*"}, }}}, }}, {"postposition inflection-table", { aliases = {"postpinfl", "postpdecl"}, cats = {{name = "postposition inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"postposition%-(.*)", "%1"}, {"postp%-(.*)", "%1"}, {"post%-(.*)", "%1"}, -- put this twice to catch postp-decl-* and decl-postp-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"postposition", "*"}, {"postp", "*"}, {"post", "*"}, {"postpdecl%-base%-(.*)", " %1"}, {"postpdecl%-base", " "}, {"postpdecl%-(.*)", "%1"}, {"postpdecl", "*"}, {"postpinfl%-base%-(.*)", " %1"}, {"postpinfl%-base", " "}, {"postpinfl%-(.*)", "%1"}, {"postpinfl", "*"}, }}}, }}, {"adjective inflection-table", { aliases = {"adjinfl", "adjdecl", "adecl"}, cats = {{name = "adjective inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"adj%-(.*)", "%1"}, {"adjective%-(.*)", "%1"}, -- put this twice to catch adj-decl-* and decl-adj-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"adj", "*"}, {"adjective", "*"}, {"adecl%-base%-(.*)", " %1"}, {"adecl%-base", " "}, {"adecl%-(.*)", "%1"}, {"adecl", "*"}, }}}, }}, {"numeral inflection-table", { aliases = {"numinfl", "numdecl"}, cats = {{name = "numeral inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"numeral%-(.*)", "%1"}, {"number%-(.*)", "%1"}, {"num%-(.*)", "%1"}, -- put this twice to catch num-decl-* and decl-num-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"numeral", "*"}, {"number", "*"}, {"num", "*"}, {"numdecl%-base%-(.*)", " %1"}, {"numdecl%-base", " "}, {"numdecl%-(.*)", "%1"}, {"numdecl", "*"}, }}}, }}, {"nominal inflection-table", { aliases = {"nominfl", "nomdecl"}, cats = {{name = "nominal inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"nominal%-(.*)", "%1"}, {"nom%-(.*)", "%1"}, -- put this twice to catch nom-decl-* and decl-nom-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"nominal", "*"}, {"nom", "*"}, {"nomdecl%-base%-(.*)", " %1"}, {"nomdecl%-base", " "}, {"nomdecl%-(.*)", "%1"}, {"nomdecl", "*"}, }}}, }}, {"verb inflection-table", { aliases = {"verbinfl", "conj"}, cats = {{name = "verb inflection-table", sort = { {"infl%-(.*)", "%1"}, {"verb%-(.*)", "%1"}, -- put this twice to catch verb-infl-* and infl-verb-* {"infl%-(.*)", "%1"}, {"conj%-base%-(.*)", " %1"}, {"conj%-base", " "}, -- handle conj2, conj1-c, etc. {"conj%-?(.*)", "%1"}, {"conj", "*"}, }}}, }}, {"adverb inflection-table", { aliases = {"advinfl"}, cats = {{name = "adverb inflection-table", sort = { {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"adverb%-(.*)", "%1"}, {"adv%-(.*)", "%1"}, -- put this twice to catch adv-decl-* and decl-adv-* {"infl%-(.*)", "%1"}, {"decl%-(.*)", "%1"}, {"adverb", "*"}, {"adv", "*"}, {"advinfl%-base%-(.*)", " %1"}, {"advinfl%-base", " "}, {"advinfl%-(.*)", "%1"}, {"advinfl", "*"}, }}}, }}, -- Inflection-table subtemplates {"inflection-table sub", { aliases = {"inflsub"}, cats = {"label:inflection-table subtemplates"}, }}, -- Definition templates -- Headword-line templates {"headword-line", { aliases = {"hw", "headword"}, cats = {"baris pengepala kata"}, }}, -- Definition templates {"definition", { aliases = {"def", "defn"}, cats = {"takrifan"}, }}, {"form-of", { aliases = {"form of"}, cats = {"bentuk bagi"}, }}, -- Etymology and pronunciation templates {"etymology", { aliases = {"etym"}, cats = {"etimologi"}, }}, {"morphology", { aliases = {"morph"}, cats = {"etimologi", "Kategori:Templat morfologi khusus bahasa"}, }}, {"pronunciation", { aliases = {"pron"}, cats = {"sebutan"}, }}, {"sign production", { aliases = {"signprod"}, cats = {{name = "sign production", sort = { {"prod (.*)", "%1"}, }}}, }}, -- Pseudo-namespace templates {"reference", { aliases = {"ref"}, cats = {{name = "rujukan", allow_etym = true}}, }}, {"quotation", { aliases = {"quote"}, cats = {"petikan"}, }}, {"usage", { cats = {"penggunaan"}, }}, {"list", { cats = {"senarai"}, }}, {"auto-table", { aliases = {"table"}, cats = {"jadual automatik"}, }}, -- Navigation templates -- Pro-form box templates {"pro-form", { aliases = {"pro-forms"}, cats = {"navigasi", "Kategori:Templat kotak pro-bentuk"}, }}, {"adposition", { aliases = {"adpositions", "preposition", "prepositions", "postposition", "postpositions"}, cats = {"navigasi", "Kategori:Templat kotak adposisi"}, }}, {"affix", { aliases = {"affixes", "prefix", "prefixes", "suffix", "suffixes"}, cats = {"navigasi", "Kategori:Templat kotak imbuhan pro-bentuk"}, }}, {"article", { aliases = {"articles"}, cats = {"navigasi", "Category:Grammatical article box templates"}, }}, {"demonstrative", { aliases = {"demonstratives"}, cats = {"navigasi", "Category:Demonstrative box templates"}, }}, {"interrogative", { aliases = {"interrogatives"}, cats = {"navigasi", "Category:Interrogative box templates"}, }}, {"personal pronoun", { aliases = {"perspron", "personal pronouns"}, cats = {"navigasi", "Category:Personal pronoun box templates"}, }}, {"possessive", { aliases = {"possessives"}, cats = {"navigasi", "Category:Possessive pronoun and determiner box templates"}, }}, {"reflexive", { aliases = {"reflexives"}, cats = {"navigasi", "Category:Reflexive pronoun and determiner box templates"}, }}, {"relative", { aliases = {"relatives"}, cats = {"navigasi", "Category:Relative pronoun and determiner box templates"}, }}, {"navigation", { -- miscellaneous navigation box templates like {{eu-aux verbs}}, {{pt-forms of address}} aliases = {"nav"}, cats = {"navigasi"}, }}, {"TOC", { cats = {{name = "navigation", sort = { {"categoryTOC", "TOC"}, }}, "Kategori:Templat TOC"}, }}, {"number", { aliases = {"numbers"}, cats = {"navigasi", "Kategori:Templat nombor khusus bahasa"}, }}, {"cardinal", { aliases = {"cardinals"}, cats = {"navigasi", "Kategori:Templat nombor khusus bahasa"}, }}, {"ordinal", { aliases = {"ordinals"}, cats = {"navigasi", "Kategori:Templat nombor khusus bahasa"}, }}, {"digit", { aliases = {"digits"}, cats = {"senarai", "Kategori:Templat nombor khusus bahasa"}, }}, -- Entry templates {"entry", { cats = {"kata masukan"}, }}, -- Orthographic conversion templates (e.g. for converting between scripts) {"orthographic conversion", { aliases = {"transliteration", "translit", "xlit", "orthconv", "scriptconv"}, cats = {"pertukaran", "Kategori:Templat pertukaran ortografi"}, }}, -- Orthographic and regional variant templates (for displaying orthographic, script and/or regional variants) {"orthographic variant", { aliases = {"orthvar", "scriptvar"}, -- Currently we categorize orthographic and regional variants the same but we could split them if needed cats = {"navigasi", "Kategori:Templat kelainan ortografi dan setempat"}, }}, {"regional variant", { aliases = {"regvar"}, cats = {"navigasi", "Kategori:Templat kelainan ortografi dan setempat"}, }}, -- Internal link templates {"link", { cats = {"pautan", "Kategori:Templat pautan dalaman khusus bahasa"}, }}, } local category_type_to_category_map = {} for _, category_type_to_category_spec in ipairs(category_type_to_category) do local category_type, props = unpack(category_type_to_category_spec) category_type_to_category_map[category_type] = props if props.aliases then for _, alias in ipairs(props.aliases) do category_type_to_category_map[alias] = props end end end -- Split an argument on comma, but not comma followed by whitespace; split off sort base after a colon. local function split_on_comma_and_split_off_sort_base(val) local cattypes if val:find(",") then -- Don't optimize more than this because there can be commas backslashed, inside of links or followed by -- whitespace that don't cause splitting. cattypes = require(parse_interface_module).split_on_comma(val) else cattypes = {val} end for i, cattype_spec in ipairs(cattypes) do if cattype_spec:find(":") then local cattype, sort_base = cattype_spec:match("^(.-):(.*)$") sort_base = sort_base:gsub("_", " ") cattypes[i] = {name = cattype, sort_base = sort_base} end end return cattypes end local function get_lang_or_script(code) return code == "-" and code or require("Module:languages").getByCode(code, nil, "allow etym") or require("Module:languages").getByCode(code .. "-pro", nil, "allow etym") or require("Module:scripts").getByCode(code) end local function obj_code(obj) if obj == "-" then return obj end return obj:getCode() end local function get_prefixed_obj(after_prefix) return after_prefix:match("^(%a[%a-]*%a):(.+)$") end local function get_suffixed_obj(after_prefix) local rest, objcode = after_prefix:match("^(.+)/(%a[%a-]*%a)$") return objcode, rest end local pseudo_namespace_templates = { {"R:", { category_type = "reference", get_obj_and_rest = get_prefixed_obj, }}, {"RQ:", { category_type = "quotation", get_obj_and_rest = get_prefixed_obj, }}, {"U:", { category_type = "usage", get_obj_and_rest = get_prefixed_obj, }}, {"list:", { category_type = "list", get_obj_and_rest = get_suffixed_obj, }}, {"table:", { category_type = "auto-table", get_obj_and_rest = get_suffixed_obj, }}, } local function infer_lang_or_script_code_and_category_type(name) if name:find(":") then -- only check for pseudo-namespace prefix when a colon is present for _, pseudo_namespace_spec in ipairs(pseudo_namespace_templates) do local prefix, props = unpack(pseudo_namespace_spec) local after_prefix = name:match("^" .. prefix .. "(.+)$") if after_prefix then local objcode, rest = props.get_obj_and_rest(after_prefix) local obj if objcode then obj = get_lang_or_script(objcode) -- may return nil if not obj then rest = after_prefix end else rest = after_prefix end return obj, rest, props.category_type end end end local hyphen_parts = split(name, "%-") for i = #hyphen_parts - 1, 1, -1 do local code = concat(hyphen_parts, "-", 1, i) local obj = get_lang_or_script(code) if obj then local rest = concat(hyphen_parts, "-", i + 1) return obj, rest, nil end end return nil, name, nil end local function process_sortbase_specs(sortbase, specs) for _, spec in ipairs(specs) do local from, to = unpack(spec) sortbase = ugsub(sortbase, "^" .. from .. "$", to) end return sortbase end local function template_name_minus_langcode_to_category_type(name) for _, type_spec in ipairs(detect_category_type_list) do local pattern, intended_type = unpack(type_spec) if ufind(name, "^" .. pattern .. "$") then return intended_type end end return nil end local function compute_categories_for_template(full_template_name, template_name_minus_langcode, category_type, langs_or_scripts) local overriding_sort_base if type(category_type) == "table" then overriding_sort_base = category_type.sort_base category_type = category_type.name end if not category_type_to_category_map[category_type] then error("Unrecognized template category type: " .. category_type) end local props = category_type_to_category_map[category_type] if not props.cats then error("Internal error: No categories given for category type: " .. category_type) end local categories = {} for _, catspec in ipairs(props.cats) do if type(catspec) == "string" then catspec = {name = catspec} end local rawcat = catspec.name:match("^Kategori:(.*)") if rawcat then local sortbase -- User-specified sort base does not apply to raw categories, which have a different sort key format -- than language-specific categories. if not catspec.sort then if langs_or_scripts then local langnames = {} for _, lang_or_sc in ipairs(langs_or_scripts) do insert(langnames, lang_or_sc:getCanonicalName()) -- FIXME: or lang:getFullName()? end sortbase = concat(langnames, ",") else sortbase = full_template_name end elseif is_callable(catspec.sort) then sortbase = catspec.sort(full_template_name, langs_or_scripts) else sortbase = process_sortbase_specs(full_template_name, catspec.sort) end insert(categories, {cat = rawcat, lang = und_lang, sort_base = sortbase}) elseif langs_or_scripts then for _, lang_or_sc in ipairs(langs_or_scripts) do local sortbase if overriding_sort_base then sortbase = overriding_sort_base elseif not catspec.sort then sortbase = template_name_minus_langcode elseif is_callable(catspec.sort) then sortbase = catspec.sort(template_name_minus_langcode, lang_or_sc) else sortbase = process_sortbase_specs(template_name_minus_langcode, catspec.sort) end if lang_or_sc:hasType("script") then insert(categories, { cat = ("Templat %s"):format(lang_or_sc:getCategoryName()), lang = und_lang, sc = lang_or_sc, sort_base = sortbase, }) else local cat local full_label = catspec.name:match("^label:(.*)$") local lang_name = catspec.allow_etym and lang_or_sc:getCanonicalName() or lang_or_sc:getFullName() if full_label then cat = ("%s bahasa %s"):format(full_label, lang_name) else cat = ("Templat %s bahasa %s"):format(catspec.name, lang_name) end insert(categories, { cat = cat, lang = lang_or_sc:getFull(), sort_base = sortbase, }) end end end end if not categories[1] then error(("No categories generated for template [[Template:%s]] with category type '%s'"):format( full_template_name, category_type)) end return categories end --[==[ Main entry point. ]==] function export.categorize(frame) local params = { [1] = {}, -- comma-separated list of category types; by default, inferred from template name lang = {}, -- comma-separated list of languages; by default, inferred from template name ["pagename"] = {}, -- for testing ["json"] = {type = "boolean"}, -- for testing } local parent_args = frame:getParent().args args = require("Module:parameters").process(parent_args, params) local category_specs = {} local function insert_cat(cat, sort_key) for _, existing_cat in ipairs(category_specs) do if existing_cat.cat == cat then return end end insert(category_specs, {cat = cat, sort_key = sort_key}) end local pagename = args.pagename if not pagename then title = mw.title.getCurrentTitle() pagename = title.fullText end if pagename:find("/doc$") or pagename:find("/doc/") then return "" end if pagename:find("^Templat:Pengguna:") then insert_cat("Templat kotak pasir pengguna", (pagename:gsub("^Templat:Pengguna:", ""))) elseif pagename:find("^Pengguna:") then insert_cat("Templat kotak pasir pengguna", (pagename:gsub("^Pengguna:", ""))) else if not pagename:find("^Templat:") then error(("This template should only be used in the Template namespace, not on page '%s'"):format(pagename)) end local full_template_name = pagename:gsub("^Templat:", "") local rootpage = full_template_name:gsub("/.*", "") if full_template_name:find("/sandbox") then insert_cat("Templat kotak pasir", full_template_name) elseif full_template_name:find("^sandbox/") then insert_cat("Templat kotak pasir", full_template_name:gsub("^sandbox/", "")) else local template_objs if args.lang == "-" then template_objs = false elseif args.lang then template_objs = {} for _, code in ipairs(split(args.lang, ",")) do -- We need to have an indicator of families because we allow bare family codes to stand for proto-languages. if code:find("^fam:") then code = code:gsub("^fam:", "") local family = require("Module:families").getByCode(code) or error(("Unrecognized family code '%s' in [[Module:template cat]]"):format(code)) local descendants = family:getDescendantCodes() for _, desc in ipairs(descendants) do local obj = get_lang_or_script(desc) if obj then -- make sure we skip families without proto-languages insert(template_objs, obj) end end else local obj = get_lang_or_script(code) if not obj then error(("Unrecognized language or script code '%s'"):format(code)) end insert(template_objs, obj) end end end local cattypes if args[1] then cattypes = split_on_comma_and_split_off_sort_base(args[1]) end local inferred_obj, inferred_rest, inferred_cattype = infer_lang_or_script_code_and_category_type(rootpage) if template_objs == nil or not cattypes then if template_objs == nil then if not inferred_obj then if not inferred_cattype then error(("Unable to infer language or script from template root page '%s' for template '%s'; specify lang/script and type explicitly"):format( rootpage, pagename)) else error(("Unable to infer language or script from template root page '%s' for template '%s', inferred category type '%s'; specify lang/script explicitly"):format( rootpage, pagename, inferred_cattype)) end else template_objs = {inferred_obj} end end if not cattypes then inferred_cattype = inferred_cattype or template_name_minus_langcode_to_category_type(inferred_rest) if not inferred_cattype then error(("Unable to infer template category type from template remainder (after stripping langcode) '%s' for template '%s'; specify type explicitly"):format( inferred_rest, pagename)) end cattypes = {inferred_cattype} end end for _, cattype in ipairs(cattypes) do local cats = compute_categories_for_template(full_template_name, inferred_rest, cattype, template_objs) for _, cat in ipairs(cats) do insert(category_specs, cat) end end end end -- We are returning categories for templates or user-space pages, so we need to force the output. local retval = format_categories(category_specs, nil, nil, nil, "force_output") if args.json then return require("Module:JSON").toJSON { category_specs = category_specs, retval = mw.text.nowiki(retval), } else return retval end end --[==[Table used in the documentation to {{tl|template cat}}.]==] function export.pattern_to_category_type_table() local parts = {} local function ins(text) insert(parts, text) end ins('{|class="wikitable"') ins("! Corak !! Jenis kategori terinferensi") for _, detect_spec in ipairs(detect_category_type_list) do local pattern, category_type = unpack(detect_spec) ins("|-") ins(("| <code>%s</code> || <code>%s</code>"):format(pattern, category_type)) end ins("|}") return concat(parts, "\n") end --[==[Table used in the documentation to {{tl|template cat}}.]==] function export.category_type_to_category_table() local parts = {} local function ins(text) insert(parts, text) end local category_types = {} local category_type_to_aliases = {} for _, category_type_to_category_spec in ipairs(category_type_to_category) do local category_type, props = unpack(category_type_to_category_spec) insert(category_types, category_type) category_type_to_aliases[category_type] = {} if props.aliases then for _, alias in ipairs(props.aliases) do insert(category_type_to_aliases[category_type], alias) end table.sort(category_type_to_aliases[category_type]) end end table.sort(category_types) local function get_category_type_categories(category_type) local cats = {} for _, catspec in ipairs(category_type_to_category_map[category_type].cats) do if type(catspec) == "string" then catspec = {name = catspec} end local cat = catspec.name if cat:find("^Kategori:") then insert(cats, ("<code>%s</code>"):format((cat:gsub("^Kategori:", "")))) elseif cat:find("^label:") then insert(cats, ("<code><var>LANG</var> %s</code>"):format((cat:gsub("^label:", "")))) else insert(cats, ("<code><var>LANG</var> %s templates</code>"):format(cat)) end end return concat(cats, ", ") end ins('{|class="wikitable"') ins("! Jenis kategori !! Jenis kategori berkanun !! Kategori") for _, category_type in ipairs(category_types) do ins("|-") ins(("| <code>'''%s'''</code> || ''(same)'' || <code>%s</code>"):format( category_type, get_category_type_categories(category_type))) for _, alias in ipairs(category_type_to_aliases[category_type]) do ins("|-") ins(("| <code>%s</code> || <code>'''%s'''</code> || <code>%s</code>"):format( alias, category_type, get_category_type_categories(category_type))) end end ins("|}") return concat(parts, "\n") end return export p542onnlv8577u86hh2r3zbjwzj71lk Wikikamus:dtp/moningkukurak 4 119950 344634 2026-06-07T15:37:58Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata kerja=== {{inti|{{safesubst:ROOTPAGENAME}}|kata kerja}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh bunyi ayam betina yang baru mengeluarkan telur/ bertelur' 344634 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata kerja=== {{inti|dtp|kata kerja}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh bunyi ayam betina yang baru mengeluarkan telur/ bertelur lx5h2rveelwohpl6wzdzeqkz00k1ktr Wikikamus:dtp/miyak-iyak 4 119951 344635 2026-06-07T15:39:50Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata kerja=== {{inti|{{safesubst:ROOTPAGENAME}}|kata kerja}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh anak ayam bercicik /Bunyi anak ayam' 344635 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata kerja=== {{inti|dtp|kata kerja}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh anak ayam bercicik /Bunyi anak ayam 8f08yzaf2ngj8m6gm6n1ju1dzfxvr5c Wikikamus:dtp/miwos-kiwos 4 119952 344636 2026-06-07T15:41:09Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata kerja=== {{inti|{{safesubst:ROOTPAGENAME}}|kata kerja}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh ekor yang bergoyang-goyang' 344636 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata kerja=== {{inti|dtp|kata kerja}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh ekor yang bergoyang-goyang 412qz9u53xk7z4bmvkj9za8pzlln2vf Wikikamus:dtp/miragang-ragang 4 119953 344637 2026-06-07T15:43:11Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata sifat=== {{inti|{{safesubst:ROOTPAGENAME}}|kata sifat}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh pipi yang menjadi merah kerana rasa malu' 344637 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata sifat=== {{inti|dtp|kata sifat}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh pipi yang menjadi merah kerana rasa malu jqma7hq8tpffdgknpwumjgoofqu6oz3 Wikikamus:dtp/soroiso-iso 4 119954 344638 2026-06-07T15:45:26Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata sifat=== {{inti|{{safesubst:ROOTPAGENAME}}|kata sifat}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh satu persatu' 344638 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata sifat=== {{inti|dtp|kata sifat}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh satu persatu earynfb8ofyqhbelyhwhb3lwqq5251c Wikikamus:dtp/monorob 4 119955 344639 2026-06-07T15:46:26Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata kerja=== {{inti|{{safesubst:ROOTPAGENAME}}|kata kerja}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh membakar' 344639 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata kerja=== {{inti|dtp|kata kerja}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh membakar sjpcq1dastzw1lslfxjhhvg2ifb3ulb Wikikamus:dtp/randawi 4 119956 344640 2026-06-07T15:48:54Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata nama=== {{inti|{{safesubst:ROOTPAGENAME}}|kata nama}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh jari manis' 344640 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata nama=== {{inti|dtp|kata nama}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh jari manis 6g6zicx4nu5523m4xcaif7bjzybp0hb Wikikamus:dtp/sobul 4 119957 344641 2026-06-07T15:51:35Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Frasa=== {{inti|{{safesubst:ROOTPAGENAME}}|frasa}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh tunas/ cembahan' 344641 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Frasa=== {{inti|dtp|frasa}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh tunas/ cembahan 9ccnj51bec6ao5hhga87qwppso4i4fg Wikikamus:dtp/arahung 4 119958 344642 2026-06-07T15:52:31Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata sifat=== {{inti|{{safesubst:ROOTPAGENAME}}|kata sifat}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh terpengaruh' 344642 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata sifat=== {{inti|dtp|kata sifat}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh terpengaruh hhgduywie6v2zsmy1i4s31h6fu8728l Wikikamus:dtp/rogon/soitan 4 119959 344643 2026-06-07T15:53:49Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata nama=== {{inti|{{safesubst:ROOTPAGENAME}}|kata nama}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh syaitan/iblis' 344643 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata nama=== {{inti|dtp|kata nama}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh syaitan/iblis 4hjtxswkswk7xf3xy3dvtyymdhwzms5 Wikikamus:dtp/ulit/ulito 4 119960 344644 2026-06-07T15:55:21Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata nama=== {{inti|{{safesubst:ROOTPAGENAME}}|kata nama}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh ulang/diulang' 344644 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata nama=== {{inti|dtp|kata nama}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh ulang/diulang 2bil04h4tf9dqvzo9e8d2ou28i9tuym Wikikamus:dtp/minggarang 4 119961 344645 2026-06-07T15:56:17Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata kerja=== {{inti|{{safesubst:ROOTPAGENAME}}|kata kerja}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh berteriak/meronta' 344645 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata kerja=== {{inti|dtp|kata kerja}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh berteriak/meronta r2p8zf316cul3u4zo2ti5gsu4lmvd8k Wikikamus:dtp/kinongoho 4 119962 344646 2026-06-07T15:57:57Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Frasa=== {{inti|{{safesubst:ROOTPAGENAME}}|frasa}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh dengarkan' 344646 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Frasa=== {{inti|dtp|frasa}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh dengarkan im4332invv8nwxx5bn9sbhgdnadbt4t Wikikamus:dtp/korohian 4 119963 344647 2026-06-07T15:58:45Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Frasa=== {{inti|{{safesubst:ROOTPAGENAME}}|frasa}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh disukai' 344647 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Frasa=== {{inti|dtp|frasa}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh disukai nxw6mcfceafhc8c3djmuk4vbw74jy5u Wikikamus:dtp/pomitanan 4 119964 344648 2026-06-07T16:00:10Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Kata kerja=== {{inti|{{safesubst:ROOTPAGENAME}}|kata kerja}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh ilustrasi/ contoh' 344648 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Kata kerja=== {{inti|dtp|kata kerja}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh ilustrasi/ contoh 8mlywoaebr3zglvuea729pvfko2cexw Wikikamus:dtp/kamanangan 4 119965 344649 2026-06-07T16:01:23Z Methia26 10706 Mencipta laman baru dengan kandungan '==Bahasa {{bahasa|{{safesubst:ROOTPAGENAME}}}}== ===Frasa=== {{inti|{{safesubst:ROOTPAGENAME}}|frasa}} # {{label|1={{safesubst:ROOTPAGENAME}}|2=dialek|3=Bundu,Liwan}} contoh Kemenangan/ kejayaan' 344649 wikitext text/x-wiki ==Bahasa {{bahasa|dtp}}== ===Frasa=== {{inti|dtp|frasa}} # {{label|1=dtp|2=dialek|3=Bundu,Liwan}} contoh Kemenangan/ kejayaan s66cgu8s9v7mggdnrmbrwzjuayf0d54 Templat:pagename 10 119966 344655 2026-06-08T09:06:11Z Hakimi97 2668 Mencipta laman baru dengan kandungan '<includeonly>{{safesubst:<noinclude/>#invoke:pages/templates|pagename_t}}</includeonly><noinclude><!-- -->{{documentation}}</noinclude>' 344655 wikitext text/x-wiki <includeonly>{{safesubst:<noinclude/>#invoke:pages/templates|pagename_t}}</includeonly><noinclude><!-- -->{{documentation}}</noinclude> 5eyxwd521bez42cgt9zhe8dipmghpbi Templat:R:Nihon Kokugo Daijiten 2 10 119967 344658 2026-06-08T09:08:21Z Hakimi97 2668 Hakimi97 telah memindahkan laman [[Templat:R:Nihon Kokugo Daijiten 2]] ke [[Templat:R:Nihon Kokugo Daijiten Concise]] 344658 wikitext text/x-wiki #LENCONG [[Templat:R:Nihon Kokugo Daijiten Concise]] fmxi8ykbyfrvlkrydk3y878zmdq353h