ဝိက်ရှေန်နရဳ mnwwiktionary https://mnw.wiktionary.org/wiki/%E1%80%9D%E1%80%AD%E1%80%80%E1%80%BA%E1%80%9B%E1%80%BE%E1%80%B1%E1%80%94%E1%80%BA%E1%80%94%E1%80%9B%E1%80%B3:%E1%80%99%E1%80%AF%E1%80%80%E1%80%BA%E1%80%9C%E1%80%AD%E1%80%80%E1%80%BA%E1%80%90%E1%80%99%E1%80%BA MediaWiki 1.47.0-wmf.11 case-sensitive မဳဒဳယာ တၟေင် ဓရီုကျာ ညးလွပ် ညးလွပ် ဓရီုကျာ ဝိက်ရှေန်နရဳ ဝိက်ရှေန်နရဳ ဓရီုကျာ ဝှာင် ဝှာင် ဓရီုကျာ မဳဒဳယာဝဳကဳ မဳဒဳယာဝဳကဳ ဓရီုကျာ ထာမ်ပလိက် ထာမ်ပလိက် ဓရီုကျာ ရီု ရီု ဓရီုကျာ ကဏ္ဍ ကဏ္ဍ ဓရီုကျာ အဆက်လက္ကရဴ အဆက်လက္ကရဴ ဓရီုကျာ ကာရန် ကာရန် ဓရီုကျာ အဘိဓာန် အဘိဓာန် ဓရီုကျာ ဗီုပြၚ်သိုၚ်တၟိ ဗီုပြၚ်သိုၚ်တၟိ ဓရီုကျာ TimedText TimedText talk မဝ်ဂျူ မဝ်ဂျူ ဓရီုကျာ Event Event talk မဝ်ဂျူ:documentation 828 639 399030 398388 2026-07-17T13:43:14Z 咽頭べさ 33 399030 Scribunto text/plain local export = {} local array_module = "Module:array" local debug_track_module = "Module:debug/track" local frame_module = "Module:frame" local fun_is_callable_module = "Module:fun/isCallable" local languages_module = "Module:languages" local links_module = "Module:links" local load_module = "Module:load" local module_categorization_module = "Module:module categorization" local number_list_show_module = "Module:number list/show" local chemical_element_list_show_module = "Module:chemical element list/show" local pages_module = "Module:pages" local parameters_module = "Module:parameters" local scripts_module = "Module:scripts" local string_endswith_module = "Module:string/endswith" local string_gline_module = "Module:string/gline" local string_insert_module = "Module:string/insert" local string_startswith_module = "Module:string/startswith" local string_utilities_module = "Module:string utilities" local template_parser_module = "Module:template parser" local title_exists_module = "Module:title/exists" local title_new_title_module = "Module:title/newTitle" local concat = table.concat local error = error local full_url = mw.uri.fullUrl local get_current_title = mw.title.getCurrentTitle local insert = table.insert local ipairs = ipairs local list_to_text = mw.text.listToText local new_message = mw.message.new local pcall = pcall local require = require local tonumber = tonumber local tostring = tostring local type = type local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function Array(...) Array = require(array_module) return Array(...) end local function categorize_module(...) categorize_module = require(module_categorization_module).categorize return categorize_module(...) end local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function endswith(...) endswith = require(string_endswith_module) return endswith(...) end local function expand_template(...) expand_template = require(frame_module).expandTemplate return expand_template(...) end local function find_templates(...) find_templates = require(template_parser_module).find_templates return find_templates(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_lang(...) get_lang = require(languages_module).getByCode return get_lang(...) end local function get_pagetype(...) get_pagetype = require(pages_module).get_pagetype return get_pagetype(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function gline(...) gline = require(string_gline_module) return gline(...) end local function is_callable(...) is_callable = require(fun_is_callable_module) return is_callable(...) end local function is_documentation(...) is_documentation = require(pages_module).is_documentation return is_documentation(...) end local function is_sandbox(...) is_sandbox = require(pages_module).is_sandbox return is_sandbox(...) end local function new_title(...) new_title = require(title_new_title_module) return new_title(...) end local function number_list_show_table(...) number_list_show_table = require(number_list_show_module).table return number_list_show_table(...) end local function chemical_element_list_show_table(...) chemical_element_list_show_table = require(chemical_element_list_show_module).table return chemical_element_list_show_table(...) end local function preprocess(...) preprocess = require(frame_module).preprocess return preprocess(...) end local function process_params(...) process_params = require(parameters_module).process return process_params(...) end local function safe_load_data(...) safe_load_data = require(load_module).safe_load_data return safe_load_data(...) end local function split(...) split = require(string_utilities_module).split return split(...) end local function startswith(...) startswith = require(string_startswith_module) return startswith(...) end local function string_insert(...) string_insert = require(string_insert_module) return string_insert(...) end local function title_exists(...) title_exists = require(title_exists_module) return title_exists(...) end local function ugsub(...) ugsub = require(string_utilities_module).gsub return ugsub(...) end local function umatch(...) umatch = require(string_utilities_module).match return umatch(...) end local skins = { ["common"] = "", ["vector"] = "Vector", ["monobook"] = "Monobook", ["cologneblue"] = "Cologne Blue", ["modern"] = "Modern", } local function track(page) debug_track("documentation/" .. page) return true end local function compare_pages(page1, page2, text) return "[" .. tostring( full_url("Special:ComparePages", { page1 = page1, page2 = page2 })) .. " " .. text .. "]" end -- Avoid transcluding [[Module:languages/cache]] everywhere. local lang_cache = setmetatable({}, { __index = function(self, k) return require("မဝ်ဂျူ:languages/cache")[k] end }) local function zh_link(word) return full_link { lang = lang_cache.zh, term = word } end local function make_languages_data_documentation(title, cats, division) local doc_template, module_cat if endswith(division, "/extra") then division = division:sub(1, -7) doc_template = "language extradata documentation" module_cat = "စရၚ်မဝ်ဂျူအရေဝ်ဘာသာရပ်စပ်အပဵုဂမၠိုၚ်" else doc_template = "language data documentation" module_cat = "မဝ်ဂျူစရၚ်အရေဝ်ဘာသာဂမၠိုၚ်" end local sort_key if division == "exceptional" then sort_key = "x" else sort_key = division:gsub("/", "") end cats:insert(module_cat .. "|" .. sort_key) return { title = doc_template } end local function make_Unicode_data_documentation(title, cats) local subpage, first_three_of_code_point = title.fullText:match("^မဝ်ဂျူ:Unicode data/([^/]+)/(%x%x%x)$") if subpage == "names" or subpage == "images" or subpage == "emoji images" then local low, high = tonumber(first_three_of_code_point .. "000", 16), tonumber(first_three_of_code_point .. "FFF", 16) local text, text_type if subpage == "names" then text_type = "titles of images" elseif subpage == "images" then text_type = "titles of images" elseif subpage == "emoji images" then text_type = "emoji-style images" end text = string.format( "This data module contains the " .. text_type .. " of " .. "[[Appendix:Unicode|Unicode]] code points within the range U+%04X to U+%04X.", low, high) if subpage == "images" and safe_load_data("Module:Unicode data/emoji images/" .. first_three_of_code_point) then text = text .. " This list includes the text variants of emojis. For the list of emoji variants of those characters, see [[Module:Unicode data/emoji images/" .. first_three_of_code_point .. "]]." elseif subpage == "emoji images" then text = text .. " For text-style images, see [[Module:Unicode data/images/" .. first_three_of_code_point .. "]]." end return text end end local function insert_lang_data_module_cats(cats, langcode, overall_data_module_cat) local lang = lang_cache[langcode] if lang then local langname if lang._fullCode then langname = lang_cache[lang._fullCode]:getCanonicalName() else langname = lang:getCanonicalName() end cats:insert(overall_data_module_cat .. "|" .. langname) cats:insert("မဝ်ဂျူ" .. langname .. "ဂမၠိုၚ်") cats:insert("စရၚ်မဝ်ဂျူ" .. langname .. "ဂမၠိုၚ်") return lang, langname end end --[=[ This provides categories and documentation for various data modules, so that [[Category:Uncategorized modules]] isn't unnecessarily cluttered. It is a list of tables, each of which have the following possible fields: `regex` (required): A Lua pattern to match the module's title. If it matches, the data in this entry will be used. Any captures in the pattern can by referenced in the `cat` field using %1 for the first capture, %2 for the second, etc. (often used for creating the sortkey for the category). In addition, the captures are passed to the `process` function as the third and subsequent parameters. `process` (optional): This may be a function or a string. If it is a function, it is called as follows: `process(TITLE, CATS, CAPTURE1, CAPTURE2, ...)` where: * TITLE is a title object describing the module's title; see [https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Title_objects]. * CATS is an array object (see [[Module:array]]) of categories that the module will be added to. * CAPTURE1, CAPTURE2, ... contain any captures in the `regex` field. The return value of `process` should either be a string (which will be used as the module's documentation), or a table specifying the name of a template to expand to get the documentation, along with the arguments to that template. In the latter format, the template name (bare, without the "Template:" prefix) should be in the `title` field, and any arguments should be in `args; in this case, the template name will be listed above the generated documentation as the source of the documentation, along with an edit button to edit the template's contents. If, however, the return value of the `process` function is a string, any template invocations will be expanded using frame:preprocess(), and [[Module:documentation]] will be listed as the source of the documentation. If `process` itself is a string rather than a function, it should name a submodule under [[Module:documentation/functions/]] which returns a function, of the same type as described above. This submodule will be specified as the source of the documentation (unless it returns a table naming a template to expand to get the documentation, as described above). If `process` is omitted entirely, the module will have no documentation. `cat` (optional): A string naming the category into which the module should be placed, or a list of such strings. Captures specified in `regex` may be referenced in this string using %1 for the first capture, %2 for the second, etc. It is also possible to add categories in the `process` function by inserting them into the passed-in CATS array (the second parameter). ]=] local module_regex = { { regex = "^မဝ်ဂျူ:languages/data/(3/%l/extra)$", process = make_languages_data_documentation, }, { regex = "^မဝ်ဂျူ:languages/data/(3/%l)$", process = make_languages_data_documentation, }, { regex = "^မဝ်ဂျူ:languages/data/(2/extra)$", process = make_languages_data_documentation, }, { regex = "^မဝ်ဂျူ:languages/data/(2)$", process = make_languages_data_documentation, }, { regex = "^မဝ်ဂျူ:languages/data/(exceptional/extra)$", process = make_languages_data_documentation, }, { regex = "^မဝ်ဂျူ:languages/data/(exceptional)$", process = make_languages_data_documentation, }, { regex = "^မဝ်ဂျူ:languages/.+$", cat = "မဝ်ဂျူအရေဝ်ဘာသာကဵုအက္ခရ်ဂမၠိုၚ်", }, { regex = "^မဝ်ဂျူ:scripts/.+$", cat = "မဝ်ဂျူအရေဝ်ဘာသာကဵုအက္ခရ်ဂမၠိုၚ်", }, { regex = "^မဝ်ဂျူ:data tables/data..?.?.?$", cat = "နိဿဲပါ်ခြာမဝ်ဂျူစရၚ်အၚ်ဂမၠိုၚ်", }, { regex = "^မဝ်ဂျူ:zh/data/dial%-pron/.+$", cat = "စရၚ်မဝ်ဂျူဆေၚ်စပ်ကဵုပ္တိတ်ရမျာၚ်အရေဝ်တၞဟ်ခြာဘာသာကြုက်ဂမၠိုၚ်", process = "zh dial or syn", }, { regex = "^မဝ်ဂျူ:zh/data/dial%-syn/.+$", cat = "စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာအဓိပ္ပာဲတုပ်နကဵုဘာသာကြုက်ဂမၠိုၚ်", process = "zh dial or syn", }, { regex = "^မဝ်ဂျူ:zh/data/glyph%-data/.+$", cat = "စရၚ်မဝ်ဂျူဗျဉ်ကြုက်ဗီုပြၚ်မဆေၚ်စပ်ကဵုဝၚ်ဂမၠိုၚ်", process = function(title, cats) local character = title.fullText:match("^မဝ်ဂျူ:zh/data/glyph%-data/(.+)") if character then return ("မဝ်ဂျူတဏအ်မထိၚ်ဒဝ်လဝ်စရၚ်လ္တူမဆေၚ်စပ်ကဵုဝၚ်ဗီုပြၚ်ဗျဉ်ကြုက်နကဵုဝေါဟာ %s။") :format(zh_link(character)) end end, }, { regex = "^မဝ်ဂျူ:zh/data/ltc%-pron/(.+)$", cat = "စရၚ်ပတိတ်ရမျာၚ်မဝ်ဂျူကြုက်လဒေါဝ်ဂမၠိုၚ်|%1", process = "zh data", }, { regex = "^မဝ်ဂျူ:zh/data/och%-pron%-BS/(.+)$", cat = "မဝ်ဂျူဒေတာဗွဟ်ရမ္သာၚ်(Baxter-Sagart)ကြုက်တြေံဂမၠိုၚ်|%1", process = "zh data", }, { regex = "^မဝ်ဂျူ:zh/data/och%-pron%-ZS/(.+)$", cat = "စရၚ်မဝ်ဂျူကြုက်တြေံဗီုပတိတ်ရမျာၚ် (Zhengzhang) ဂမၠိုၚ်|%1", process = "zh data", }, { -- capture rest of zh/data submodules regex = "^မဝ်ဂျူ:zh/data/(.+)$", cat = "စရၚ်မဝ်ဂျူကြုက်ဂမၠိုၚ်|%1", }, { regex = "^မဝ်ဂျူ:mul/guoxue%-data/cjk%-?(.*)$", process = "guoxue-data", }, { regex = "^မဝ်ဂျူ:Unicode data/(.+)$", cat = "မဝ်ဂျူစရၚ်ယူနဳကုတ်ဂမၠိုၚ်|%1", process = make_Unicode_data_documentation, }, { regex = "^မဝ်ဂျူ:number list/data/(.+)$", process = function(title, cats, lang_code) local lang = insert_lang_data_module_cats(cats, lang_code, "မဝ်ဂျူစရၚ်ဂၞန်ဂမၠိုၚ်") if lang then return ("This module contains data on various types of numbers in %s.\n%s") :format(lang:makeCategoryLink(), number_list_show_table() or "") end end, }, { regex = "^မဝ်ဂျူ:chemical element list/data/(.+)$", process = function(title, cats, lang_code) local lang = insert_lang_data_module_cats(cats, lang_code, "မဝ်ဂျူဒေတာလက္ချဏ်ဝိသေသဆေၚ်စပ်ကဵုကွတ်ဗေဒဓါတုဂမၠိုၚ်") if lang then return ("This module contains data on chemical elements in %s.\n%s") :format(lang:makeCategoryLink(), chemical_element_list_show_table() or "") end end, }, { regex = "^မဝ်ဂျူ:accel/(.+)$", process = function(title, cats) local lang_code = title.subpageText local lang = lang_cache[lang_code] if lang then cats:insert("မဝ်ဂျူ" .. lang:getCanonicalName() .. "ဂမၠိုၚ်|accel") cats:insert(("မဝ်ဂျူဒကုတ်ဍောတ်အေက်သာယ်ဂမၠိုၚ်|%s"):format(lang:getCanonicalName())) return ("This module contains new entry creation rules for %s; see [[WT:ACCEL]] for an overview, and [[Module:accel]] for information on creating new rules.") :format(lang:makeCategoryLink()) end end, }, { regex = "^မဝ်ဂျူ:inc%-ash/dial/data/(.+)$", cat = "မဝ်ဂျူအခါန်ကာန် ပရာကရေတ်ဂမၠိုၚ်|%1", process = function(title, cats) local word = title.fullText:match("^မဝ်ဂျူ:inc%-ash/dial/data/(.+)$") if word then local lang = lang_cache["inc-ash"] return ("This module contains data on the pronunciation of %s in dialects of %s.") :format(full_link({ term = word, lang = lang }, "term"), lang:makeCategoryLink()) end end, }, { regex = "^.+%-translit$", process = "translit", }, { regex = "^မဝ်ဂျူ:form of/lang%-data/(.+)$", process = function(title, cats, lang_code) local lang, langname = insert_lang_data_module_cats(cats, lang_code, "စရၚ်မဝ်ဂျူကွက်ဒက်စုတ်သမ္တီအရေဝ်ဘာသာချိုတ်ချိုတ်ပၠိုတ်ပၠိုတ်ဂမၠိုၚ်") if lang then -- FIXME, display more info. return "This module contains language-specific form-of data (tags, shortcuts, base lemma params. etc.) for " .. langname .. "." end end }, { regex = "^မဝ်ဂျူ:labels/data/lang/(.+)$", process = function(title, cats, lang_code) local lang = insert_lang_data_module_cats(cats, lang_code, "စရၚ်မဝ်ဂျူကွက်ဒက်စုတ်သမ္တီအရေဝ်ဘာသာချိုတ်ချိုတ်ပၠိုတ်ပၠိုတ်ဂမၠိုၚ်") if lang then return { title = "label language-specific data documentation", args = { [1] = lang_code }, } end end }, { regex = "^မဝ်ဂျူ:category tree/lang/(.+)$", process = function(title, cats, lang_code) local lang, langname = insert_lang_data_module_cats(cats, lang_code, "တၞံမဝ်ဂျူဂၠေံဂၠေံဂမၠိုၚ်/ကဏ္ဍဒကုတ်တံလိက်") if lang then return "This module handles generating the descriptions and categorization for " .. langname .. " category pages " .. "of the format \"" .. langname .. " LABEL\" where LABEL can be any text. Examples are " .. "[[:Category:Bulgarian conjugation 2.1 verbs]] and [[:Category:Russian velar-stem neuter-form nouns]]. " .. "This module is part of the category tree system, which is a general framework for generating the " .. "descriptions and categorization of category pages.\n\n" .. "For more information, see [[Module:category tree/lang/documentation]].\n\n" .. "'''NOTE:''' If you add a new language-specific module, you must add the language code to the " .. "list at the top of [[Module:category tree/lang]] in order for the module to be recognized." end end }, { regex = "^မဝ်ဂျူ:category tree/topic/(.+)$", process = function(title, cats, submodule) cats:insert("ကဏ္ဍတၞံစရၚ်မဝ်ဂျူဂမၠိုၚ်/ပရောပရာသဳကၠဳ| ") return { title = "topic cat data submodule documentation" } end }, { regex = "^မဝ်ဂျူ:category tree/(.+)$", process = function(title, cats, submodule) cats:insert("တၞံကဏ္ဍစရၚ်မဝ်ဂျူဂမၠိုၚ်| ") return { title = "category tree data submodule documentation" } end }, { regex = "^မဝ်ဂျူ:ja/data/(.+)$", cat = "စရၚ်မဝ်ဂျူဂျပါန်ဂမၠိုၚ်|%1", }, { regex = "^မဝ်ဂျူ:fi%-dialects/data/feature/Kettunen1940 ([0-9]+)$", cat = "စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာနကဵုဘာသာဖေန်လာန်ဂမၠိုၚ်|%1", process = function(title, cats, shard) return "This module contains shard " .. shard .. " of the online version of Lauri Kettunen's 1940 work " .. "''Suomen murteet III A. Murrekartasto'' (\"Finnish dialects III A: Dialect atlas\"). " .. "It was imported and converted from urn:nbn:fi:csc-kata20151130145346403821, published by the " .. "''Kotimaisten kielten keskus'' under the CC BY 4.0 license." end }, { regex = "^မဝ်ဂျူ:fi%-dialects/data/feature/(.+)", cat = "စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာနကဵုဘာသာဖေန်လာန်ဂမၠိုၚ်|%1", }, { regex = "^မဝ်ဂျူ:fi%-dialects/data/word/(.+)", cat = "စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာနကဵုဘာသာဖေန်လာန်ဂမၠိုၚ်|%1", }, { regex = "^မဝ်ဂျူ:Swadesh/data/([%l-]+)$", process = function(title, cats, lang_code) local lang, langname = insert_lang_data_module_cats(cats, lang_code, "မဝ်ဂျူသွဳဒေါတ်ဂမၠိုၚ်") if lang then return "မဝ်ဂျူတဏအ်ဝွံ မဆက်ဆောံဆေၚ်စပ်ကဵုစရၚ်သွဳဒေါတ်နကဵုဝေါဟာတံမူလအပ္ဍဲဘာသာ" .. langname .. "ဂမၠိုၚ်။" end end }, { regex = "^မဝ်ဂျူ:Swadesh/data/([%l-]+)/([^/]*)$", process = function(title, cats, lang_code, variety) local lang, langname = insert_lang_data_module_cats(cats, lang_code, "မဝ်ဂျူသွဳဒေါတ်ဂမၠိုၚ်") if lang then local prefix = "မဝ်ဂျူတဏအ်ဝွံ မဆက်ဆောံဆေၚ်စပ်ကဵုစရၚ်သွဳဒေါတ်နကဵုဝေါဟာတံမူလအပ္ဍဲ " local etym_lang = get_lang(variety, nil, "allow etym") if etym_lang then return ("%s %s သီုကဵုအရာနာနာသာ်နူ %sဂမၠိုၚ်။"):format(prefix, etym_lang:getCanonicalName(), langname) end local script = get_script(variety) if script then return ("သဵုကဵုအက္ခရ် %s %s %s ဂမၠိုၚ်။"):format(prefix, langname, script:getCanonicalName()) end return ("%s %s သီုကဵုအရာနာနာသာ်နူ %sဂမၠိုၚ်။"):format(prefix, variety, langname) end end }, { regex = "^မဝ်ဂျူ:typing%-aids", process = function(title, cats) local data_suffix = title.fullText:match("^မဝ်ဂျူ:typing%-aids/data/(.+)$") local sortkey if data_suffix then if data_suffix:find "^[%l-]+$" then local lang = get_lang(data_suffix) if lang then sortkey = lang:getCanonicalName() cats:insert("စရၚ်မဝ်ဂျူ" .. sortkey .. "ဂမၠိုၚ်") end elseif data_suffix:find "^%u%l%l%l$" then local script = get_script(data_suffix) if script then sortkey = script:getCanonicalName() cats:insert(script:getCategoryName()) end end cats:insert("စရၚ်မဝ်ဂျူမစုတ်ပၠောပ်ဗျဉ်ဂမၠိုၚ်|" .. (sortkey or data_suffix)) end end, }, { regex = "^မဝ်ဂျူ:R:([%l-]+):(.+)$", process = function(title, cats, lang_code, refname) local lang = lang_cache[lang_code] if lang then cats:insert("မဝ်ဂျူ" .. lang:getCanonicalName() .. "ဂမၠိုၚ်|" .. refname) cats:insert(("မဝ်ဂျူနိဿဲဂမၠိုၚ်|%s"):format(lang:getCanonicalName())) return "မဝ်ဂျူတဏအ်ဝွံ မရပ်စပ်ဆေၚ်စပ်ကဵုထာမ်ပလိက်နိဿဲနကဵု {{temp|R:" .. lang_code .. ":" .. refname .. "}}ဂမၠိုၚ်။" end end, }, { regex = "^မဝ်ဂျူ:Quotations/([%l-]+)/?(.*)", process = "Quotation", }, { regex = "^မဝ်ဂျူ:affix/lang%-data/([%l-]+)", process = "affix lang-data", }, { regex = "^မဝ်ဂျူ:dialect synonyms/([%l-]+)$", process = function(title, cats, lang_code) local lang = lang_cache[lang_code] if lang then local langname = lang:getCanonicalName() cats:insert("စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာအဓိပ္ပာဲတုပ်ဂမၠိုၚ်|" .. langname) cats:insert("စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာအဓိပ္ပာဲတုပ်နကဵုဘာသာ" .. langname .. "ဂမၠိုၚ်| ") return "မဝ်ဂျူတဏအ်ဝွံ မဆက်ဆောံစရၚ်လ္တူအရာနာနာသာ်ဗွဲတၟေၚ်ဆေၚ်စပ်ကဵုဘာသာ" .. langname .. "၊ သွက်မရပ်စပ်နူကဵု " .. "{{tl|ဝေါဟာဇာတိအဓိပ္ပါဲတုပ်ဂမၠိုၚ်}}။ ဆေၚ်စပ်ကဵုဝေါဟာမဆက်ဆောံအဓိပ္ပါဲတုပ်အဇေတ်အဍာံဂှ်မနွံဒၟံၚ်ပ္ဍဲမဝ်ဂျူတန်ဍောတ်ဂမၠိုၚ်။\n\n" .. "==== Language data module structure ====\n" .. "* <code>export.title</code> — optional; table title template (e.g. \"Regional synonyms of %s\").\n" .. "* <code>export.columns</code> — optional; list of column headers for location hierarchy (e.g. {\"Dialect group\", \"Dialect\", \"Location\"}).\n" .. "* <code>export.notes</code> — optional; table of note keys to text.\n" .. "* <code>export.sources</code> — optional; table of source keys to text.\n" .. "* <code>export.note_aliases</code> — optional; alias map for notes.\n" .. "* <code>export.varieties</code> — required; nested table of variety nodes. Each node must have <code>name</code>; array part holds children. Node keys can include <code>text_display</code>, <code>color</code>, <code>code</code>, <code>wikidata</code>, <code>lat</code>, <code>long</code>, and language-specific keys (e.g. <code>persian</code>, <code>armenian</code>, <code>chinese</code>).\n\n" .. expand_template({ title = 'dial syn', args = { lang_code, ["demo mode"] = "y" } }) end end, }, { regex = "^မဝ်ဂျူ:dialect synonyms/([%l-]+)/([^/]+)$", process = function(title, cats, lang_code, term) local lang = lang_cache[lang_code] if lang then local langname = lang:getCanonicalName() cats:insert("စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာအဓိပ္ပာဲတုပ်ဂမၠိုၚ်|" .. langname) cats:insert("စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာအဓိပ္ပာဲတုပ်နကဵုဘာသာ" .. langname .. "ဂမၠိုၚ်|" .. term) return ("%s\n\n%s"):format( "==== Term/sense module structure ====\n" .. "* <code>export.title</code> — optional; custom table title (e.g. \"Realization of 'strong R' between vowels\"). Overrides the language default.\n" .. "* <code>export.meaning</code> — optional; meaning/gloss (alternative to <code>gloss</code>).\n" .. "* <code>export.gloss</code> — optional; short meaning for the table.\n" .. "* <code>export.note</code> — optional; single note key or string, or list of note keys.\n" .. "* <code>export.notes</code> — optional; list of note keys.\n" .. "* <code>export.source</code> / <code>export.sources</code> — optional; source keys.\n" .. "* <code>export.last_column</code> — optional; label for the data column (default \"Words\"; e.g. \"Realization\").\n" .. "* <code>export.syns</code> — required; table mapping variety/location names (keys from the language data module) to a list of term entries. Each entry can be a string or a table (e.g. <code>{ ipa = \"[ɽ]\" }</code> or <code>{ term = \"word\" }</code>).\n\n" .. "Example (custom title and data column, IPA realizations):\n" .. "<pre>\nlocal export = {}\n\nexport.title = \"Realization of 'strong R' between vowels\"\n" .. "export.meaning = \"\"\nexport.note = \"realization of 'strong R' between vowels\"\n" .. "export.last_column = \"Realization\"\n\nexport.syns = {\n\t[\"ALERS-158\"] = { { ipa = \"[ɽ]\" } },\n\t[\"ALERS-175\"] = { { ipa = \"[x]\" } },\n}\n\nreturn export\n</pre>\n\n", expand_template({ title = 'dial syn', args = { lang_code, term } })) end end, }, { regex = "^မဝ်ဂျူ:dialect synonyms/([%l-]+)/([^/]+)/([^/]+)$", process = function(title, cats, lang_code, term, id) local lang = lang_cache[lang_code] if lang then local langname = lang:getCanonicalName() cats:insert("စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာအဓိပ္ပာဲတုပ်ဂမၠိုၚ်|" .. langname) cats:insert("စရၚ်မဝ်ဂျူအရေဝ်တၞဟ်ခြာအဓိပ္ပာဲတုပ်နကဵုဘာသာ" .. langname .. "ဂမၠိုၚ်|" .. term) return ("%s\n\n%s"):format( "==== Term/sense module structure ====\n" .. "* <code>export.title</code> — optional; custom table title (e.g. \"Realization of 'strong R' between vowels\"). Overrides the language default.\n" .. "* <code>export.meaning</code> — optional; meaning/gloss (alternative to <code>gloss</code>).\n" .. "* <code>export.gloss</code> — optional; short meaning for the table.\n" .. "* <code>export.note</code> — optional; single note key or string, or list of note keys.\n" .. "* <code>export.notes</code> — optional; list of note keys.\n" .. "* <code>export.source</code> / <code>export.sources</code> — optional; source keys.\n" .. "* <code>export.last_column</code> — optional; label for the data column (default \"Words\"; e.g. \"Realization\").\n" .. "* <code>export.syns</code> — required; table mapping variety/location names (keys from the language data module) to a list of term entries. Each entry can be a string or a table (e.g. <code>{ ipa = \"[ɽ]\" }</code> or <code>{ term = \"word\" }</code>).\n\n" .. "Example (custom title and data column, IPA realizations):\n" .. "<pre>\nlocal export = {}\n\nexport.title = \"Realization of 'strong R' between vowels\"\n" .. "export.meaning = \"\"\nexport.note = \"realization of 'strong R' between vowels\"\n" .. "export.last_column = \"Realization\"\n\nexport.syns = {\n\t[\"ALERS-158\"] = { { ipa = \"[ɽ]\" } },\n\t[\"ALERS-175\"] = { { ipa = \"[x]\" } },\n}\n\nreturn export\n</pre>\n\n", expand_template({ title = 'dial syn', args = { lang_code, term, id = id } })) end end, }, { regex = "^မဝ်ဂျူ:bibliography/data/([%l-]+)$", process = function(title, cats, lang_code) if lang_code == "preload" then return 'Used as a base model for other languages when the button "create new language submodule" is clicked.' end local page = require(title.fullText).bib_page if not page then page = lang_cache[lang_code]:getCanonicalName() if page then cats:insert("မဝ်ဂျူ" .. page .. "ဂမၠိုၚ်") end end cats:insert("မဝ်ဂျူနိဿဲဂမၠိုၚ်") return "This module holds bibliographical data for " .. page .. ". For the formatted bibliography see '''[[Appendix:Bibliography/" .. page .. "]]'''." end, }, } function export.show(frame) local boolean_default_false = { type = "boolean", default = false } local args = process_params(frame.args, { ["hr"] = true, ["for"] = true, ["from"] = true, ["allowondoc"] = boolean_default_false, -- Don't throw an error if used on a documentation subpage. ["notsubpage"] = boolean_default_false, ["nodoc"] = boolean_default_false, ["nolinks"] = boolean_default_false, -- suppress all "Useful links" ["nosandbox"] = boolean_default_false, -- supress sandbox }) local output = Array('\n<div class="documentation" style="display:block; clear:both">\n') local cats = Array() local nodoc = args.nodoc if (not args.hr) or (args.hr == "above") then output:insert("----\n") end local title = args["for"] and new_title(args["for"]) or get_current_title() local doc_title = args.from ~= "-" and new_title(args.from or title.fullText .. '/documentation') or nil local contentModel = title.contentModel local pagetype, is_script_or_stylesheet = get_pagetype(title) local preload, fallback_docs, doc_content, old_doc_title, user_name, skin_name, needs_doc local doc_content_source = "မဝ်ဂျူ:documentation" local auto_generated_cat_source local cats_auto_generated = false if not args.allowondoc and is_documentation(title) then -- TODO: merge with {{documentation subpage}}, and choose behaviour based on the page type. error("This template should not be used on a documentation page. Please use [[Template:documentation subpage]].") elseif is_sandbox(title) then local sandbox_ns = title.nsText preload = ("ထာမ်ပလိက်:documentation/preload%s%sSandbox"):format( sandbox_ns == "မဝ်ဂျူ" and sandbox_ns or "ထာမ်ပလိက်", title.rootText:match("^ညးလွပ်:(.+)") and "ညးလွပ်" or "" ) elseif pagetype:match("%f[%w]gadget%f[%W]") then preload = "ထာမ်ပလိက်:documentation/preloadGadget" elseif pagetype:match("%f[%w]script%f[%W]") then -- .js if title.nsText == "မဳဒဳယာဝဳကဳ" then preload = "ထာမ်ပလိက်:documentation/preloadMediaWikiJavaScript" else preload = "ထာမ်ပလိက်:documentation/preloadTemplate" -- XXX if title.nsText == "ညးလွပ်" then user_name = title.rootText end end is_script_or_stylesheet = true elseif pagetype:match("%f[%w]stylesheet%f[%W]") then -- .css preload = "ထာမ်ပလိက်:documentation/preloadTemplate" -- XXX if title.nsText == "User" then user_name = title.rootText end is_script_or_stylesheet = true elseif contentModel == "Scribunto" then -- Exclude pages in Module: which aren't Scribunto. preload = "ထာမ်ပလိက်:documentation/preloadModule" elseif pagetype:match("%f[%w]template%f[%W]") or pagetype:match("%f[%w]project%f[%W]") then preload = "ထာမ်ပလိက်:documentation/preloadTemplate" end if doc_title and doc_title.isRedirect then old_doc_title = doc_title doc_title = doc_title.redirectTarget end output:insert("<dl class=\"plainlinks\" style=\"font-size: smaller;\">") local function get_module_doc_and_cats(categories_only) cats_auto_generated = true local automatic_cats = nil if user_name then fallback_docs = "documentation/fallback/user module" automatic_cats = { "မဝ်ဂျူကဠာဗ္တဳညးလွပ်ဂမၠိုၚ်" } else for _, data in ipairs(module_regex) do local captures = { umatch(title.fullText, data.regex) } if #captures > 0 then local cat, process_function if is_callable(data.process) then process_function = data.process elseif type(data.process) == "string" then doc_content_source = "မဝ်ဂျူ:documentation/functions/" .. data.process process_function = require(doc_content_source) end if process_function then doc_content = process_function(title, cats, unpack(captures)) end if type(doc_content) == "table" then doc_content_source = doc_content.title and "ထာမ်ပလိက်:" .. doc_content.title or doc_content_source doc_content = expand_template(doc_content) elseif doc_content ~= nil then doc_content = preprocess(doc_content) end cat = data.cat if cat then if type(cat) == "string" then cat = { cat } end for _, c in ipairs(cat) do insert(cats, (ugsub(title.fullText, data.regex, c))) end end break end end end if title.subpageText == "ထာမ်ပလိက်" then cats:insert("မဝ်ဂျူထာမ်ပလိက်အိန်တာဖှေတ်ဂမၠိုၚ်") end if automatic_cats then for _, c in ipairs(automatic_cats) do cats:insert(c) end end if #cats == 0 then local auto_cats = categorize_module(frame, "return raw", "noerror") if #auto_cats > 0 then auto_generated_cat_source = "မဝ်ဂျူ:module categorization" end for _, category in ipairs(auto_cats) do cats:insert(category) end end -- meaning module is not in user’s sandbox or one of many datamodule boring series needs_doc = not categories_only and not (automatic_cats or doc_content or fallback_docs) end -- Override automatic documentation, if present. if doc_title and doc_title.exists then local cats_auto_generated_text = "" if contentModel == "Scribunto" then local doc_page_content = doc_title.content -- Track then do nothing if there are uses of includeonly. The -- pattern is slightly too permissive, but any false-positives are -- obvious typos that should be corrected. if doc_page_content:lower():match("</?includeonly%f[%s/>][^>]*>") then track("module-includeonly") else -- Check for uses of {{module cat}}. find_templates treats the -- input as transcluded by default (i.e. it parses the wikitext -- which will be transcluded through to the module page). local module_cat for template in find_templates(doc_page_content) do if template:get_name() == "module cat" then module_cat = true break end end if not module_cat then get_module_doc_and_cats("categories only") auto_generated_cat_source = auto_generated_cat_source or doc_content_source cats_auto_generated_text = " Categories were auto-generated by [[" .. auto_generated_cat_source .. "]]. <sup>[[" .. new_title(auto_generated_cat_source):fullUrl { action = "ပလေဝ်ဒါန်" } .. " ပလေဝ်ဒါန်]]</sup>" end end end output:insert( "<dd><i style=\"font-size: larger;\">ပွမဗက် " .. "[[ရီု:စရၚ်ထာမ်ပလိက်ကဵုမဝ်ဂျူဂမၠိုၚ်|လိက်စၟတ်သမ္တီ]]မချူလဝ်နကဵုခၞံဗဒှ်အပ္ဍဲ [[" .. doc_title.fullText .. "]]အတေံ။ " .. "<sup>[[" .. doc_title:fullUrl { action = "ပလေဝ်ဒါန်" } .. " ပလေဝ်ဒါန်]]</sup>" .. cats_auto_generated_text .. "</i></dd>") else if contentModel == "ထာမ်ပလိက်" then get_module_doc_and_cats(false) elseif title.nsText == "Template" then --cats:insert("Uncategorized templates") needs_doc = not (fallback_docs or nodoc) elseif user_name and is_script_or_stylesheet then skin_name = skins[title.text:sub(#title.rootText + 1):match("^/(%l+)%.[jc]ss?$")] if skin_name then fallback_docs = "documentation/fallback/user " .. contentModel end end if doc_content then output:insert( "<dd><i style=\"font-size: larger;\">မဆေၚ်စပ်ကဵုပွမဗက်က္ကရဴ " .. "[[ရီု:စရၚ်ထာမ်ပလိက်ကဵုမဝ်ဂျူဂမၠိုၚ်|လိက်စၟတ်သမ္တီမချူလဝ်]]ဂှ် " .. "ကၠောန်ပ္တိတ်လဝ်နူကဵု [[" .. doc_content_source .. "]]။ <sup>[[" .. new_title(doc_content_source):fullUrl { action = "ပလေဝ်ဒါန်" } .. " ပလေဝ်ဒါန်]]</sup> </i></dd>") elseif not nodoc then if doc_title then output:insert( "<dd><i style=\"font-size: larger;\">" .. pagetype .. " တဏအ်ဝွံဟွံမွဲကဵု[[ရီု:စရၚ်ထာမ်ပလိက်ကဵုမဝ်ဂျူဂမၠိုၚ်|လိက်စၟတ်သမ္တီမချူလဝ်နကဵုမုက်လိက်ဓမၠေံ]]။ " .. (fallback_docs and "ဇကုမသ္ပမာန်နကဵု " or "သ္ပဂုန်တုဲ ") .. "[" .. doc_title:fullUrl { action = "ပလေဝ်ဒါန်", preload = preload } .. " ဍဵုခၞံဗဒှ်ဏံညိ]။</i></dd>\n") else output:insert( "<dd><i style=\"font-size: larger; color: var(--wikt-palette-red-9,#FF0000);\">Unable to auto-generate " .. "documentation for this " .. pagetype .. ".</i></dd>\n") end end end if startswith(title.fullText, "မဳဒဳယာဝဳကဳ:Gadget-") then local is_gadget = false for line in gline(new_title("မဳဒဳယာဝဳကဳ:Gadgets-definition").content) do local gadget, items = line:match("^%*%s*(%a[%w_-]*)%[.-%]|(.+)$") if not gadget then gadget, items = line:match("^%*%s*(%a[%w_-]*)|(.+)$") end if gadget then items = Array(split(items, "|")) for i, item in ipairs(items) do if title.fullText == ("မဳဒဳယာဝဳကဳ:Gadget-" .. item) then is_gadget = true output:insert("<dd> ''အက္ခရ်တဏအ်ဝွံဟွံသေၚ်ကဵုဒကုတ်ဆေၚ်စပ်ကဵု <code> လဵုဒှ်ဒှ်ရအဴ") output:insert(gadget) output:insert("</code> gadget ([") output:insert(tostring(full_url("မဳဒဳယာဝဳကဳ:Gadgets-definition", { action = "ပလေဝ်ဒါန်" }))) output:insert(" edit definitions])'' <dl>") output:insert("<dd> ''Description ([") output:insert(tostring(full_url("မဳဒဳယာဝဳကဳ:Gadget-" .. gadget, { action = "ပလေဝ်ဒါန်" }))) output:insert(" ပလေဝ်ဒါန်])'': ") output:insert(preprocess(new_message('Gadget-' .. gadget):plain())) output:insert(" </dd>") items:remove(i) if #items > 0 then for j, item in ipairs(items) do items[j] = '[[မဳဒဳယာဝဳကဳ:Gadget-' .. item .. '|' .. item .. ']]' end output:insert("<dd> ''Other parts'': ") output:insert(list_to_text(items)) output:insert("</dd>") end output:insert("</dl></dd>") break end end end end if not is_gadget then output:insert("<dd> ''အက္ခရ်တဏအ်ဝွံဟွံသေၚ်ကဵုဒကုတ်ဆေၚ်စပ်ကဵု [") output:insert(tostring(full_url("Special:Gadgets", { uselang = "mnw" }))) output:insert(' gadget] ([') output:insert(tostring(full_url("MediaWiki:Gadgets-definition", { action = "ပလေဝ်ဒါန်" }))) output:insert(' ပလေဝ်ဒါန်ဝေါဟာအဓိပ္ပါဲဂမၠိုၚ်])လဵုဒှ်ဒှ်ရအဴ။</dd>') -- else -- cats:insert("Wiktionary gadgets") end end if old_doc_title then output:insert("<dd> ''Redirected from'' [") output:insert(old_doc_title:fullUrl { redirect = "ဟွံ" }) output:insert(" ") output:insert(old_doc_title.fullText) output:insert("] ([") output:insert(old_doc_title:fullUrl { action = "ပလေဝ်ဒါန်" }) output:insert(" ပလေဝ်ဒါန်])။</dd>\n") end if not args.nolinks then local links = Array() if title.isSubpage and not args.notsubpage then links:insert("[[:" .. title.nsText .. ":" .. title.rootText .. "|မုက်လိက်တံရိုဟ်]]") links:insert("[[Special:PrefixIndex/" .. title.nsText .. ":" .. title.rootText .. "/|တံရိုဟ်မုက်လိက်ဓမၠေံဂမၠိုၚ်]]") else links:insert("[[Special:PrefixIndex/" .. title.fullText .. "/|စရၚ်မုက်လိက်ဓမၠေံ]]") end links:insert( "[" .. tostring(full_url("တၟေၚ်:လေန်စၠောအ်နူလဵုရော/" .. title.fullText, { hidetrans = true, hideredirs = true })) .. " လေန်ဂမၠိုၚ်]") if contentModel ~= "Scribunto" then links:insert( "[" .. tostring(full_url("တၟေၚ်:လေန်စၠောအ်နူလဵုရော/" .. title.fullText, { hidelinks = true, hidetrans = true })) .. " မပြံၚ်လှာဲဂၠံၚ်ဍာဲဂမၠိုၚ်]") end if is_script_or_stylesheet then if user_name then links:insert("[[Special:MyPage" .. title.text:sub(#title.rootText + 1) .. "|ဒြပ်ဇကု]]") end else links:insert( "[" .. tostring(full_url("တၟေၚ်:လေန်စၠောအ်နူလဵုရော/" .. title.fullText, { hidelinks = true, hideredirs = true })) .. " ပရေၚ်မပံၚ်စပ်ဂမၠိုၚ်]") end if contentModel == "Scribunto" then local is_testcases = title.isSubpage and title.subpageText == "testcases" local without_subpage = title.nsText .. ":" .. title.baseText if is_testcases then links:insert("[[:" .. without_subpage .. "|tested module]]") else links:insert("[[" .. title.fullText .. "/testcases|testcases]]") end if user_name then links:insert("[[ညးလွပ်:" .. user_name .. "|မုက်လိက်ညးလွပ်]]") links:insert("[[ညးလွပ် ဓရီုကျာ:" .. user_name .. "|မုက်လိက်ဓရီုကျာညးလွပ်]]") links:insert("[[Special:PrefixIndex/ညးလွပ်:" .. user_name .. "/|လ္ဂာံညးလွပ်ဂမၠိုၚ်]]") -- If sandbox module, add a link to the module that this is a sandbox of. -- Exclude user sandbox modules like [[User:Dine2016/sandbox]]. elseif title.text:find("^sandbox%d*/") or title.text:find("/sandbox%d*%f[/%z]") then cats:insert("မဝ်ဂျူကဠာဗ္တဳဂမၠိုၚ်") -- Sandbox modules don’t really need documentation. needs_doc = false -- Don't track user sandbox modules. local text_title = new_title(title.text) if not (text_title and text_title.nsText == "User") then local diff local sandbox_of = title.text:match("^(.*)/sandbox%d*%f[/%z]") if sandbox_of then track("sandbox to be moved") else sandbox_of = title.text:match("^sandbox%d*/(.*)$") end if not sandbox_of then error(("Internal error: Something wrong, couldn't extract sandbox-of module from title '%s'") :format(title.text)) end sandbox_of = title.nsText .. ":" .. sandbox_of if title_exists(sandbox_of) then diff = " (" .. compare_pages(title.fullText, sandbox_of, "diff") .. ")" else track("no sandbox of") end links:insert("[[:" .. sandbox_of .. "|ကဠာသံၚ်ဗ္တဳမဆေၚ်စပ်ကဵု]]" .. (diff or "")) end -- If not a sandbox module, add link to sandbox module. -- Sometimes there are multiple sandboxes for a single module: -- [[Module:sandbox/sa-pronunc]], [[Module:sandbox2/sa-pronunc]]. else local sandbox_title local user_prefix, user_rest = title.text:match("^(ညးလွပ်:.-/)(.*)$") if not user_prefix then user_prefix = "" user_rest = title.text end sandbox_title = title.nsText .. ":" .. user_prefix .. "sandbox/" .. user_rest local sandbox_link = "[[:" .. sandbox_title .. "|ကဠာသံၚ်ဗ္တဳ]]" local diff if title_exists(sandbox_title) then diff = " (" .. compare_pages(title.fullText, sandbox_title, "diff") .. ")" end links:insert(sandbox_link .. (diff or "")) end end if title.nsText == "Template" then -- Error search: all(any namespace), hastemplate (show pages using the template), insource (show source code), incategory (any/specific error) -- [[mw:Help:CirrusSearch]], [[w:Help:Searching/Regex]] -- apparently same with/without: &profile=advanced&fulltext=1 local errorq = 'searchengineselect=mediawiki&search=all: hastemplate:\"' .. title.rootText .. '\" insource:\"' .. title.rootText .. '\" incategory:' local eincategory = "Pages_with_module_errors|ParserFunction_errors|DisplayTitle_errors|Pages_with_ISBN_errors|Pages_with_ISSN_errors|Pages_with_reference_errors|Pages_with_syntax_highlighting_errors|Pages_with_TemplateStyles_errors" links:insert( '[' .. tostring(full_url('Special:Search', errorq .. eincategory)) .. ' မဗၠေတ်ဗၠေၚ်ဂမၠိုၚ်]' .. ' (' .. '[' .. tostring(full_url('Special:Search', errorq .. 'ParserFunction_errors')) .. ' မပါ်ပ္တိတ်တၞဟ်ခြာပိုဒ်]' .. '/' .. '[' .. tostring(full_url('Special:Search', errorq .. 'Pages_with_module_errors')) .. ' မဝ်ဂျူ]' .. ')' ) if title.isSubpage and title.text:find("/sandbox%d*%f[/%z]") then -- This is a sandbox template. -- At the moment there are no user sandbox templates with subpage -- “/sandbox”. cats:insert("ထာမ်ပလိက်ကဠာဗ္တဳဂမၠိုၚ်") -- Sandbox templates don’t really need documentation. needs_doc = false -- Will behave badly if “/sandbox” occurs twice in title! local sandbox_of = title.fullText:gsub("/sandbox%d*%f[/%z]", "") local diff if title_exists(sandbox_of) then diff = " (" .. compare_pages(title.fullText, sandbox_of, "diff") .. ")" else track("no sandbox of") end links:insert("[[:" .. sandbox_of .. "|sandbox of]]" .. (diff or "")) -- This is a template that can have a sandbox. elseif not args.nosandbox then -- unless we tell it not to local sandbox_title = title.fullText .. "/sandbox" local diff if title_exists(sandbox_title) then diff = " (" .. compare_pages(title.fullText, sandbox_title, "diff") .. ")" end links:insert("[[:" .. sandbox_title .. "|ကဠာသံၚ်ဗ္တဳ]]" .. (diff or "")) end end if #links > 0 then output:insert("<dd> ''လေန်မရပ်စပ်သုၚ်စောဲ'': " .. links:concat(" • ") .. "</dd>") end end output:insert("</dl>\n") -- Show error from [[Module:category tree/topic cat/data]] on its submodules' -- documentation to, for instance, warn about duplicate labels. if startswith(title.fullText, "မဝ်ဂျူ:category tree/topic/") then local ok, err = pcall(require, "မဝ်ဂျူ:category tree/topic/data") if not ok then output:insert('<span class="error">' .. err .. '</span>\n\n') end end if doc_title and doc_title.exists then -- Override automatic documentation, if present. doc_content = expand_template { title = doc_title.fullText } elseif not doc_content and fallback_docs then doc_content = expand_template { title = fallback_docs, args = { ['user'] = user_name, ['page'] = title.fullText, ['skin name'] = skin_name, }, } end if doc_content then output:insert(doc_content) end output:insert(('\n<%s style="clear: both;" />'):format(args.hr == "below" and "hr" or "br")) if cats_auto_generated and not cats[1] and (not doc_content or not doc_content:find("%[%[ကဏ္ဍ:")) then if contentModel == "Scribunto" then cats:insert("မဝ်ဂျူဟွံမွဲကဵုကဏ္ဍဂမၠိုၚ်") -- elseif title.nsText == "Template" then -- cats:insert("Uncategorized templates") end end if needs_doc then cats:insert("ထာမ်ပလိက်ကဵုမဝ်ဂျူမနွံပၟိက်လိက်စၟတ်မချူသမ္တီပတိုန်လဝ်ဂမၠိုၚ်") end for _, cat in ipairs(cats) do output:insert("[[ကဏ္ဍ:" .. cat .. "]]") end output:insert("</div>\n") return output:concat() end function export.module_auto_doc_table() local parts = {} local function ins(text) insert(parts, text) end ins('{|class="wikitable"') ins("! ရဳဂျေတ်သ် !! ကဏ္ဍ !! မဝ်ဂျူပွမဗ္ဒုၚ်ဂမၠိုၚ်") for _, spec in ipairs(module_regex) do local cat_text local cats = spec.cat if cats then local cat_parts = {} if type(cats) == "string" then cats = { cats } end for _, cat in ipairs(cats) do insert(cat_parts, ("<code>%s</code>"):format((cat:gsub("|", "&#124;")))) end cat_text = concat(cat_parts, ", ") else cat_text = "''(unspecified)''" end ins("|-") ins(("| <code>%s</code> || %s || %s"):format(spec.regex, cat_text, is_callable(spec.process) and "''(handled internally)''" or type(spec.process) == "string" and ("[[Module:documentation/functions/%s]]"):format(spec.process) or "''(no documentation generator)''")) end ins("|}") return concat(parts, "\n") end -- Used by {{translit module documentation}}. function export.translitModuleLangList(frame) local pagename, subpage if frame.args[1] then pagename = frame.args[1] else local title = get_current_title() subpage = title.subpageText pagename = title.text if subpage ~= pagename then pagename = title.rootText end end local translitModule = pagename local languageObjects = require("မဝ်ဂျူ:languages/byTranslitModule")(translitModule) local codeInPagename = pagename:match("^([%l-]+)%-.*translit$") local categories = Array() local codeInPagenameInList = false if codeInPagename then if languageObjects[1] and subpage ~= "documentation" then local agreement = languageObjects[2] and "ဂမၠိုၚ်" or "" categories:insert("[[ကဏ္ဍ:မဝ်ဂျူကၠာဲမအခဝ်မရပ်စပ်နူကဵု " .. #languageObjects .. " အရေဝ်ဘာသာ" .. agreement .. "]]") end languageObjects = Array(languageObjects) :filter( function(lang) local result = lang:getCode() ~= codeInPagename codeInPagenameInList = codeInPagenameInList or result return result end) end if subpage ~= "documentation" then for script_code in pagename:gmatch("%f[^-%z]%u%l%l%l%f[-]") do local script = get_script(script_code) if script then categories:insert("[[ကဏ္ဍ:" .. script:getCategoryName() .. "]]") end end end if subpage ~= "documentation" and not title_exists("မဝ်ဂျူ:" .. pagename .. "/testcases") then categories:insert("[[ကဏ္ဍ:မဝ်ဂျူကၠာဲမအခဝ်လ္ပာ်မ္ၚးကိစ္စစမ်ၜတ်မုက်ဂၠေံဂၠေံဂမၠိုၚ်]]") end if not languageObjects[1] then return categories:concat() end local langs = Array(languageObjects) :sort( function(lang1, lang2) return lang1:getCode() < lang2:getCode() end) -- This will not error because languageObjects is not empty. :map(languageObjects[1].makeCategoryLink) :serialCommaJoin() return "It is " .. (codeInPagenameInList and "also" or "") .. " used to transliterate " .. langs .. "." .. categories:concat() end -- Used by {{strip diacritics module documentation}}. function export.stripDiacriticsModuleLangList(frame) local pagename, subpage if frame.args[1] then pagename = frame.args[1] else local title = get_current_title() subpage = title.subpageText pagename = title.text if subpage ~= pagename then pagename = title.rootText end end local stripDiacriticsModule = pagename local languageObjects = require("မဝ်ဂျူ:languages/byStripDiacriticsModule")(stripDiacriticsModule) local codeInPagename = pagename:match("^([%l-]+)%-.*stripdiacritics$") local categories = Array() local codeInPagenameInList = false if codeInPagename then if languageObjects[1] and subpage ~= "documentation" then local agreement = languageObjects[2] and "ဂမၠိုၚ်" or "" categories:insert("[[ကဏ္ဍ:မဝ်ဂျူပွမကၠောန်ပ္တိတ်ယၟုပၞော်လုပ်မရပ်စပ်နူကဵု " .. #languageObjects .. " အရေဝ်ဘာသာ" .. agreement .. "]]") end languageObjects = Array(languageObjects) :filter( function(lang) local result = lang:getCode() ~= codeInPagename codeInPagenameInList = codeInPagenameInList or result return result end) end if subpage ~= "documentation" then for script_code in pagename:gmatch("%f[^-%z]%u%l%l%l%f[-]") do local script = get_script(script_code) if script then categories:insert("[[ကဏ္ဍ:" .. script:getCategoryName() .. "]]") end end end if subpage ~= "documentation" and not title_exists("မဝ်ဂျူ:" .. pagename .. "/testcases") then categories:insert("[[ကဏ္ဍ:မဝ်ဂျူပွမကၠောန်ပ္တိတ်စုတ်ပၠောပ်ယၟုမနွံကဵုကိစ္စစမ်ၜတ်ရံၚ်မုက်လိက်ဂၠေံဂၠေံဂမၠိုၚ်]]]") end if not languageObjects[1] then return categories:concat() end local langs = Array(languageObjects) :sort( function(lang1, lang2) return lang1:getCode() < lang2:getCode() end) -- This will not error because languageObjects is not empty. :map(languageObjects[1].makeCategoryLink) :serialCommaJoin() return "It is " .. (codeInPagenameInList and "also" or "") .. " used to strip diacritics for " .. langs .. "." .. categories:concat() end -- Used by {{sortkey module documentation}}. function export.sortkeyModuleLangList(frame) local pagename, subpage if frame.args[1] then pagename = frame.args[1] else local title = get_current_title() subpage = title.subpageText pagename = title.text if subpage ~= pagename then pagename = title.rootText end end local sortkeyModule = pagename local languageObjects = require("Module:languages/bySortkeyModule")(sortkeyModule) local codeInPagename = pagename:match("^([%l-]+)%-.*sortkey$") local categories = Array() local codeInPagenameInList = false if codeInPagename then if languageObjects[1] and subpage ~= "documentation" then local agreement = languageObjects[2] and "s" or "" categories:insert("[[ကဏ္ဍ:မဝ်ဂျူပွမကၠောန်ပ္တိတ်ပါ်အဇာကဳမရပ်နူကဵု " .. #languageObjects .. "ဘာသာဂမၠိုၚ်" .. agreement .. "]]") end languageObjects = Array(languageObjects) :filter( function(lang) local result = lang:getCode() ~= codeInPagename codeInPagenameInList = codeInPagenameInList or result return result end) end if subpage ~= "documentation" then for script_code in pagename:gmatch("%f[^-%z]%u%l%l%l%f[-]") do local script = get_script(script_code) if script then categories:insert("[[ကဏ္ဍ:" .. script:getCategoryName() .. "]]") end end end if subpage ~= "documentation" and not title_exists("မဝ်ဂျူ:" .. pagename .. "/testcases") then categories:insert("[[ကဏ္ဍ:မဝ်ဂျူပွမကၠောန်ပ္တိတ်ပါ်အဇာကဳမနွံကဵုကိစ္စစမ်ၜတ်ရံၚ်မုက်လိက်ဂၠေံဂၠေံဂမၠိုၚ်]]") end if not languageObjects[1] then return categories:concat() end local langs = Array(languageObjects) :sort( function(lang1, lang2) return lang1:getCode() < lang2:getCode() end) -- This will not error because languageObjects is not empty. :map(languageObjects[1].makeCategoryLink) :serialCommaJoin() return "It is " .. (codeInPagenameInList and "also" or "") .. " used to sort " .. langs .. "." .. categories:concat() end return export jtoond1ue60d145j5er70b0rxut9c6d မဝ်ဂျူ:etymology languages/data 828 723 399022 397879 2026-07-17T13:14:55Z Intobesa.bot 1035 Bot: ပွမကၠာဲစုတ်ယၟုနူဘာသာအၚ်္ဂလိက် 399022 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} ---------------------------------------------------------------------------------------------------------------------- -- Afroasiatic varieties -- ---------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- -- Berber varieties -- -------------------------------------------------------------------------------------- m["shi-med"] = { "Medieval Tashelhit", 34152, "shi", } -- Tuareg lects m["thv"] = { "Tamahaq", 56703, "tmh", } m["ttq"] = { "Tawellemmet", 56390, "tmh", } m["taq"] = { "Tamasheq", 4670066, "tmh", } m["thz"] = { "Tayert", 56388, "tmh", } m["thv-ght"] = { "Ghat", 47012900, "thv", } -------------------------------------------------------------------------------------- -- Cushitic varieties -- -------------------------------------------------------------------------------------- -- Oromo varieties m["hae"] = { "Harar Oromo", 5330355, "om", aliases = {"Eastern Oromo"}, } m["gax"] = { "Borana", 2910610, "om", aliases = {"Southern Oromo"}, } m["orc"] = { "Orma", 2919128, "om", } m["ssn"] = { "Waata", 3501553, "om", } -------------------------------------------------------------------------------------- -- Egyptian varieties -- -------------------------------------------------------------------------------------- ----------------------------------------------------- -- Ancient Egyptian varieties -- ----------------------------------------------------- m["egy-old"] = { "အဳဂျေပ်တြေံ", 447117, "egy", } m["egy-mid"] = { "အဳဂျေပ်လဒေါဝ်", 657330, "egy", aliases = {"Classical Egyptian"}, } m["egy-nmi"] = { "Neo-Middle Egyptian", 123735278, "egy", aliases = {"Égyptien de tradition", "Traditional Egyptian"}, } m["egy-lat"] = { "အဳဂျေပ်လဇုဲ", 1852329, "egy", } ----------------------------------------------------- -- Coptic varieties -- ----------------------------------------------------- m["cop-akh"] = { "Akhmimic Coptic", 125176464, "cop", aliases = {"Akhmimic"}, } m["cop-boh"] = { "Bohairic Coptic", 890733, "cop", aliases = {"Bohairic", "Memphitic Coptic", "Memphitic"}, } m["cop-ggg"] = { "Coptic Dialect G", nil, "cop", aliases = {"Dialect G", "Mansuric Coptic", "Mansuric"}, } m["cop-jjj"] = { "Coptic Dialect J", nil, "cop", } m["cop-kkk"] = { "Coptic Dialect K", nil, "cop", } m["cop-ppp"] = { "Coptic Dialect P", nil, "cop", aliases = {"Proto-Theban Coptic", "Palaeo-Theban Coptic"}, } m["cop-fay"] = { "Fayyumic Coptic", 1399115, "cop", aliases = {"Fayyumic", "Faiyumic Coptic", "Faiyumic", "Fayumic Coptic", "Fayumic", "Bashmuric Coptic", "Bashmuric"}, } m["cop-her"] = { "Hermopolitan Coptic", nil, "cop", aliases = {"Hermopolitan", "Coptic Dialect H", "Ashmuninic", "Ashmuninic Coptic"}, } m["cop-lyc"] = { "Lycopolitan Coptic", nil, "cop", aliases = { "Lycopolitan", "Assiutic Coptic", "Asyutic Coptic", "Assiutic", "Asyutic", "Lyco-Diospolitan Coptic", "Lyco-Diospolitan", "Subakhmimic Coptic", "Subakhmimic" }, } m["cop-old"] = { "Old Coptic", 115518040, "cop", } m["cop-oxy"] = { "Oxyrhynchite Coptic", nil, "cop", aliases = {"Oxyrhynchite", "Mesokemic Coptic", "Mesokemic", "Middle Egyptian Coptic"}, } m["cop-ply"] = { "Proto-Lycopolitan Coptic", nil, "cop", aliases = {"Coptic Dialect i", "Proto-Lyco-Diospolitan Coptic"}, } m["cop-sah"] = { "Sahidic Coptic", 2645851, "cop", aliases = {"Sahidic", "Saidic Coptic", "Saidic", "Thebaic Coptic", "Thebaic"}, } -------------------------------------------------------------------------------------- -- Semitic varieties -- -------------------------------------------------------------------------------------- ----------------------------------------------------- -- Akkadian varieties -- ----------------------------------------------------- m["akk-old"] = { "Old Akkadian", nil, "akk", } m["akk-obb"] = { "Old Babylonian", nil, "akk", } m["akk-oas"] = { "Old Assyrian", nil, "akk", } m["akk-mbb"] = { "Middle Babylonian", nil, "akk", } m["akk-mas"] = { "Middle Assyrian", nil, "akk", } m["akk-nbb"] = { "Neo-Babylonian", nil, "akk", } m["akk-nas"] = { "Neo-Assyrian", nil, "akk", } m["akk-lbb"] = { "Late Babylonian", nil, "akk", } m["akk-stb"] = { "Standard Babylonian", nil, "akk", } ----------------------------------------------------- -- Arabic varieties -- ----------------------------------------------------- m["jrb"] = { "Judeo-Arabic", 37733, "ar", pseudo_families = "qfa-jew", } m["apc-leb"] = { "Lebanese North Levantine Arabic", 1516642, "apc", aliases = {"Lebanese Arabic"}, } m["apc-sle"] = { "South Lebanese North Levantine Arabic", 14206590, "apc", aliases = {"South Lebanese Arabic"}, } m["apc-nle"] = { "North Lebanese North Levantine Arabic", nil, "apc", aliases = {"North Lebanese Arabic"}, } m["apc-syr"] = { "Syrian North Levantine Arabic", 2143071, "apc", aliases = {"Syrian Arabic"}, } m["apc-ale"] = { "Aleppine North Levantine Arabic", 7056921, "apc-syr", aliases = {"Aleppo Arabic", "Aleppine Arabic"}, } m["apc-dam"] = { "Damascene North Levantine Arabic", 12237466, "apc-syr", aliases = {"Damascus Arabic", "Damascene Arabic"}, } m["acm-khu"] = { "Khuzestani Arabic", 1040944, "acm", } ----------------------------------------------------- -- Aramaic varieties -- ----------------------------------------------------- m["arc-bib"] = { "Biblical Aramaic", 843235, "arc", family = "sem-are", } m["arc-cpa"] = { "Christian Palestinian Aramaic", 60790119, "arc", family = "sem-arw", aliases = {"Melkite Aramaic", "Palestinian Syriac", "Syropalestinian Aramaic"}, } m["arc-imp"] = { "Imperial Aramaic", 7079491, "arc", aliases = {"Official Aramaic"}, } m["arc-hat"] = { "Hatran Aramaic", 3832926, "arc", family = "sem-are", } m["arc-jla"] = { "Jewish Literary Aramaic", 105952842, "arc", pseudo_families = "qfa-jew", } m["arc-nab"] = { "Nabataean Aramaic", 36178, "arc", } m["arc-old"] = { "Old Aramaic", 3398392, "arc", } m["arc-pal"] = { "Palmyrene Aramaic", 1510113, "arc", family = "sem-arw", } m["tmr"] = { "Jewish Babylonian Aramaic", 33407, "arc", family = "sem-ase", pseudo_families = "qfa-jew", } m["jpa"] = { "Jewish Palestinian Aramaic", 948909, "arc", family = "sem-arw", aliases = {"Galilean Aramaic"}, pseudo_families = "qfa-jew", } ----------------------------------------------------- -- Hebrew varieties -- ----------------------------------------------------- m["hbo"] = { "Biblical Hebrew", 1982248, "he", aliases = {"Classical Hebrew"}, } m["he-mis"] = { "Mishnaic Hebrew", 1649362, "he", ancestors = "hbo", } m["he-med"] = { "Medieval Hebrew", 2712572, "he", ancestors = "he-mis", } m["he-IL"] = { "Israeli Hebrew", 8141, "he", } ---------------------------------------------------------------------------------------------------------------------- -- Ainu varieties -- ---------------------------------------------------------------------------------------------------------------------- m["ain-hok"] = { "Hokkaido Ainu", 20968488, "ain", aliases = {"Hokkaidō Ainu"}, } m["ain-kur"] = { "Kuril Ainu", 20967012, "ain", } m["ain-sak"] = { "Sakhalin Ainu", 20747371, "ain", } ---------------------------------------------------------------------------------------------------------------------- -- American indigenous varieties -- ---------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------- -- Inuit varieties -- ----------------------------------------------------- m["esi"] = { "North Alaskan Inupiatun", nil, "ik" } m["esk"] = { "Northwest Alaskan Inupiatun", 25559714, "ik" } ----------------------------------------------------- -- Iroquoian varieties -- ----------------------------------------------------- m["iro-ohu"] = { "Old Wendat", nil, "wdt", } m["iro-omo"] = { "Old Mohawk", nil, "moh", } m["iro-oon"] = { "Old Onondaga", nil, "ono", } ----------------------------------------------------- -- Tupi-Guarani varieties -- ----------------------------------------------------- -- Old Tupi varieties m["tpw-lga"] = { "Língua Geral Amazônica", 18275323, "tpw", aliases = {"Língua Geral"}, } m["tpw-lgp"] = { "Língua Geral Paulista", 2669239, "tpw", } ---------------------------------------------------------------------------------------------------------------------- -- Austroasiatic varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Khmer varieties m["okz-ang"] = { "ခမေန်တြေံ အာန်ခေါဝ်ရဳယာန်", nil, "okz", wikipedia_article = "Khmer language#Historical periods", } m["okz-pre"] = { "ခမေန်တြေံ ကၠာ-အာန်ခေါဝ်ရဳယာန်", nil, "okz", wikipedia_article = "Khmer language#Historical periods", } -- Central Nicobarese varieties m["ncb-cam"] = { "Camorta", 5026908, "ncb", aliases = {"Kamorta"}, } m["ncb-kat"] = { "Katchal", 17064263, "ncb", aliases = {"Tehnu"}, } m["ncb-nan"] = { "Nancowry", 6962504, "ncb", aliases = {"Nankwari"}, } ---------------------------------------------------------------------------------------------------------------------- -- Austronesian varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Malay and related varieties m["ms-old"] = { -- this has the ISO code 'omy' "Old Malay", nil, "ms", } m["ms-cla"] = { "Classical Malay", nil, "ms", ancestors = "ms-old", } m["pse-bsm"] = { "Besemah", nil, "pse", } m["bew-kot"] = { "Betawi Kota", nil, "bew", aliases = {"Urban Betawi"}, -- in Jakarta } -- Philippine varieties m["xnn"] = { "Northern Kankanaey", 12953609, "kne", aliases = {"Northern Kankanay", "Northern Kankana-ey"}, } m["tl-old"] = { "Old Tagalog", 12967437, "tl", } m["tl-cls"] = { "Classical Tagalog", nil, "tl", } ---------------------------------------------------------------------------------------------------------------------- -- Caucasian varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Kartvelian varieties m["ka-mid"] = { "Middle Georgian", nil, "ka", ancestors = "oge", } ---------------------------------------------------------------------------------------------------------------------- -- Dravidian varieties -- ---------------------------------------------------------------------------------------------------------------------- m["ta-mid"] = { "Middle Tamil", 20987434, "ta", } m["kn-hav"] = { "Havigannada", 24276369, "kn", } m["kn-kun"] = { "Kundagannada", 6444255, "kn", } ---------------------------------------------------------------------------------------------------------------------- -- Indo-European varieties -- ---------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- -- Albanian varieties -- -------------------------------------------------------------------------------------- m["aln"] = { "Gheg Albanian", 181037, "sq", aliases = {"Gheg"}, } m["aae"] = { "Arbëresh Albanian", 1075302, "als", aliases = {"Arbëreshë", "Arbëresh"}, } m["aat"] = { "Arvanitika Albanian", 29347, "als", aliases = {"Arvanitika"}, } m["als"] = { "Tosk Albanian", 180937, "sq", aliases = {"Tosk"}, } -------------------------------------------------------------------------------------- -- Armenian varieties -- -------------------------------------------------------------------------------------- m["hyw"] = { "Western Armenian", 180945, "hy", } m["hye"] = { "Eastern Armenian", 181059, "hy", } -------------------------------------------------------------------------------------- -- Balto-Slavic varieties -- -------------------------------------------------------------------------------------- ------------------------------------------------------------------------- -- Baltic varieties -- ------------------------------------------------------------------------- m["bat-pro"] = { "ဗေါဝ်တေတ်-အခိုက်ကၞာ", 1703347, "ine-bsl-pro", } m["bat-dni"] = { "Dnieper Baltic", 4163178, "bat-pro", family = "bat", aliases = {"Dniepr Baltic", "Dnieper-Oka Baltic", "Dniepr-Oka Baltic"}, } m["bat-gol"] = { "Golyad", 4142855, "bat-dni", aliases = {"Eastern Galindian", "East Galindian"}, } ------------------------------------------------------------------------- -- Slavic varieties -- ------------------------------------------------------------------------- ----------------------------------------------------- -- Bulgarian varieties -- ----------------------------------------------------- m["cu-bgm"] = { "ဗူလ်ဂရဳယာန် လဒေါဝ်", 12294897, "cu", ancestors = "cu" } ----------------------------------------------------- -- Church Slavonic varieties -- ----------------------------------------------------- -- Old Moscow Church Slavonic deleted as it seems not distinct enough from Russian (Synodal) Church Slavonic. m["zls-chs-ru"] = { "Russian Church Slavonic", 21662400, "zls-chs", aliases = {"Synodal Church Slavonic", "New Moscow Church Slavonic", "Novomoskovsk Church Slavonic"}, } m["zls-chs-uk"] = { "Ukrainian Church Slavonic", 12153548, "zls-chs", aliases = {"Rusyn Church Slavonic", "Belarusian Church Slavonic"}, } --[=[ -- Not sure about these yet. m["zls-chs-bg"] = { "Bulgarian Church Slavonic", nil, "zls-chs", } m["zls-chs-cs"] = { "Czech Church Slavonic", nil, "zls-chs", } m["zls-chs-hr"] = { "Croatian Church Slavonic", nil, "zls-chs", } m["zls-chs-mk"] = { "Macedonian Church Slavonic", nil, "zls-chs", } m["zls-chs-ro"] = { "Romanian Church Slavonic", nil, "zls-chs", } m["zls-chs-sr"] = { "Serbian Church Slavonic", nil, "zls-chs", } ]=] ----------------------------------------------------- -- Czech varieties -- ----------------------------------------------------- m["cs-ear"] = { "Early Modern Czech", nil, "cs", ancestors = "zlw-ocs" } ----------------------------------------------------- -- East Slavic varieties -- ----------------------------------------------------- m["zle-ops"] = { "Old Pskovian", 4167885, "zle-ono", } m["zle-mru"] = { "ရုသျှာ လဒေါဝ်", 35228, "ru", "Cyrs", ancestors = "orv", translit = "ru-translit", strip_diacritics = { Cyrs = { remove_diacritics = c.grave .. c.acute .. c.diaer, }, }, } m["zle-mbe"] = { "Middle Belarusian", 13211, "zle-ort", ancestors = "zle-ort", } m["zle-muk"] = { "ယူကရိန် လဒေါဝ်", 13211, "zle-ort", ancestors = "zle-ort", } m["uk-CA"] = { "Canadian Ukrainian", 4161010, "uk", } m["crp-cpr-kya"] = { "Kyakhta Chinese Pidgin Russian", 1062960, "crp-cpr", } ----------------------------------------------------- -- Polish varieties -- ----------------------------------------------------- m["zlw-mpl"] = { "ပဝ်လာန် လဒေါဝ်", 402878, "pl", ancestors = "zlw-opl", strip_diacritics = { remove_diacritics = c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ó", "ó", "Ś", "ś", "Ź", "ź"}, }, } m["pl-gre"] = { "Greater Polish", 4106789, "pl", } m["pl-les"] = { "Lesser Polish", 361709, "pl", } m["pl-mas"] = { "Masovian Polish", 4274559, "pl", } m["pl-gor"] = { "Goral", 452889, "pl", } ----------------------------------------------------- -- Serbo-Croatian varieties -- ----------------------------------------------------- m["ckm"] = { "Chakavian Serbo-Croatian", 337565, "sh", aliases = {"Čakavian"}, } m["kjv"] = { "Kajkavian Serbo-Croatian", 838165, "sh", } m["sh-tor"] = { -- Linguist code srp-tor "Torlakian Serbo-Croatian", 1078803, "sh", aliases = {"Torlak"}, } -------------------------------------------------------------------------------------- -- Celtic varieties -- -------------------------------------------------------------------------------------- ----------------------------------------------------- -- Brythonic varieties -- ----------------------------------------------------- m["bry-ear"] = { "Early Brythonic", nil, "cel-bry-pro", } m["bry-lat"] = { "Late Brythonic", nil, "cel-bry-pro", } ----------------------------------------------------- -- Gaulish varieties -- ----------------------------------------------------- m["xcg"] = { "Cisalpine Gaulish", 3832927, "cel-gau", } m["xtg"] = { "Transalpine Gaulish", 29977, "cel-gau", } ----------------------------------------------------- -- Welsh varieties -- ----------------------------------------------------- m["cy-nor"] = { "North Wales Welsh", 13127692, "cy", aliases = {"North Walian Welsh", "Northern Welsh"}, } m["cy-sou"] = { "South Wales Welsh", 13127689, "cy", aliases = {"South Walian Welsh", "Southern Welsh"}, } -------------------------------------------------------------------------------------- -- Germanic varieties -- -------------------------------------------------------------------------------------- -- Proto-West Germanic varieties m["frk"] = { "Frankish", 10860505, "gmw-pro", family = "gmw-frk", aliases = {"Old Frankish"}, } m["gem-sue"] = { "Suevic", 134600275, "gmw-pro", aliases = {"Suebian"}, } m["gmw-afr-pro"] = { "Proto-Anglo-Frisian", 134603379, "gmw-nsg-pro", family = "gmw-afr", } m["gmw-nsg-pro"] = { "Proto-North Sea Germanic", 134603374, "gmw-pro", family = "gmw-nsg", aliases = {"Proto-Ingvaeonic"}, } ----------------------------------------------------- -- Dutch varieties -- ----------------------------------------------------- m["nl-BE"] = { "Belgian Dutch", 34147, "nl", aliases = {"Flemish", "Flemish Dutch", "Southern Dutch"}, } ----------------------------------------------------- -- English and Scots varieties -- ----------------------------------------------------- -- English varieties m["en-AU"] = { "Australian English", 44679, "en", } m["en-GB"] = { "British English", 7979, "en", } m["en-GB-SCT"] = { "Scottish English", 1553250, "en-GB", } m["en-GB-WLS"] = { "Welsh English", 2363292, "en-GB", } m["en-IM"] = { "Manx English", 6753295, "en-GB", } m["en-aae"] = { "Australian Aboriginal English", 783347, "en-AU", } m["en-ear"] = { "Early Modern English", 1472196, "en", ancestors = "enm", aliases = {"Early New English"}, } m["en-geo"] = { "Geordie", 653421, "en", ancestors = "enm-nor", } m["en-IE"] = { -- FIXME: "IE" doesn't cover Northern Ireland "Irish English", 665624, "en", } m["en-uls"] = { "Ulster English", 6840826, "en-IE", } m["en-GB-NIR"] = { "Northern Irish English", 6840826, -- actually the code for Ulster English "en-uls", } m["en-NNN"] = { -- NA = Namibia; NNN is NATO 3-letter code for North America "North American English", 7053766, "en", ietf_subtag = "en-021" -- 021 = UN M49 code for "Northern America" (i.e. North America wihout Central America or the Caribbean) } m["en-US"] = { "American English", 7976, "en-NNN", } m["en-NZ"] = { "New Zealand English", 44661, "en" } m["en-ZA"] = { "South African English", 1156228, "en" } m["en-US-CA"] = { "California English", 1026812, "en-US", } m["en-CA"] = { "Canadian English", 44676, "en-US", } m["en-HK"] = { "Hong Kong English", 1068863, "en", } m["en-IN"] = { "Indian English", 1348800, "en", } m["pld"] = { "Polari", 1359130, "en", } -- Scots varieties m["sco-ins"] = { "Insular Scots", 16919205, "sco", } m["sco-uls"] = { "Ulster Scots", 201966, "sco", } m["sco-nor"] = { "Northern Scots", 16928150, "sco", } m["sco-sou"] = { "Southern Scots", 7570457, "sco", aliases = {"South Scots", "Borders Scots"}, } -- Middle English varieties m["enm-esc"] = { -- Part of Middle English until it developed into Middle Scots. "Early Scots", 5326738, "enm", ancestors = "enm-nor", aliases = {"Old Scots", "Scottish Middle English"}, } m["enm-emi"] = { "East Midland Middle English", 134238810, "enm", ancestors = "ang-ang", -- Technically ang-mer, but attested Mercian is mostly WM IIRC } m["enm-ken"] = { "Kentish Middle English", 134238532, "enm", ancestors = "ang-ken", } m["enm-nor"] = { "Northern Middle English", 134238541, "enm", ancestors = "ang-nor", } m["enm-sou"] = { "Southern Middle English", 134238528, "enm", ancestors = "ang-wsx", } m["enm-wmi"] = { "West Midland Middle English", 134238824, "enm", ancestors = "ang-mer", } -- Old English varieties -- Includes both Mercian and Northumbrian. m["ang-ang"] = { "Anglian Old English", 121142917, "ang", } m["ang-ken"] = { "Kentish Old English", 11687485, "ang", } m["ang-mer"] = { "Mercian Old English", 602072, "ang-ang", } m["ang-nor"] = { "Northumbrian Old English", 1798915, "ang-ang", } m["ang-wsx"] = { "West Saxon Old English", 2658603, "ang", } ----------------------------------------------------- -- High German varieties -- ----------------------------------------------------- -- (modern) German varieties m["de-AT"] = { "Austrian German", 306626, "de", } m["de-AT-vie"] = { "Viennese German", 56474, "de-AT", } m["de-CH"] = { "Switzerland German", 1366643, "de", aliases = {"Schweizer Hochdeutsch", "Swiss Standard German", "Swiss High German"}, } m["de-bal"] = { "Baltic German", 15785413, "de", } m["de-ear"] = { "Early New High German", 1472199, "de", ancestors = "gmh", aliases = {"Early Modern High German"}, } m["ksh"] = { "Kölsch", 4624, "gmw-cfr", } m["pfl"] = { "Palatine German", 23014, "gmw-rfr", aliases = {"Pfälzisch", "Pälzisch", "Palatinate German"}, } m["sli"] = { "Silesian East Central German", 152965, "gmw-ecg", aliases = {"Silesian"}, } m["sxu"] = { "Upper Saxon German", 699284, "gmw-ecg", } -- Old High German varieties m["lng"] = { "Lombardic", 35972, "goh", } -- Alemannic German varieties m["gsw-low"] = { "Low Alemannic German", 503724, "gsw", } m["gsw-FR-als"] = { "Alsatian Alemannic German", 8786, "gsw-low", } m["gsw-hig"] = { "High Alemannic German", 503728, "gsw", } m["gsw-hst"] = { "Highest Alemannic German", 687538, "gsw", } m["wae"] = { "Walser German", 680517, "gsw-hst", } ----------------------------------------------------- -- Low German varieties -- ----------------------------------------------------- m["nds-de"] = { "German Low German", 25433, "nds", ietf_subtag = "nds-DE", -- should we make this the actual code? wikimedia_codes = "nds", } m["nds-nl"] = { "Dutch Low Saxon", 516137, "nds", ietf_subtag = "nds-NL", -- should we make this the actual code? wikimedia_codes = "nds-nl", } m["act"] = { "Achterhoeks", 153627, "nds-nl", aliases = {"Achterhoek", "Achterhooks"}, } m["drt"] = { "Drents", 2736709, "nds-nl", aliases = {"Drèents", "Dreins", "Dreints", "Drints"}, } m["frs"] = { "East Frisian Low German", 149208, "nds-de", aliases = {"East Frisian", "East Frisian Low Saxon"}, } m["gos"] = { "Gronings", 508854, "nds-nl", aliases = {"Grunnegs", "Grönnegs"}, } m["nds-lpr"] = { "Low Prussian", 33982, "nds-de", } m["sdz"] = { "Sallands", 3436668, "nds-nl", aliases = {"Sallaans", "Sallaands"}, } m["stl"] = { "Stellingwerfs", 506010, "nds-nl", aliases = {"Stellingwarfs"}, } m["twd"] = { "Twents", 497363, "nds-nl", aliases = {"Tweants"}, } m["vel"] = { "Veluws", 2484810, "nds-nl", } m["wep"] = { "Westphalian", 505655, "nds-de", aliases = {"Westfalish", "Westphalien"}, } ----------------------------------------------------- -- North Frisian varieties -- ----------------------------------------------------- m["frr-ins"] = { "Insular North Frisian", 110629610, "frr", } m["frr-fam"] = { "Föhr-Amrum North Frisian", 110629601, "frr-ins", } m["frr-foh"] = { "Föhr North Frisian", 28185, "frr-fam", aliases = {"Föhr Frisian", "Fering", "Ferring", -- Glottolog }, varieties = {"Aasdring", "Weesdring"}, } m["frr-amr"] = { "Amrum North Frisian", 28192, "frr-fam", aliases = {"Amrum Frisian", "Amrum", "Öömrang"}, } m["frr-hel"] = { "Heligoland North Frisian", 28086, "frr-ins", aliases = {"Heligoland Frisian", "Halunder", "Heligolandic Frisian", "Heligolandic North Frisian", "Helgoland Frisian", "Helgoland North Frisian", "Helgoland"}, } m["frr-syl"] = { "Sylt North Frisian", 28181, "frr-ins", aliases = {"Sylt Frisian", "Söl'ring", "Sölreng", -- Glottolog }, } m["frr-mai"] = { "Mainland North Frisian", 110629626, "frr", } m["frr-hal"] = { "Halligen North Frisian", 28177, "frr-mai", aliases = {"Halligen Frisian", "Halifreesk", "Hallingen Frisian", "Hallingen North Frisian", "Hallingen", -- Glottolog }, } m["frr-moo"] = { "Mooring North Frisian", 28187, "frr-mai", aliases = {"Bökingharde North Frisian", "Bökingharde Frisian", "Böökinghiirder frasch", "Mooring", "Moring", }, varieties = {{"East Mooring", "Ostermooring"}, {"West Mooring", "Westermooring"}}, } m["frr-kar"] = { "Karrharde North Frisian", 28191, "frr-mai", aliases = {"Karrharde Frisian", "Karrharder", }, } m["frr-goe"] = { -- Technically this refers to three adjacent dialects (Northern, Central and Southern), the latter of which went -- extinct in 1980-1981. As a result, Glottolog speaks of "Norder-Mittelgoesharde", referring to the remaining two. "Goesharde North Frisian", 28183, "frr-mai", aliases = {"Norder-Mittelgoesharde North Frisian", "Norder-Mittelgoesharde Frisian", "Norder-Mittelgoesharde", "Goesharde Frisian", "Goesharde", "Gooshiirder", }, } m["frr-wie"] = { "Wiedingharde North Frisian", 28171, "frr-mai", aliases = {"Wiedingharde Frisian", "Wiedingharde", "Wiringhiirder freesk", }, } ----------------------------------------------------- -- Old Norse varieties -- ----------------------------------------------------- m["non-grn"] = { "Greenlandic Norse", 855236, "non-own", } m["non-oen"] = { "Old East Norse", 10498031, "non", ancestors = "non", } m["non-own"] = { "Old West Norse", 2377483, "non", ancestors = "non", } ----------------------------------------------------- -- Old Swedish varieties -- ----------------------------------------------------- m["gmq-osw-lat"] = { "Late Old Swedish", 10723594, "gmq-osw", ancestors = "gmq-osw", } -------------------------------------------------------------------------------------- -- Greek varieties -- -------------------------------------------------------------------------------------- m["qsb-grc"] = { "Pre-Greek", 965052, "und", family = "qfa-sub", } m["grc-aeo"] = { "Aeolic Greek", 406373, "grc", aliases = {"Lesbic Greek", "Lesbian Greek", "Aeolian Greek"}, } m["grc-arc"] = { "Arcadian Greek", nil, "grc-arp", } m["grc-arp"] = { "Arcadocypriot Greek", 499602, "grc", } m["grc-att"] = { "Attic Greek", 506588, "grc", } m["grc-boi"] = { "Boeotian Greek", 406373, "grc-aeo", } m["grc-cyp"] = { "Cypriot Ancient Greek", -- to distinguish from Cypriot Greek below nil, "grc-arp", } m["grc-dor"] = { "Doric Greek", 285494, "grc", } m["grc-ela"] = { "Elean Greek", nil, "grc", } m["grc-epi"] = { "Epic Greek", 990062, "grc", aliases = {"Homeric Greek"}, } m["grc-ion"] = { "Ionic Greek", 504165, "grc", } m["grc-koi"] = { "ဂရေတ် ခါဝ်အိန်", 107358, "grc", ancestors = "grc-att", aliases = {"Hellenistic Greek"}, } m["grc-kre"] = { "Cretan Ancient Greek", -- to distinguish from Cretan Greek below nil, "grc-dor", } m["grc-opl"] = { "Opuntian Locrian", nil, "grc", } m["grc-ozl"] = { "Ozolian Locrian", nil, "grc", } m["grc-pam"] = { "Pamphylian Greek", 2271793, "grc", } m["grc-ths"] = { "Thessalian Greek", 406373, "grc-aeo", } m["gkm"] = { "Byzantine Greek", 36387, "grc", ancestors = "grc-koi", aliases = {"Medieval Greek"}, } m["el-cyp"] = { "Cypriot Greek", 245899, "el", aliases = {"Cypriotic Greek"}, } m["el-pap"] = { "Paphian Greek", nil, "el", } m["el-crt"] = { "Cretan Greek", 588306, "el", } m["el-kth"] = { "Katharevousa", 35961, "el", "Polyt", ancestors = "gkm", aliases = {"Katharevousa Greek"}, -- Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["el-kal"] = { "Kaliarda", 12878658, "el", } -------------------------------------------------------------------------------------- -- Indo-Iranian varieties -- -------------------------------------------------------------------------------------- ------------------------------------------------------------------------- -- Indo-Aryan varieties -- ------------------------------------------------------------------------- -- reconstructed intermediate stages m["pra-pro"] = { "Proto-New Indo-Aryan", nil, "pra", } m["inc-ash-pro"] = { "Proto-Middle Indo-Aryan", nil, "inc-ash", } m["inc-mit"] = { "Mitanni", 1986700, "inc-pro", } m["bra-old"] = { "Old Braj", nil, "bra", } -- Apabhramsas m["inc-aav"] = { "အဝဟတာ", nil, "inc-apa", aliases = {"Abahattha"}, } m["inc-asa"] = { "သဥူရေသဳနဳ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-agu"] = { "ဂူဂျာရာ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-aka"] = { "ခေပ်သမဳရဳ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-ama"] = { "မဟာရာတ်သပ်ထရဳ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-ata"] = { "တာကာ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-avr"] = { "ဝရာခါဒါ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } -- Assamese varieties m["as-bkm"] = { "Barpetia Kamrupi Assamese", 30642960, "as", } m["as-nkm"] = { "Nalbaria Kamrupi Assamese", 85787678, "as", } m["as-pkm"] = { "Palasbaria Kamrupi Assamese", nil, "as", } -- Bengali varieties m["bn-dvn"] = { "Dhakaiya Vaṅga Bengali", 48726851, "bn", -- Eastern Bengali variety } m["bn-nvn"] = { "Noakhailla Vaṅga Bengali", 107548681, "bn", -- Eastern Bengali variety } -- Dhivehi varieties m["dv-old"] = { "Old Dhivehi", 117790875, "dv", } m["dv-mul"] = { "Mulaku Dhivehi", nil, "dv", aliases = {"Mulaku Divehi", "Mulaku Bas"}, } m["dv-huv"] = { "Huvadhu Dhivehi", nil, "dv", aliases = {"Huvadhu Divehi", "Huvadhu Bas"}, } m["dv-add"] = { "Addu Dhivehi", nil, "dv", aliases = {"Addu Divehi", "Addu Bas"}, } -- Gujarati varieties m["gu-kat"] = { "Kathiyawadi", nil, "gu", aliases = {"Kathiyawadi Gujarati", "Kathiawadi"}, } m["gu-lda"] = { "Lisan ud-Dawat Gujarati", nil, "gu", aliases = {"Lisan ud-Dawat", "LDA"}, } -- Hindi varieties m["hi-mum"] = { "Bombay Hindi", 3543151, "hi", aliases = {"Mumbai Hindi", "Bambaiyya Hindi"}, } m["hi-mid"] = { "Middle Hindi", nil, "inc-ohi", ancestors = "inc-ohi", } -- Konkani varieties m["kok-mid"] = { "Middle Konkani", nil, "kok", aliases = {"Medieval Konkani"}, } m["kok-old"] = { "Old Konkani", nil, "kok", aliases = {"Early Konkani"}, } -- Prakrits m["pra-ard"] = { "အာတ်ဓၟဂါတ်ဒဳ ပရာကရေတ်", 35217, "pra", aliases = {"Ardhamagadhi"}, } m["pra-hel"] = { "ဟေဠူ ပရာကရေတ်", 15080869, "pra", aliases = {"Elu", "Elu Prakrit", "Helu"}, } m["pra-kha"] = { "ခါဿာ ပရာကရေတ်", nil, "pra", aliases = {"Khasa"}, } m["pra-mag"] = { "မဂ္ဂဒိ ပရာကရေတ်", -- Not to be confused with Magahi (mag) 2652214, "pra", aliases = {"Magadhi"}, } m["pra-mah"] = { "မဟာရာတ်ထရဳ ပရာကရေတ်", 2586773, "pra", aliases = {"Maharashtri Prakrit", "Maharastri", "Maharashtri"}, } m["pra-pai"] = { "ပါအေတ်သာသဳ ပရာကရေတ်", 2995607, "pra-sau", aliases = {"Paisaci", "Paisachi"}, ancestors = "pra-sau" } m["pra-sau"] = { "သောရာသေနဳ ပရာကရေတ်", 2452885, "pra", aliases = {"Sauraseni", "Shauraseni"}, } m["pra-ava"] = { "အဗါန်တဳ", nil, "pra", aliases = {"Avanti Prakrit"}, } m["pra-pra"] = { "ပရာသဳယျာ", nil, "pra", aliases = {"Pracya Prakrit"}, } m["pra-bah"] = { "ပါလိကဳ", nil, "pra", aliases = {"Bahliki Prakrit"}, } m["pra-dak"] = { "ထေတ်သဳနတာယျ", nil, "pra", aliases = {"Daksinatya Prakrit"}, } m["pra-sak"] = { "သာကာရဳ", nil, "pra", aliases = {"Sakari Prakrit"}, } m["pra-can"] = { "ခေန်ဒါလဳ", nil, "pra", aliases = {"Candali Prakrit"}, } m["pra-sab"] = { "သာဗါရဳ", nil, "pra", aliases = {"Sabari Prakrit"}, } m["pra-abh"] = { "အဖိရဳ", nil, "pra", aliases = {"Abhiri Prakrit"}, } m["pra-dra"] = { "ဒရာမဳလဳ", nil, "pra", aliases = {"Dramili Prakrit"}, } m["pra-odr"] = { "အဝ်ဒရဳ", nil, "pra", aliases = {"Odri Prakrit"}, } -- Punjabi varieties m["pnb"] = { "Western Punjabi", 58635, "pa", "pa-Arab", } -- Sanskrit varieties m["vsn"] = { "Vedic Sanskrit", 36858, "sa", } m["cls"] = { "Classical Sanskrit", 9333703, "sa", } m["sa-bhs"] = { "Buddhist Hybrid Sanskrit", 248758, "sa", } m["sa-bra"] = { "Brahmanic Sanskrit", 139822891, "vsn", } m["sa-epi"] = { "Epic Sanskrit", 56702805, "cls", } m["sa-neo"] = { "New Sanskrit", nil, "sa", } m["sa-rig"] = { "Rigvedic Sanskrit", 139822680, "vsn", } -- Sinhalese varieties m["si-med"] = { "Medieval Sinhalese", nil, "si", aliases = {"Medieval Sinhala"}, } ------------------------------------------------------------------------- -- Iranian varieties -- ------------------------------------------------------------------------- m["qsb-bma"] = { "the BMAC substrate", 133187435, "und", family = "qfa-sub", aliases = {"the Bactria-Margiana substrate", "the Bactria-Margiana Archaeological Complex substrate"}, } -- Historical and current Iranian dialects m["ae-old"] = { "Old Avestan", 29572, "ae", aliases = {"Gathic Avestan"}, } m["ae-yng"] = { "Younger Avestan", 29572, "ae-old", aliases = {"Young Avestan"}, } m["bcc"] = { "Southern Balochi", 33049, "bal", aliases = {"Southern Baluchi"}, } m["bgp"] = { "Eastern Balochi", 33049, "bal", aliases = {"Eastern Baluchi"}, } m["bgn"] = { "Western Balochi", 33049, "bal", aliases = {"Western Baluchi"}, } m["bsg-ban"] = { "Bandari", nil, "bsg", } m["bsg-hor"] = { "Hormozi", nil, "bsg", } m["bsg-min"] = { "Minabi", nil, "bsg", } m["kho-old"] = { "Old Khotanese", nil, "kho", } m["kho-lat"] = { "Late Khotanese", nil, "kho-old", } m["peo-ear"] = { "Early Old Persian", nil, "peo", } m["peo-lat"] = { "Late Old Persian", nil, "peo", } m["pal-ear"] = { "Early Middle Persian", nil, "pal", } m["pal-lat"] = { "Late Middle Persian", nil, "pal", ancestors = "pal-ear", } m["ps-nwe"] = { "Northwestern Pashto", nil, "ps", } m["ps-cgi"] = { "Central Ghilzay", nil, "ps-nwe", } m["ps-mah"] = { "Mahsudi", nil, "ps-nwe", } m["ps-nea"] = { "Northeastern Pashto", nil, "ps", } m["ps-afr"] = { "Afridi", nil, "ps-nea", } m["ps-bng"] = { "Bangash", nil, "ps-nea", } m["ps-xat"] = { "Khatak", nil, "ps-nea", } m["ps-pes"] = { "Peshawari", nil, "ps-nea", } m["ps-sea"] = { "Southeastern Pashto", nil, "ps", } m["ps-ban"] = { "Bannu", nil, "ps-sea", } m["ps-kak"] = { "Kakari", nil, "ps-sea", } m["ps-ser"] = { "Sher", nil, "ps-sea", } m["ps-waz"] = { "Waziri", 12274473, "ps-sea", } m["ps-swe"] = { "Southwestern Pashto", nil, "ps", } m["ps-kan"] = { "Kandahari", nil, "ps-swe", } m["ps-jad"] = { "Jadrani", nil, "ps", ancestors = "ira-pat-pro" } m["xme-azr"] = { "Old Azari", nil, "xme-ott", aliases = {"Old Azeri", "Azari", "Azeri", "Āḏarī", "Adari", "Adhari"}, } m["xme-ttc-cen"] = { "Central Tati", nil, "xme-ott", } m["xme-ttc-eas"] = { "Eastern Tati", nil, "xme-ott", } m["xme-ttc-nor"] = { "Northern Tati", nil, "xme-ott", } m["xme-ttc-sou"] = { "Southern Tati", nil, "xme-ott", } m["xme-ttc-wes"] = { "Western Tati", nil, "xme-ott", } m["xmn"] = { "Manichaean Middle Persian", nil, "pal-lat", } m["fa-ear"] = { "Early New Persian", 127413796, "fa", ancestors = "pal-lat", translit = "fa-cls-translit", } m["fa-cls"] = { "Classical Persian", 9168, "fa", ancestors = "fa-ear", translit = "fa-cls-translit", } m["fa-ira"] = { "Iranian Persian", 3513637, "fa", aliases = {"Modern Persian", "Western Persian"}, translit = "fa-ira-translit", } m["prs"] = { "Dari", 178440, "fa", aliases = {"Dari Persian", "Central Persian", "Eastern Persian", "Afghan Persian"}, translit = "fa-cls-translit", } m["haz"] = { "Hazaragi", 33398, "prs", translit = "fa-cls-translit", } m["os-dig"] = { "Digor Ossetian", 3027861, "os", aliases = {"Digoron", "Digor"}, } m["os-iro"] = { "Iron Ossetian", nil, "os", aliases = {"Iron"}, } m["sog-ear"] = { "Early Sogdian", nil, "sog", } m["sog-lat"] = { "Late Sogdian", nil, "sog-ear", } m["ro-MD"] = { "Moldovan", 36392, "ro", aliases = {"Moldavian"}, } m["oru-kan"] = { "Kaniguram", 6363164, "oru", } m["oru-log"] = { "Logar", nil, "oru", } m["oos"] = { "Old Ossetic", 65455882, "xln", } m["oos-ear"] = { "Early Old Ossetic", nil, "oos", } m["oos-lat"] = { "Late Old Ossetic", nil, "oos", } m["rdb-jir"] = { "Jirofti", nil, "rdb", } m["rdb-kah"] = { "Kahnuji", nil, "rdb", } -- Southwestern Fars lects m["fay-bur"] = { "Burenjani", nil, "fay", } m["fay-bsh"] = { "Bushehri", nil, "fay", } m["fay-dsh"] = { "Dashtaki", nil, "fay", } m["fay-dav"] = { "Davani", 5228140, "fay", } m["fay-eze"] = { "Emamzada Esmaili", nil, "fay", } m["fay-gav"] = { "Gavkoshaki", nil, "fay", } m["fay-kho"] = { "Khollari", nil, "fay", } m["fay-kon"] = { "Kondazi", nil, "fay", } m["fay-kzo"] = { "Old Kazeruni", nil, "fay", } m["fay-mas"] = { "Masarami", nil, "fay", } m["fay-pap"] = { "Papuni", nil, "fay", } m["fay-sam"] = { "Samghani", nil, "fay", } m["fay-shr"] = { "Shirazi", nil, "fay", } m["fay-sho"] = { "Old Shirazi", nil, "fay", } m["fay-kar"] = { "Khargi", nil, "fay", } m["fay-sor"] = { "Sorkhi", nil, "fay", } -- Talysh lects m["tly-cen"] = { "Central Talysh", nil, "tly", } m["tly-asa"] = { "Asalemi", nil, "tly-cen", } m["tly-kar"] = { "Karganrudi", nil, "tly-cen", } m["tly-tul"] = { "Tularudi", nil, "tly-cen", } m["tly-tal"] = { "Taleshdulabi", nil, "tly-cen", } m["tly-nor"] = { "Northern Talysh", nil, "tly", } m["tly-aze"] = { "Azerbaijani Talysh", nil, "tly-nor", } m["tly-anb"] = { "Anbarani", nil, "tly-nor", } m["tly-sou"] = { "Southern Talysh", nil, "tly", } m["tly-fum"] = { "Fumani", nil, "tly-sou", } m["tly-msu"] = { "Masulei", nil, "tly-sou", } m["tly-msa"] = { "Masali", nil, "tly-sou", } m["tly-san"] = { "Shandarmani", nil, "tly-sou", } -- Tafreshi lects m["xme-amo"] = { "Amorehi", nil, "xme-taf", } m["atn"] = { "Ashtiani", 3436590, "xme-taf", } m["xme-bor"] = { "Borujerdi", nil, "xme-taf", } m["xme-ham"] = { "Hamadani", 6302426, "xme-taf", } m["xme-kah"] = { "Kahaki", nil, "xme-taf", } m["vaf"] = { "Vafsi", 32611, "xme-taf", } -- Kermanic lects m["kfm"] = { "Khunsari", 6403030, "xme-ker", } m["xme-mah"] = { "Mahallati", nil, "xme-ker", } m["xme-von"] = { "Vonishuni", nil, "xme-ker", } m["xme-bdr"] = { "Badrudi", nil, "xme-ker", } m["xme-del"] = { "Delijani", nil, "xme-ker", } m["xme-kas"] = { "Kashani", nil, "xme-ker", } m["xme-kes"] = { "Kesehi", nil, "xme-ker", } m["xme-mey"] = { "Meymehi", nil, "xme-ker", } m["ntz"] = { "Natanzi", 6968399, "xme-ker", } m["xme-abz"] = { "Abuzeydabadi", nil, "xme-ker", } m["xme-aby"] = { "Abyanehi", nil, "xme-ker", } m["xme-far"] = { "Farizandi", nil, "xme-ker", } m["xme-jow"] = { "Jowshaqani", nil, "xme-ker", } m["xme-nas"] = { "Nashalji", nil, "xme-ker", } m["xme-qoh"] = { "Qohrudi", nil, "xme-ker", } m["xme-yar"] = { "Yarandi", nil, "xme-ker", } m["soj"] = { "Soi", 7930463, "xme-ker", aliases = {"Sohi"}, } m["xme-tar"] = { "Tari", nil, "xme-ker", } m["gzi"] = { "Gazi", 5529130, "xme-ker", } m["xme-sed"] = { "Sedehi", nil, "xme-ker", } m["xme-ard"] = { "Ardestani", nil, "xme-ker", } m["xme-zef"] = { "Zefrehi", nil, "xme-ker", } m["xme-isf"] = { "Isfahani", nil, "xme-ker", } m["xme-kaf"] = { "Kafroni", nil, "xme-ker", } m["xme-vrz"] = { "Varzenehi", nil, "xme-ker", } m["xme-xur"] = { "Khuri", nil, "xme-ker", } m["nyq"] = { "Nayini", 6983146, "xme-ker", } m["xme-ana"] = { "Anaraki", nil, "xme-ker", } m["gbz"] = { "Zoroastrian Dari", 32389, "xme-ker", aliases = {"Behdināni", "Gabri", "Gavrŭni", "Gabrōni"}, } m["xme-krm"] = { "Kermani", nil, "xme-ker", } m["xme-yaz"] = { "Yazdi", nil, "xme-ker", } m["xme-bid"] = { "Bidhandi", nil, "xme-ker", } m["xme-bij"] = { "Bijagani", nil, "xme-ker", } m["xme-cim"] = { "Chimehi", nil, "xme-ker", } m["xme-han"] = { "Hanjani", nil, "xme-ker", } m["xme-kom"] = { "Komjani", nil, "xme-ker", } m["xme-nar"] = { "Naraqi", nil, "xme-ker", } m["xme-nus"] = { "Nushabadi", nil, "xme-ker", } m["xme-qal"] = { "Qalhari", nil, "xme-ker", } m["xme-trh"] = { "Tarehi", nil, "xme-ker", } m["xme-val"] = { "Valujerdi", nil, "xme-ker", } m["xme-var"] = { "Varani", nil, "xme-ker", } m["xme-zor"] = { "Zori", nil, "xme-ker", } -- Ramandi lects m["tks-ebr"] = { "Ebrahimabadi", nil, "tks", } m["tks-sag"] = { "Sagzabadi", nil, "tks", } m["tks-esf"] = { "Esfarvarini", nil, "tks", } m["tks-tak"] = { "Takestani", nil, "tks", } m["tks-cal"] = { "Chali Tati", nil, "tks", aliases = {"Chāli"}, } m["tks-dan"] = { "Danesfani", nil, "tks", } m["tks-xia"] = { "Khiaraji", nil, "tks", } m["tks-xoz"] = { "Khoznini", nil, "tks", } -- Shughni dialects m["sgh-bro"] = { "Bartangi-Oroshori", nil, "sgh", } m["sgh-bar"] = { "Bartangi", nil, "sgh-bro", } m["sgh-oro"] = { "Oroshori", nil, "sgh-bro", aliases = {"Roshorvi"}, } m["sgh-rsx"] = { "Roshani-Khufi", nil, "sgh", } m["sgh-xuf"] = { "Khufi", 2562249, "sgh-rsx", aliases = {"Xufi", "Xūfī"}, } m["sgh-ros"] = { "Roshani", 2597566, "sgh-rsx", aliases = {"Rushani", "Rōšāni"}, } m["sgh-xgb"] = { "Khughni-Bajui", nil, "sgh", } m["sgh-xug"] = { "Khughni", nil, "sgh-xgb", } m["sgh-baj"] = { "Bajui", nil, "sgh-xgb", } ------------------------------------------------------------------------- -- Nuristani varieties -- ------------------------------------------------------------------------- m["bsh-kat"] = { "Kativiri", 2605045, "bsh", aliases = {"Katə́viri"}, } m["xvi"] = { "Kamviri", 1193495, "bsh", aliases = {"Kamvíri"}, } m["bsh-mum"] = { "Mumviri", nil, "bsh", aliases = {"Mumvíri"}, } -------------------------------------------------------------------------------------- -- Italic varieties -- -------------------------------------------------------------------------------------- ------------------------------------------------------------------------- -- Latin varieties -- ------------------------------------------------------------------------- -- Latin varieties by period m["itc-ola"] = { "လပ်တေန်တြေံ", 12289, "la", "Latn, Ital", translit = { Ital = "Ital-translit" }, } m["itc-lan"] = { "Lanuvian", 16890829, "itc-ola", aliases = {"Lanuvine"}, } m["itc-pra"] = { "Praenestine", 16889772, "itc-ola", aliases = {"Praenestinian"}, } m["la-cla"] = { "လပ်တေန်ဝၚ်ဂန္ထ", 253854, "la", } m["la-vul"] = { "လပ်တေန်အရိုၚ်", 37560, "la-cla", } m["la-afr"] = { "African Romance", 162064, "roa-pro", } m["la-lat"] = { "လပ်တေန်လဇုဲ", 1503113, "la", ancestors = "la-cla", } m["la-med"] = { "လပ်တေန် ခေတ်လဒေါဝ်", 1163234, "la", ancestors = "la-lat", } m["la-eme"] = { "လပ်တေန်ခေတ်လဒေါဝ်ဗွဲမပြဟ်", nil, "la-med", } m["la-ecc"] = { "သာသနာခရေတ်လပ်တေန်", 1247932, "la", aliases = {"Church Latin", "Liturgical Latin"}, ancestors = "la-lat", } m["la-ren"] = { "လပ်တေန်ခေတ်ကလေၚ်ပလေဝ်ပ္တိုန်တၟိ", 499083, "la", ancestors = "la-med", } m["la-new"] = { "လပ်တေန်တၟိ", 1248221, "la", aliases = {"Modern Latin"}, ancestors = "la-ren", } m["la-con"] = { "လပ်တေန်ခေတ်ပြိုၚ်ပ္ကာန်", 1246397, "la-new", } ------------------------------------------------------------------------- -- Miscellaneous Italic varieties -- ------------------------------------------------------------------------- m["xfa-cap"] = { "Capenate", 133182969, "xfa", } m["osc-luc"] = { "Lucanian", 3265025, "osc", } m["osc-sam"] = { "Samnite", 133184287, "osc", } ------------------------------------------------------------------------- -- Romance varieties -- ------------------------------------------------------------------------- m["roa-pro"] = { "Proto-Romance", 3408029, "la-lat", ancestors = "la-vul", } ----------------------------------------------------- -- Catalan varieties -- ----------------------------------------------------- m["ca-val"] = { "Valencian", 32641, "ca", } ----------------------------------------------------- -- Franco-Provençal varieties -- ----------------------------------------------------- m["frp-old"] = { "Old Franco-Provençal", nil, "frp", } ----------------------------------------------------- -- French and derived creole varieties -- ----------------------------------------------------- m["fro-nor"] = { "Old Northern French", 2044917, "fro", aliases = {"Old Norman", "Old Norman French"}, } m["fro-pic"] = { "Picard Old French", nil, "fro", } m["xno"] = { "Anglo-Norman", 35214, "fro-nor", } m["xno-law"] = { "Law French", 2044323, "xno", } m["zrp"] = { "Zarphatic", 36994, "fro", aliases = {"Judeo-French"}, pseudo_families = "qfa-jew", } m["fr-CA"] = { "Canadian French", 1450506, "fr", } m["fr-CH"] = { "Swiss French", 1480152, "fr", } m["fr-aca"] = { "Acadian French", 415109, "fr", } m["fr-lou"] = { "Louisiana French", 3083213, "fr", } m["fr-mis"] = { "Missouri French", 3083210, "fr", } m["frc"] = { "Cajun French", 880301, "fr-lou", } m["ht-sdm"] = { "Saint Dominican Creole French", nil, "ht", ancestors = "fr", } -- Norman varieties m["nrf-grn"] = { "Guernsey Norman", 56428, "nrf", aliases = {"Guernsey"}, } m["nrf-jer"] = { "Jersey Norman", 56430, "nrf", aliases = {"Jersey"}, } ----------------------------------------------------- -- Gallo-Italic varieties -- ----------------------------------------------------- m["egl-old"] = { "Old Emilian", nil, "egl", } m["lij-old"] = { "လဳဂူရဳယာန်တြေံ", nil, "lij", aliases = {"Old Genoese"}, } m["lmo-old"] = { "လောန်ဗါတ်တြေံ", 97165320, "lmo", } m["pms-old"] = { "Old Piedmontese", nil, "pms", aliases = {"Old Piemontese"}, } m["vec-old"] = { "Old Venetan", nil, "vec", aliases = {"Old Venetian"}, } m["rgn-old"] = { "Old Romagnol", nil, "rgn", } ----------------------------------------------------- -- Italo-Romance varieties -- ----------------------------------------------------- -- Italian varieties m["roa-oit"] = { "Old Italian", nil, "it", } m["it-CH"] = { "Switzerland Italian", 672147, "it", } -- Other Italo-Romance varieties m["nap-old"] = { "Old Neapolitan", nil, "nap", } m["scn-old"] = { "Old Sicilian", nil, "scn", } ----------------------------------------------------- -- Occitan varieties -- ----------------------------------------------------- m["oc-auv"] = { "Auvergnat", 35359, "oc", aliases = {"Auvernhat", "Auvergnese"}, } m["oc-gas"] = { "ဂေါသ်သကာန်", 35735, "oc", } -- standardized dialect of Gascon m["oc-ara"] = { "Aranese", 10196, "oc-gas", } m["oc-lan"] = { "လာမ်ဂဝေအ်ဒံက်ဃှေန်", 942602, "oc", aliases = {"Lengadocian"}, } m["oc-lim"] = { "လိမူသေန်", 427614, "oc", } m["oc-pro"] = { "ဖရဝ်ဗေန်သော", 241243, "oc", aliases = {"Provencal"}, } m["oc-pro-old"] = { "ဖရဝ်ဗေန်သောတြေံ", 2779185, "pro", } m["oc-viv"] = { "ဝဳဝါရုဝ်-အောဖှာၚ်", 1649613, "oc", } m["oc-jud"] = { "Shuadit", 56472, "oc", aliases = { "Chouhadite", "Chouhadit", "Chouadite", "Chouadit", "Shuhadit", "Judeo-Occitan", "Judæo-Occitan", "Judaeo-Occitan", "Judeo-Provençal", "Judæo-Provençal", "Judaeo-Provençal", "Judeo-Provencal", "Judaeo-Provencal", "Judeo-Comtadin", "Judæo-Comtadin", "Judaeo-Comtadin", }, pseudo_families = "qfa-jew", } ----------------------------------------------------- -- Portuguese and derived creole varieties -- ----------------------------------------------------- -- Portuguese m["pt-BR"] = { "Brazilian Portuguese", 750553, "pt", } m["pt-PT"] = { "European Portuguese", 922399, "pt", } -- Kabuverdianu (Cape Verde Creole, Cape Verdean Creole) m["kea-bar"] = { "Barlavento Kabuverdianu", 2217638, "kea", aliases = {"Barlavento", "Barlavento Creole", "Sampadjudu"}, } m["kea-bvi"] = { "Boa Vista Kabuverdianu", 16501837, "kea-bar", aliases = {"Boa Vista Creole"}, } m["kea-sal"] = { "Sal Kabuverdianu", 18707467, "kea-bar", aliases = {"Sal Creole"}, } m["kea-saa"] = { "Santo Antão Kabuverdianu", 18707472, "kea-bar", aliases = {"Santo Antão Creole"}, } m["kea-sni"] = { "São Nicolau Kabuverdianu", 18707549, "kea-bar", aliases = {"São Nicolau Creole"}, } m["kea-svi"] = { "São Vicente Kabuverdianu", 18707550, "kea-bar", aliases = {"São Vicente Creole"}, } m["kea-sot"] = { "Sotavento Kabuverdianu", 10261559, "kea", aliases = {"Sotavento", "Sotavento Creole", "Badiu"}, } m["kea-bra"] = { "Brava Kabuverdianu", 18670181, "kea-sot", aliases = {"Brava Creole"}, } m["kea-fog"] = { "Fogo Kabuverdianu", 18706861, "kea-sot", aliases = {"Fogo Creole"}, } m["kea-mai"] = { "Maio Kabuverdianu", 18707286, "kea-sot", aliases = {"Maio Creole"}, } m["kea-san"] = { "Santiago Kabuverdianu", 35117, "kea-sot", aliases = {"Santiago Creole"}, } m["kea-alu"] = { "ALUPEC Kabuverdianu", 375704, "kea", aliases = {"ALUPEC", "Alfabeto Unificado para a Escrita do Cabo-Verdiano"}, } ----------------------------------------------------- -- Rhaeto-Romance varieties -- ----------------------------------------------------- -- Friulian varieties m["fur-old"] = { "Old Friulian", nil, "fur", } -- Ladin varieties m["lld-amp"] = { "Ampezan Ladin", 25617466, "lld", aliases = {"Anpezan", "Ampezan", "Ampezzan", "Ampezzano"}, } m["lld-bad"] = { "Badiot Ladin", 3706562, "lld", aliases = {"Badiot", "Badioto", "Badiotto"}, } m["lld-cad"] = { "Cadorino Ladin", 3706570, "lld", aliases = {"Cadorino"}, } m["lld-fas"] = { "Fascian Ladin", 742627, "lld", aliases = {"Fascian", "Fassano"}, } m["lld-fod"] = { "Fodom Ladin", 3706605, "lld", aliases = {"Fodom", "Livinallese"}, } m["lld-for"] = { "Fornes Ladin", 5470374, "lld", aliases = {"Fornes"}, } m["lld-ghe"] = { "Gherdëina Ladin", 3706597, "lld", aliases = {"Gherdëina", "Gardenese", "Val Gardena"}, } m["lld-non"] = { "Nones Ladin", 1055027, "lld", aliases = {"Nones", "Noneso"}, } -- Romansh varieties m["rm-old"] = { "Old Romansh", nil, "rm", } m["rm-put"] = { "Puter Romansh", 688309, "rm", aliases = {"Puter", "Putèr", "Upper Engadine", "rm-puter"}, } m["rm-srm"] = { "Surmiran Romansh", 690216, "rm", aliases = {"Surmiran", "rm-surmiran", "Surmiran-Albula", -- Glottolog }, } m["rm-srs"] = { "Sursilvan Romansh", 688348, "rm", aliases = {"Sursilvan", "rm-sursilv"}, } m["rm-sut"] = { "Sutsilvan Romansh", 688272, "rm", aliases = {"Sutsilvan", "rm-sutsilv"}, varieties = {"Scharans Sutsilvan"}, -- per Glottolog } m["rm-val"] = { "Vallader Romansh", 690226, "rm", aliases = {"Vallader", "Putèr", "Lower Engadine", "rm-vallader"}, } m["rm-gri"] = { "Rumantsch Grischun", 688873, "rm", aliases = {"rm-rumgr"}, } ----------------------------------------------------- -- Sardinian varieties -- ----------------------------------------------------- m["sc-old"] = { "Old Sardinian", nil, "sc", } m["sc-src"] = { "Logudorese", 777974, "sc", aliases = {"Logudorese Sardinian"}, } m["sc-nuo"] = { "Nuorese", nil, "sc-src", aliases = {"Nuorese Sardinian"}, } m["sc-sro"] = { "Campidanese", 35348, "sc", aliases = {"Campidanese Sardinian"}, } ----------------------------------------------------- -- Spanish varieties -- ----------------------------------------------------- m["es-ear"] = { "Early Modern Spanish", 5364419, "es", } m["es-AR"] = { "Rioplatense Spanish", 509780, "es", } m["es-BO"] = { "Bolivian Spanish", 510730, "es", } m["es-CL"] = { "Chilean Spanish", 857295, "es", } m["es-CO"] = { "Colombian Spanish", 1115875, "es", } m["es-CU"] = { "Cuban Spanish", 824909, "es", } m["es-MX"] = { "Mexican Spanish", 616620, "es", } m["es-PE"] = { "Peruvian Spanish", 736236, "es", } m["es-PH"] = { "Philippine Spanish", 22091406, "es", } m["es-US"] = { "United States Spanish", 2301077, "es", aliases = {"US Spanish"}, } --use label "US Spanish" to put Spanish terms in this category m["es-PR"] = { "Puerto Rican Spanish", 7258609, "es", } m["es-VE"] = { "Venezuelan Spanish", 840017, "es", } m["es-lun"] = { "Lunfardo", 1401612, "es", } ---------------------------------------------------------------------------------------------------------------------- -- Japonic varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Japanese varieties m["ja-mid"] = { "ဂျပါန် လဒေါဝ်", 6841474, "ojp", ancestors = "ojp", } m["ja-mid-ear"] = { "Early Middle Japanese", 182695, "ja-mid", } m["ja-mid-lat"] = { "ဂျပါန်တြေံခေတ်လဇုဲ", 1816184, "ja-mid", ancestors = "ja-mid-ear", } m["ja-ear"] = { "Early Modern Japanese", 5326692, "ja", ancestors = "ja-mid-lat", } m["ojp-eas"] = { "Eastern Old Japanese", 65247957, "ojp", } m["ja-cla"] = { "Classical Japanese", 1332057, "ja", -- FIXME: This is redundant because Classical Japanese is considered a child of (Modern) Japanese, which has ja-mid-ear -- (as well as ja-mid-lat) as ancestors. However, the intent here is that the *direct* ancestor of ja-cla is ja-mid-ear -- and ja-mid-lat is not an ancestor. Need to rethink ancestor handling. -- ancestors = "ja-mid-ear", } ---------------------------------------------------------------------------------------------------------------------- -- Koreanic varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Korean varieties m["oko-lat"] = { "ကိုဝ်ရဳယျာတြေံခေတ်လဇုဲ", nil, "oko", } m["okm-ear"] = { "Early Middle Korean", nil, "okm", } m["ko-cen"] = { "Central Korean", nil, "ko", } m["ko-gyg"] = { "Gyeonggi Korean", 485492, "ko-cen", aliases = {"Seoul Korean"}, } m["ko-chu"] = { "Chungcheong Korean", 625800, "ko-cen", aliases = {"Hoseo Korean"}, } m["ko-hwa"] = { "Hwanghae Korean", 16183706, "ko-cen", } m["ko-gan"] = { "Gangwon Korean", 11260444, "ko-cen", aliases = {"Yeongdong Korean"}, } m["ko-gys"] = { "Gyeongsang Korean", 488002, "ko", aliases = {"Southeastern Korean"}, } m["ko-jeo"] = { "Jeolla Korean", 11250166, "ko", aliases = {"Southwestern Korean"}, } m["ko-pyo"] = { "Pyongan Korean", 7263142, "ko", aliases = {"Northwestern Korean"}, } m["ko-ham"] = { "Hamgyong Korean", 860702, "ko", aliases = {"Northeastern Korean"}, } m["ko-yuk"] = { "Yukjin Korean", 16171275, "ko", aliases = {"Yukchin Korean", "Ryukjin Korean", "Ryukchin Korean"}, } ---------------------------------------------------------------------------------------------------------------------- -- Mongolic varieties -- ---------------------------------------------------------------------------------------------------------------------- m["xng-ear"] = { "Early Middle Mongol", nil, "xng", } m["xng-lat"] = { "Late Middle Mongol", nil, "xng", ancestors = "xng-ear", } m["mn-kha"] = { "Khalkha Mongolian", 6399808, "mn", aliases = {"Khalkha"}, } m["mn-ord"] = { "Ordos Mongolian", 716904, "mn", aliases = {"Ordos"}, } m["mn-cha"] = { "Chakhar Mongolian", 907425, "mn", aliases = {"Chakhar"}, } m["mn-khr"] = { "Khorchin Mongolian", 3196210, "mn", aliases = {"Khorchin"}, } ---------------------------------------------------------------------------------------------------------------------- -- Niger-Congo varieties -- ---------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------- -- Akan varieties -- ----------------------------------------------------- m["tw"] = { "Twi Akan", 36850, "ak", aliases = {"Twi"}, } m["abr"] = { "Abron", 34831, "tw", aliases = {"Brong", "Bono", "Bono Twi"}, } m["tw-asa"] = { "Asante Twi", 19261685, "tw", aliases = {"Asante", "Ashanti", "Ashante"}, } m["tw-aku"] = { "Akuapem Twi", 31150449, "tw", aliases = {"Akuapem", "Akuapim", "Akwapem Twi", "Akwapi"}, } m["fat"] = { "Fante Akan", 35570, "ak", aliases = {"Fante", "Fanti", "Fantse", "Mfantse"}, } m["wss"] = { "Wasa", 36914, "ak", } -- creole m["alv-kro"] = { "Kromanti", 1093206, "crp-mar", } ----------------------------------------------------- -- Bantu varieties -- ----------------------------------------------------- m["bnt-cmn"] = { "Common Bantu", nil, "bnt-pro", } m["xh-bha"] = { "Bhaca", 4900493, "xh", aliases = {"isiBhaca", "IsiBhaca"}, } -- Rwanda-Rundi varieties m["rw-kin"] = { "Kinyarwanda", 33573, "rw", aliases = {"Rwanda"}, } m["rw-run"] = { "Kirundi", 33583, "rw", aliases = {"Rundi"}, } ----------------------------------------------------- -- Fula varieties -- ----------------------------------------------------- m["fuc"] = { "Pulaar", 1420205, "ff", } m["fuf"] = { "Pular", 3915357, "ff", } m["ffm"] = { "Maasina Fulfulde", 3915322, "ff", } m["fue"] = { -- no enwiki entry as of yet but frwiki and pmswiki have one "Borgu Fulfulde", 12952426, "ff", } m["fuh"] = { -- no enwiki entry as of yet but frwiki and pmswiki have one "Western Niger Fulfulde", 12952430, "ff", } m["fuq"] = { -- no enwiki entry as of yet but frwiki, hrwiki and pmswiki have one "Central-Eastern Niger Fulfulde", 12628799, "ff", } m["fuv"] = { -- no enwiki entry as of yet but dewiki, frwiki, hrwiki, pmswiki and swwiki have one "Nigerian Fulfulde", 36129, "ff", } m["fub"] = { -- no enwiki entry as of yet but dewiki, frwiki, hrwiki, pmswiki, ptwiki, swwiki and yowiki have one "Adamawa Fulfulde", 34776, "ff", } m["fui"] = { -- no enwiki entry as of yet but pmswiki and swwiki have one "Bagirmi Fulfulde", 11003859, "ff", } ---------------------------------------------------------------------------------------------------------------------- -- Papuan varieties -- ---------------------------------------------------------------------------------------------------------------------- m["kze"] = { "Kosena", 12952663, "auy", } m["ont"] = { "Ontenu", 3352827, "gaj", aliases = {"Ontena"}, } ---------------------------------------------------------------------------------------------------------------------- -- Salishan varieties -- ---------------------------------------------------------------------------------------------------------------------- m["lut-nor"] = { "Northern Lushootseed", nil, "lut", aliases = {"Northern Puget Sound Salish"}, } m["slh"] = { "Southern Lushootseed", 7997684, "lut", aliases = {"Southern Puget Sound Salish", "Twulshootseed", "Whulshootseed"}, } m["ska"] = { "Skagit", 12642471, "lut-nor", } m["sno"] = { "Snohomish", 25559662, "lut-nor", } ---------------------------------------------------------------------------------------------------------------------- -- Sino-Tibetan varieties -- ---------------------------------------------------------------------------------------------------------------------- m["tbq-pro"] = { "ဗၟာ-တိဗဝ်တဝ် အခိုက်ကၞာ", 7251864, "sit-pro", } ----------------------------------------------------- -- Chinese varieties -- ----------------------------------------------------- ------------- Old Chinese, Middle Chinese ------------- m["och-ear"] = { "Early Old Chinese", nil, "och", } m["och-lat"] = { "Late Old Chinese", nil, "och", } m["ltc-ear"] = { "Early Middle Chinese", nil, "ltc", } m["ltc-lat"] = { "Late Middle Chinese", nil, "ltc", } ------------- Classical/Literary varieties ------------- -- FIXME: Temporary. m["lzh-shi"] = { "Traditional Chinese poetry", 1759242, "lzh", } -- FIXME: Temporary. m["lzh-cii"] = { "Ci", 1091366, "lzh", } -- FIXME: Temporary. m["lzh-yue"] = { "Classical Cantonese", nil, "lzh", } -- FIXME: Temporary. m["lzh-cmn"] = { "Classical Mandarin", nil, "lzh", } -- FIXME: Temporary. m["lzh-tai"] = { "Classical Taishanese", nil, "lzh", } -- FIXME: Temporary. m["lzh-cmn-TW"] = { "Classical Taiwanese Mandarin", nil, "lzh-cmn", } -- FIXME: Temporary. m["lzh-VI"] = { "Vietnamese Classical Chinese", 17034227, "lzh", } -- FIXME: Temporary. m["lzh-KO"] = { "Korean Classical Chinese", 10496257, "lzh", ietf_subtag = "lzh-KR" -- KR = South Korea, as there is no code for Korea as a whole } -- FIXME: Temporary. m["lzh-lit"] = { "Literary Chinese", nil, "lzh", } -- FIXME: Temporary. FIXME: Do we need this? How does it differ from Old Chinese? m["lzh-pre"] = { "Pre-Classical Chinese", nil, "lzh", } ------------- Written Vernacular varieties ------------- -- FIXME: Temporary. m["cmn-wvc"] = { "Written vernacular Mandarin", 783605, "cmn", } -- FIXME: Temporary. FIXME: How does this differ from "Literary Cantonese"? m["yue-wvc"] = { "Written vernacular Cantonese", nil, "yue", } -- FIXME: Temporary. m["zhx-tai-wvc"] = { "Written vernacular Taishanese", nil, "zhx-tai", } ------------- Mandarin varieties ------------- -- FIXME: Temporary. NOTE: The Linguist List assigns the "w:Beijing dialect" (Wikidata 1147606) the code "cmn-bej" and -- the larger "w:Beijing Mandarin (division of Mandarin)" dialect group (Wikidata 2169652; what we call "Beijingic -- Mandarin", after Glottolog) the code "cmn-bei". m["cmn-bei"] = { "Beijing Mandarin", 1147606, "cmn-bec", } -- FIXME: Temporary. m["cmn-bec"] = { "Beijingic Mandarin", 2169652, "cmn", } -- FIXME: Temporary. NOTE: The Linguist List uses the code cmn-zho. m["cmn-cep"] = { "Central Plains Mandarin", 3048775, "cmn", aliases = {"Zhongyuan Mandarin"}, } m["cmn-ear"] = { "Early Mandarin", 837169, "cmn", ancestors = "ltc", } -- FIXME: Temporary. m["cmn-gua"] = { "Guanzhong Mandarin", 3431648, "cmn-cep", } -- FIXME: Temporary. Appears to be a subdialect of Guiliu Mandarin, which in turn is a subdialect of Southwestern Mandarin. m["cmn-gui"] = { "Guilin Mandarin", 11111636, "cmn-sow", } m["cmn-jhu"] = { "Jianghuai Mandarin", 2128953, "cmn", aliases = {"Lower Yangtze Mandarin"}, } -- FIXME: Temporary. m["cmn-lan"] = { "Lanyin Mandarin", 662754, "cmn", } -- FIXME: Temporary. m["cmn-MY"] = { "Malaysian Mandarin", 13646143, "cmn", } -- FIXME: Temporary. m["cmn-nan"] = { "Nanjing Mandarin", 2681098, "cmn-jhu", } -- FIXME: Temporary. m["cmn-noe"] = { "Northeastern Mandarin", 1064504, "cmn", } -- FIXME: Temporary. m["cmn-PH"] = { "Philippine Mandarin", 7185155, "cmn", } -- FIXME: Temporary. m["cmn-SG"] = { "Singapore Mandarin", 1048980, "cmn", } -- FIXME: Temporary. m["cmn-sow"] = { "Southwestern Mandarin", 2609239, "cmn", } -- FIXME: Temporary. Appears to be a subdialect of Jilu Mandarin. m["cmn-tia"] = { "Tianjin Mandarin", 7800220, "cmn", } -- FIXME: Temporary. NOTE: Wikidata also has Q4380827 "Taiwanese Mandarin", defined as "rare dialect of Standard Chinese -- (Mandarin) used in Taiwan, which is strongly influenced by Taiwanese Hokkien; mostly used by elderlies" and having no -- English Wikipedia article (but see w:zh:臺灣國語). m["cmn-TW"] = { "Taiwanese Mandarin", 262828, "cmn", } -- FIXME: Temporary. Appears to be a subdialect of Wu-Tian Mandarin, in turn a subdialect of Southwestern Mandarin. -- Given the code cmn-xwu in the Linguist List. m["cmn-wuh"] = { "Wuhan Mandarin", 11124731, "cmn-sow", aliases = {"Wuhanese"}, } -- FIXME: Temporary. Appears to be a subdialect of Lanyin Mandarin. m["cmn-xin"] = { "Xining Mandarin", nil, "cmn-lan", } -- FIXME: Temporary. m["cmn-yan"] = { "Yangzhou Mandarin", nil, "cmn-jhu", } ------------- Cantonese varieties ------------- -- FIXME: Temporary. m["yue-gua"] = { "Guangzhou Cantonese", nil, "yue", } -- FIXME: Temporary. Given the codes yue-yue or yue-can in the Linguist List. m["yue-HK"] = { "Hong Kong Cantonese", 5894342, "yue", } -- FIXME: Temporary. FIXME: How does this differ from "Written vernacular Cantonese"? m["yue-lit"] = { "Literary Cantonese", 2472605, "yue", } ------------- Wu varieties ------------- m["wuu-han"] = { "Hangzhounese", 5648144, "wuu", } m["wuu-nin"] = { "Ningbonese", 3972199, "wuu", } -- FIXME: Temporary. m["wuu-nor"] = { "Northern Wu", 7675988, "wuu", aliases = {"Taihu Wu"}, } -- FIXME: Temporary? Subvariety of Taihu Wu. NOTE: "chm" stands for Chongming, the main dialect, to avoid a conflict -- with Shanghainese. m["wuu-chm"] = { "Shadi Wu", 6112340, "wuu-nor", } m["wuu-sha"] = { "Shanghainese", 36718, "wuu-nor", } m["wuu-suz"] = { "Suzhounese", 831744, "wuu-nor", } -- FIXME: Temporary. May be converted into a full language and/or split. m["wuu-wen"] = { "Wenzhounese", 710218, "wuu", } ------------- Xiang varieties ------------- m["hsn-lou"] = { "Loudi Xiang", 10943823, "hsn-old", } m["hsn-hya"] = { "Hengyang Xiang", 20689035, "hsn-hzh", } m["hsn-hzh"] = { "Hengzhou Xiang", nil, "hsn", } m["hsn-new"] = { "New Xiang", 7012696, "hsn", aliases = {"Chang-Yi"}, } m["hsn-old"] = { "Old Xiang", 7085453, "hsn", aliases = {"Lou-Shao"}, } ------------- Hakka varieties ------------- -- FIXME: Temporary. m["hak-dab"] = { "Dabu Hakka", 19855566, "hak", -- formerly hak-TW but seems to be spoken primary in Dabu County in Guangdong } -- FIXME: Temporary. m["hak-eam"] = { "Early Modern Hakka", nil, "hak", } -- FIXME: Temporary. m["hak-hai"] = { "Hailu Hakka", 17038519, "hak", -- often considered a Taiwanese lect but also spoken in [[Shanwei]], [[Guangdong]] } -- FIXME: Temporary. m["hak-HK"] = { "Hong Kong Hakka", 2675834, "hak", } -- FIXME: Temporary. m["hak-hui"] = { "Huiyang Hakka", 16873881, "hak", } -- FIXME: Temporary. m["hak-hui-MY"] = { "Malaysian Huiyang Hakka", nil, "hak-hui", } -- FIXME: Temporary. Similar to and possibly the parent of Sixian Hakka in Taiwan. m["hak-mei"] = { "Meixian Hakka", 839295, "hak", aliases = {"Moiyan Hakka", "Meizhou Hakka"}, } -- FIXME: Temporary. m["hak-six"] = { "Sixian Hakka", 9668261, "hak-TW", } -- FIXME: Temporary. m["hak-TW"] = { "Taiwanese Hakka", 2391532, "hak", } -- FIXME: Temporary. m["hak-zha"] = { "Zhao'an Hakka", 6703311, "hak", aliases = {"Zhangzhou Hakka"}, } -- Southern Min varieties -- m["nan-anx"] = { "Anxi Hokkien", 97064149, "nan-qua", } m["nan-cha"] = { "Changtai Hokkien", nil, "nan-zha", } m["nan-hou"] = { "Houlu Min", 19855492, "nan-dat", } m["nan-hui"] = { "Hui'an Hokkien", 16241797, "nan-qua", } m["nan-jin"] = { "Jinjiang Hokkien", 11089375, "nan-qua", } m["nan-kin"] = { "Kinmenese Hokkien", 56278342, "nan-xia", aliases = {"Kinmen Hokkien"}, } m["nan-med"] = { "Medan Hokkien", 6805114, "nan-zha", } m["nan-pen"] = { "Penang Hokkien", 11120689, "nan-zha", } m["nan-hbl-PH"] = { "Philippine Hokkien", 3236692, "nan-qua", } m["nan-qia"] = { "Qianlu Min", 19842517, "nan-dat", } m["nan-qua"] = { "Quanzhou Hokkien", 2251677, "nan-hbl", aliases = {"Chinchew", "Choanchew"}, } -- FIXME: Temporary? Derived from both Quanzhou and Zhangzhou Hokkien. m["nan-hbl-SG"] = { "Singapore Hokkien", 3846528, "nan-hbl", } m["nan-spm"] = { "Southern Malaysian Hokkien", 7570322, "nan-qua", aliases = {"Southern Malaysia Hokkien", "Southern Peninsular Malaysian Hokkien", "Southern Peninsular Malaysia Hokkien"} } m["nan-hbl-TW"] = { "Taiwanese Hokkien", 36778, "nan-hbl", } m["nan-ton"] = { "Tong'an Hokkien", nil, "nan-xia", } m["nan-xia"] = { "Xiamen Hokkien", 68744, "nan-hbl", aliases = {"Amoy", "Amoyese", "Amoynese", "Xiamenese"}, } m["nan-yon"] = { "Yongchun Hokkien", 65118728, "nan-qua", } m["nan-zha"] = { "Zhangzhou Hokkien", 8070492, "nan-hbl", aliases = {"Changchew", "Chiangchew", "Changchow"}, } m["nan-zho"] = { "Zhao'an Hokkien", 65118728, "nan-zha", aliases = {"Zhao'an", "Chawan", "Chawan Hokkien"}, } m["nan-zhp"] = { "Zhangping Hokkien", 15937822, "nan-zha", } ------------- Other Min varieties ------------- -- FIXME: Temporary. Affiliation within Min uncertain; some combination of Eastern and Southern. m["zhx-zho"] = { "Zhongshan Min", 8070958, "zh", } ------------- Other Chinese varieties ------------- -- FIXME: Temporary. Affiliation within Chinese uncertain; possibly Yue. m["zhx-dan"] = { "Danzhou Chinese", 2578935, "zh", } ------------- Chinese romanization varieties ------------- -- [[Wiktionary:Information desk/2022/June#Etymology Coding Issue]] -- [[Wiktionary:Grease pit/2022/June#Transliteration Systems in Etymologies 2]] m["cmn-pinyin"] = { "Hanyu Pinyin", 42222, "cmn", aliases = {"Pinyin"}, } m["cmn-tongyong"] = { "Tongyong Pinyin", 700739, "cmn", } m["cmn-wadegiles"] = { "Wade–Giles", 208442, "cmn", aliases = {"Wade-Giles", "Wade Giles"}, } m["zh-postal"] = { "Postal Romanization", 151868, "zh", } -- Chinese cyrillization m["cmn-palladius"] = { "Palladius", 1234239, "cmn", aliases = {"Palladius system"}, } ----------------------------------------------------- -- Tibetic varieties -- ----------------------------------------------------- m["adx"] = { "Amdo Tibetan", 56509, "bo", } m["kbg"] = { "Khamba", 12952626, "bo", } m["khg"] = { "Khams Tibetan", 56601, "bo", } m["tsk"] = { "Tseku", 11159532, "bo", } ---------------------------------------------------------------------------------------------------------------------- -- Tai-Kadai varieties -- ---------------------------------------------------------------------------------------------------------------------- m["th-old"] = { "သေံတြေံ", nil, "tai-swe-pro", wikipedia_article = "Thai language#Old Thai", } m["th-suk"] = { "သူခိုဝ်ထိုၚ် သေံတြေံ", -- 1238-1438. Cannot use "Sukhothai Thai" as Sukhothai is the current city and "Sukhothai Thai" is a lect. nil, "th-old", aliases = {"Sukhothai Siamese"}, wikipedia_article = "Thai language#Old Thai", } m["th-ayu"] = { "အယုဒ္ဓယ သေံတြေံ", -- 1351-1767. Cannot use "Ayutthaya Thai" as Ayutthaya is the current city. nil, "th-old", aliases = {"Ayutthaya Siamese"}, wikipedia_article = "Thai language#Old Thai", } --[[ m["th-new"] = { "Hacked Thai", -- temporary for testing new translit/display methods nil, "th", translit = "User:Benwing2/th-scraping-translit", display_text = "User:Benwing2/th-scraping-translit", strip_diacritics = "User:Benwing2/th-scraping-translit", preprocess_links = "User:Benwing2/th-scraping-translit", } ]] m["tai-shz"] = { "Shangsi Zhuang", 13216, "za", } ---------------------------------------------------------------------------------------------------------------------- -- Turkic varieties -- ---------------------------------------------------------------------------------------------------------------------- m["trk-cmn-pro"] = { "Proto-Common Turkic", 1126028, "trk-pro", } m["trk-ogr-pro"] = { "Proto-Oghur", 1422731, "trk-pro", family = "trk-ogr", } m["trk-bul-pro"] = { "Proto-Bulgar", nil, "trk-ogr-pro", } m["trk-ogz-pro"] = { "Proto-Oghuz", 494600, "trk-pro", family = "trk-ogz", aliases = {"Southwestern Common Turkic"}, } m["crh-dbj"] = { "Dobrujan Tatar", 12811566, "crh", aliases = {"Romanian Tatar"}, } m["cv-ana"] = { "Anatri Chuvash", nil, "cv", aliases = {"Anatri", "Lower Chuvash"}, } m["cv-mid"] = { "Middle Chuvash", nil, "cv", ancestors = "cv-old", } m["cv-old"] = { "Old Chuvash", nil, "cv", ancestors = "xbo-vol", } m["cv-vir"] = { "Viryal Chuvash", 4278332, "cv", aliases = {"Viryal", "Upper Chuvash"}, } m["kjh-fyu"] = { "Fuyu Kyrgyz", 2598963, "kjh", aliases = {"Fuyu Kirgiz", "Fuyu Kirghiz", "Manchurian Kyrgyz", "Manchurian Kirgiz", "Manchurian Kirghiz"}, } m["klj-arg"] = { "Arghu", 33455, "klj", ancestors = "trk-cmn-pro", } m["otk-kir"] = { "Old Kirghiz", 83142, "otk", aliases = {"Yenisei Turkic", "Yenisei Kyrgyz"}, } m["otk-ork"] = { "Orkhon Turkic", 31295480, "otk", } m["qwm-cum"] = { "Cuman", 1075050, "qwm", aliases = {"Kuman", "Polovtsian", "Polovcian"}, } m["qwm-arm"] = { "Armeno-Kipchak", 2027503, "qwm", ancestors = "qwm-cum", aliases = {"Xıpçaχ tili", "Tatarça"}, } m["qwm-mam"] = { "Mamluk-Kipchak", 4279942, "qwm", aliases = {"Mameluk-Kipchak"}, } m["az-cls"] = { "Classical Azerbaijani", nil, "az", aliases = {"Classical Azeri"}, } m["qxq"] = { "Qashqai", 13192, "az", aliases = {"Qaşqay", "Qashqayi", "Kashkai", "Kashkay"}, } m["tr-CY"] = { "Cypriot Turkish", 7917392, "tr", } m["uz-afg"] = { -- NOTE: has ISO 639-3 code uzs assigned to it. "Afghan Uzbek", 1066787, "uz", aliases = {"Southern Uzbek"}, translit = "uz-afg-translit", } m["xbo-dan"] = { "Danube Bulgar", nil, "xbo", } m["xbo-vol"] = { "Volga Bulgar", nil, "xbo", } ---------------------------------------------------------------------------------------------------------------------- -- Uralic varieties -- ---------------------------------------------------------------------------------------------------------------------- m["fiu-pro"] = { "ဖေန်နဝ်-ဥူဂရေတ်-အခိုက်ကၞာ", 79890, "urj-pro", } m["urj-fpr-pro"] = { "ဖေန်နဝ်-ပဵုမေတ်-အခိုက်ကၞာ", nil, "urj-pro", } m["krl-nor"] = { "North Karelian", 125501196, "krl", } m["krl-sou"] = { "South Karelian", 129812730, "krl", } m["mns-eas"] = { "Eastern Mansi", 30311755, "mns-cen", } m["mns-wes"] = { "Western Mansi", 30311756, "mns-cen", } ---------------------------------------------------------------------------------------------------------------------- -- Yeneseian varieties -- ---------------------------------------------------------------------------------------------------------------------- m["qfa-yke-pro"] = { "Proto-Ketic", nil, "qfa-yen-pro", family = "qfa-yke", } m["qfa-yko-pro"] = { "Proto-Kottic", nil, "qfa-yen-pro", family = "qfa-yko", } m["qfa-yrn-pro"] = { "Proto-Arinic", nil, "qfa-yen-pro", family = "qfa-yrn", } m["qfa-ypm-pro"] = { "Proto-Pumpokolic", nil, "qfa-yen-pro", family = "qfa-ypm", } ---------------------------------------------------------------------------------------------------------------------- -- Miscellaneous varieties -- ---------------------------------------------------------------------------------------------------------------------- m["mul-tax"] = { "taxonomic name", 522190, "mul", } ----------------------------------------------------- -- Elamite varieties -- ----------------------------------------------------- m["elx-old"] = { "Old Elamite", nil, "elx", } m["elx-mid"] = { "Middle Elamite", nil, "elx", } m["elx-neo"] = { "Neo-Elamite", nil, "elx", } m["elx-ach"] = { "Achaemenid Elamite", nil, "elx", } ----------------------------------------------------- -- Substrates -- ----------------------------------------------------- -- Pre-Roman substrates m["qsb-ibe"] = { "Paleo-Hispanic", 246801, "und", family = "qfa-sub", aliases = {"Palaeo-Hispanic", "Paleohispanic", "Palaeohispanic", "Paleo-Iberian", "Palaeo-Iberian"}, } m["qsb-bal"] = { "Paleo-Balkan", 1815070, "und", family = "qfa-sub", aliases = {"Palaeo-Balkan", "Paleobalkan", "Palaeobalkan"}, } m["xaq"] = { "Aquitanian", 500522, "euq-pro", family = "euq", } return require("Module:languages").finalizeData(m, "language", true) r7xk3dsgps61m4iza7y2j1rgp2ou5ey 399023 399022 2026-07-17T13:15:46Z Intobesa.bot 1035 Bot: ပွမကၠာဲစုတ်ယၟုနူဘာသာအၚ်္ဂလိက် 399023 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} ---------------------------------------------------------------------------------------------------------------------- -- Afroasiatic varieties -- ---------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- -- Berber varieties -- -------------------------------------------------------------------------------------- m["shi-med"] = { "Medieval Tashelhit", 34152, "shi", } -- Tuareg lects m["thv"] = { "Tamahaq", 56703, "tmh", } m["ttq"] = { "Tawellemmet", 56390, "tmh", } m["taq"] = { "Tamasheq", 4670066, "tmh", } m["thz"] = { "Tayert", 56388, "tmh", } m["thv-ght"] = { "Ghat", 47012900, "thv", } -------------------------------------------------------------------------------------- -- Cushitic varieties -- -------------------------------------------------------------------------------------- -- Oromo varieties m["hae"] = { "Harar Oromo", 5330355, "om", aliases = {"Eastern Oromo"}, } m["gax"] = { "Borana", 2910610, "om", aliases = {"Southern Oromo"}, } m["orc"] = { "Orma", 2919128, "om", } m["ssn"] = { "Waata", 3501553, "om", } -------------------------------------------------------------------------------------- -- Egyptian varieties -- -------------------------------------------------------------------------------------- ----------------------------------------------------- -- Ancient Egyptian varieties -- ----------------------------------------------------- m["egy-old"] = { "အဳဂျေပ်တြေံ", 447117, "egy", } m["egy-mid"] = { "အဳဂျေပ်လဒေါဝ်", 657330, "egy", aliases = {"Classical Egyptian"}, } m["egy-nmi"] = { "Neo-Middle Egyptian", 123735278, "egy", aliases = {"Égyptien de tradition", "Traditional Egyptian"}, } m["egy-lat"] = { "အဳဂျေပ်လဇုဲ", 1852329, "egy", } ----------------------------------------------------- -- Coptic varieties -- ----------------------------------------------------- m["cop-akh"] = { "Akhmimic Coptic", 125176464, "cop", aliases = {"Akhmimic"}, } m["cop-boh"] = { "Bohairic Coptic", 890733, "cop", aliases = {"Bohairic", "Memphitic Coptic", "Memphitic"}, } m["cop-ggg"] = { "Coptic Dialect G", nil, "cop", aliases = {"Dialect G", "Mansuric Coptic", "Mansuric"}, } m["cop-jjj"] = { "Coptic Dialect J", nil, "cop", } m["cop-kkk"] = { "Coptic Dialect K", nil, "cop", } m["cop-ppp"] = { "Coptic Dialect P", nil, "cop", aliases = {"Proto-Theban Coptic", "Palaeo-Theban Coptic"}, } m["cop-fay"] = { "Fayyumic Coptic", 1399115, "cop", aliases = {"Fayyumic", "Faiyumic Coptic", "Faiyumic", "Fayumic Coptic", "Fayumic", "Bashmuric Coptic", "Bashmuric"}, } m["cop-her"] = { "Hermopolitan Coptic", nil, "cop", aliases = {"Hermopolitan", "Coptic Dialect H", "Ashmuninic", "Ashmuninic Coptic"}, } m["cop-lyc"] = { "Lycopolitan Coptic", nil, "cop", aliases = { "Lycopolitan", "Assiutic Coptic", "Asyutic Coptic", "Assiutic", "Asyutic", "Lyco-Diospolitan Coptic", "Lyco-Diospolitan", "Subakhmimic Coptic", "Subakhmimic" }, } m["cop-old"] = { "Old Coptic", 115518040, "cop", } m["cop-oxy"] = { "Oxyrhynchite Coptic", nil, "cop", aliases = {"Oxyrhynchite", "Mesokemic Coptic", "Mesokemic", "Middle Egyptian Coptic"}, } m["cop-ply"] = { "Proto-Lycopolitan Coptic", nil, "cop", aliases = {"Coptic Dialect i", "Proto-Lyco-Diospolitan Coptic"}, } m["cop-sah"] = { "Sahidic Coptic", 2645851, "cop", aliases = {"Sahidic", "Saidic Coptic", "Saidic", "Thebaic Coptic", "Thebaic"}, } -------------------------------------------------------------------------------------- -- Semitic varieties -- -------------------------------------------------------------------------------------- ----------------------------------------------------- -- Akkadian varieties -- ----------------------------------------------------- m["akk-old"] = { "Old Akkadian", nil, "akk", } m["akk-obb"] = { "Old Babylonian", nil, "akk", } m["akk-oas"] = { "Old Assyrian", nil, "akk", } m["akk-mbb"] = { "Middle Babylonian", nil, "akk", } m["akk-mas"] = { "Middle Assyrian", nil, "akk", } m["akk-nbb"] = { "Neo-Babylonian", nil, "akk", } m["akk-nas"] = { "Neo-Assyrian", nil, "akk", } m["akk-lbb"] = { "Late Babylonian", nil, "akk", } m["akk-stb"] = { "Standard Babylonian", nil, "akk", } ----------------------------------------------------- -- Arabic varieties -- ----------------------------------------------------- m["jrb"] = { "Judeo-Arabic", 37733, "ar", pseudo_families = "qfa-jew", } m["apc-leb"] = { "Lebanese North Levantine Arabic", 1516642, "apc", aliases = {"Lebanese Arabic"}, } m["apc-sle"] = { "South Lebanese North Levantine Arabic", 14206590, "apc", aliases = {"South Lebanese Arabic"}, } m["apc-nle"] = { "North Lebanese North Levantine Arabic", nil, "apc", aliases = {"North Lebanese Arabic"}, } m["apc-syr"] = { "Syrian North Levantine Arabic", 2143071, "apc", aliases = {"Syrian Arabic"}, } m["apc-ale"] = { "Aleppine North Levantine Arabic", 7056921, "apc-syr", aliases = {"Aleppo Arabic", "Aleppine Arabic"}, } m["apc-dam"] = { "Damascene North Levantine Arabic", 12237466, "apc-syr", aliases = {"Damascus Arabic", "Damascene Arabic"}, } m["acm-khu"] = { "Khuzestani Arabic", 1040944, "acm", } ----------------------------------------------------- -- Aramaic varieties -- ----------------------------------------------------- m["arc-bib"] = { "Biblical Aramaic", 843235, "arc", family = "sem-are", } m["arc-cpa"] = { "Christian Palestinian Aramaic", 60790119, "arc", family = "sem-arw", aliases = {"Melkite Aramaic", "Palestinian Syriac", "Syropalestinian Aramaic"}, } m["arc-imp"] = { "Imperial Aramaic", 7079491, "arc", aliases = {"Official Aramaic"}, } m["arc-hat"] = { "Hatran Aramaic", 3832926, "arc", family = "sem-are", } m["arc-jla"] = { "Jewish Literary Aramaic", 105952842, "arc", pseudo_families = "qfa-jew", } m["arc-nab"] = { "Nabataean Aramaic", 36178, "arc", } m["arc-old"] = { "Old Aramaic", 3398392, "arc", } m["arc-pal"] = { "Palmyrene Aramaic", 1510113, "arc", family = "sem-arw", } m["tmr"] = { "Jewish Babylonian Aramaic", 33407, "arc", family = "sem-ase", pseudo_families = "qfa-jew", } m["jpa"] = { "Jewish Palestinian Aramaic", 948909, "arc", family = "sem-arw", aliases = {"Galilean Aramaic"}, pseudo_families = "qfa-jew", } ----------------------------------------------------- -- Hebrew varieties -- ----------------------------------------------------- m["hbo"] = { "Biblical Hebrew", 1982248, "he", aliases = {"Classical Hebrew"}, } m["he-mis"] = { "Mishnaic Hebrew", 1649362, "he", ancestors = "hbo", } m["he-med"] = { "Medieval Hebrew", 2712572, "he", ancestors = "he-mis", } m["he-IL"] = { "Israeli Hebrew", 8141, "he", } ---------------------------------------------------------------------------------------------------------------------- -- Ainu varieties -- ---------------------------------------------------------------------------------------------------------------------- m["ain-hok"] = { "Hokkaido Ainu", 20968488, "ain", aliases = {"Hokkaidō Ainu"}, } m["ain-kur"] = { "Kuril Ainu", 20967012, "ain", } m["ain-sak"] = { "Sakhalin Ainu", 20747371, "ain", } ---------------------------------------------------------------------------------------------------------------------- -- American indigenous varieties -- ---------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------- -- Inuit varieties -- ----------------------------------------------------- m["esi"] = { "North Alaskan Inupiatun", nil, "ik" } m["esk"] = { "Northwest Alaskan Inupiatun", 25559714, "ik" } ----------------------------------------------------- -- Iroquoian varieties -- ----------------------------------------------------- m["iro-ohu"] = { "Old Wendat", nil, "wdt", } m["iro-omo"] = { "Old Mohawk", nil, "moh", } m["iro-oon"] = { "Old Onondaga", nil, "ono", } ----------------------------------------------------- -- Tupi-Guarani varieties -- ----------------------------------------------------- -- Old Tupi varieties m["tpw-lga"] = { "Língua Geral Amazônica", 18275323, "tpw", aliases = {"Língua Geral"}, } m["tpw-lgp"] = { "Língua Geral Paulista", 2669239, "tpw", } ---------------------------------------------------------------------------------------------------------------------- -- Austroasiatic varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Khmer varieties m["okz-ang"] = { "ခမေန်တြေံ အာန်ခေါဝ်ရဳယာန်", nil, "okz", wikipedia_article = "Khmer language#Historical periods", } m["okz-pre"] = { "ခမေန်တြေံ ကၠာ-အာန်ခေါဝ်ရဳယာန်", nil, "okz", wikipedia_article = "Khmer language#Historical periods", } -- Central Nicobarese varieties m["ncb-cam"] = { "Camorta", 5026908, "ncb", aliases = {"Kamorta"}, } m["ncb-kat"] = { "Katchal", 17064263, "ncb", aliases = {"Tehnu"}, } m["ncb-nan"] = { "Nancowry", 6962504, "ncb", aliases = {"Nankwari"}, } ---------------------------------------------------------------------------------------------------------------------- -- Austronesian varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Malay and related varieties m["ms-old"] = { -- this has the ISO code 'omy' "Old Malay", nil, "ms", } m["ms-cla"] = { "Classical Malay", nil, "ms", ancestors = "ms-old", } m["pse-bsm"] = { "Besemah", nil, "pse", } m["bew-kot"] = { "Betawi Kota", nil, "bew", aliases = {"Urban Betawi"}, -- in Jakarta } -- Philippine varieties m["xnn"] = { "Northern Kankanaey", 12953609, "kne", aliases = {"Northern Kankanay", "Northern Kankana-ey"}, } m["tl-old"] = { "Old Tagalog", 12967437, "tl", } m["tl-cls"] = { "Classical Tagalog", nil, "tl", } ---------------------------------------------------------------------------------------------------------------------- -- Caucasian varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Kartvelian varieties m["ka-mid"] = { "Middle Georgian", nil, "ka", ancestors = "oge", } ---------------------------------------------------------------------------------------------------------------------- -- Dravidian varieties -- ---------------------------------------------------------------------------------------------------------------------- m["ta-mid"] = { "Middle Tamil", 20987434, "ta", } m["kn-hav"] = { "Havigannada", 24276369, "kn", } m["kn-kun"] = { "Kundagannada", 6444255, "kn", } ---------------------------------------------------------------------------------------------------------------------- -- Indo-European varieties -- ---------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------- -- Albanian varieties -- -------------------------------------------------------------------------------------- m["aln"] = { "Gheg Albanian", 181037, "sq", aliases = {"Gheg"}, } m["aae"] = { "Arbëresh Albanian", 1075302, "als", aliases = {"Arbëreshë", "Arbëresh"}, } m["aat"] = { "Arvanitika Albanian", 29347, "als", aliases = {"Arvanitika"}, } m["als"] = { "Tosk Albanian", 180937, "sq", aliases = {"Tosk"}, } -------------------------------------------------------------------------------------- -- Armenian varieties -- -------------------------------------------------------------------------------------- m["hyw"] = { "Western Armenian", 180945, "hy", } m["hye"] = { "Eastern Armenian", 181059, "hy", } -------------------------------------------------------------------------------------- -- Balto-Slavic varieties -- -------------------------------------------------------------------------------------- ------------------------------------------------------------------------- -- Baltic varieties -- ------------------------------------------------------------------------- m["bat-pro"] = { "ဗေါဝ်တေတ်-အခိုက်ကၞာ", 1703347, "ine-bsl-pro", } m["bat-dni"] = { "Dnieper Baltic", 4163178, "bat-pro", family = "bat", aliases = {"Dniepr Baltic", "Dnieper-Oka Baltic", "Dniepr-Oka Baltic"}, } m["bat-gol"] = { "Golyad", 4142855, "bat-dni", aliases = {"Eastern Galindian", "East Galindian"}, } ------------------------------------------------------------------------- -- Slavic varieties -- ------------------------------------------------------------------------- ----------------------------------------------------- -- Bulgarian varieties -- ----------------------------------------------------- m["cu-bgm"] = { "ဗူလ်ဂရဳယာန် လဒေါဝ်", 12294897, "cu", ancestors = "cu" } ----------------------------------------------------- -- Church Slavonic varieties -- ----------------------------------------------------- -- Old Moscow Church Slavonic deleted as it seems not distinct enough from Russian (Synodal) Church Slavonic. m["zls-chs-ru"] = { "Russian Church Slavonic", 21662400, "zls-chs", aliases = {"Synodal Church Slavonic", "New Moscow Church Slavonic", "Novomoskovsk Church Slavonic"}, } m["zls-chs-uk"] = { "Ukrainian Church Slavonic", 12153548, "zls-chs", aliases = {"Rusyn Church Slavonic", "Belarusian Church Slavonic"}, } --[=[ -- Not sure about these yet. m["zls-chs-bg"] = { "Bulgarian Church Slavonic", nil, "zls-chs", } m["zls-chs-cs"] = { "Czech Church Slavonic", nil, "zls-chs", } m["zls-chs-hr"] = { "Croatian Church Slavonic", nil, "zls-chs", } m["zls-chs-mk"] = { "Macedonian Church Slavonic", nil, "zls-chs", } m["zls-chs-ro"] = { "Romanian Church Slavonic", nil, "zls-chs", } m["zls-chs-sr"] = { "Serbian Church Slavonic", nil, "zls-chs", } ]=] ----------------------------------------------------- -- Czech varieties -- ----------------------------------------------------- m["cs-ear"] = { "Early Modern Czech", nil, "cs", ancestors = "zlw-ocs" } ----------------------------------------------------- -- East Slavic varieties -- ----------------------------------------------------- m["zle-ops"] = { "Old Pskovian", 4167885, "zle-ono", } m["zle-mru"] = { "ရုသျှာ လဒေါဝ်", 35228, "ru", "Cyrs", ancestors = "orv", translit = "ru-translit", strip_diacritics = { Cyrs = { remove_diacritics = c.grave .. c.acute .. c.diaer, }, }, } m["zle-mbe"] = { "Middle Belarusian", 13211, "zle-ort", ancestors = "zle-ort", } m["zle-muk"] = { "ယူကရိန် လဒေါဝ်", 13211, "zle-ort", ancestors = "zle-ort", } m["uk-CA"] = { "Canadian Ukrainian", 4161010, "uk", } m["crp-cpr-kya"] = { "Kyakhta Chinese Pidgin Russian", 1062960, "crp-cpr", } ----------------------------------------------------- -- Polish varieties -- ----------------------------------------------------- m["zlw-mpl"] = { "ပဝ်လာန် လဒေါဝ်", 402878, "pl", ancestors = "zlw-opl", strip_diacritics = { remove_diacritics = c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ó", "ó", "Ś", "ś", "Ź", "ź"}, }, } m["pl-gre"] = { "Greater Polish", 4106789, "pl", } m["pl-les"] = { "Lesser Polish", 361709, "pl", } m["pl-mas"] = { "Masovian Polish", 4274559, "pl", } m["pl-gor"] = { "Goral", 452889, "pl", } ----------------------------------------------------- -- Serbo-Croatian varieties -- ----------------------------------------------------- m["ckm"] = { "Chakavian Serbo-Croatian", 337565, "sh", aliases = {"Čakavian"}, } m["kjv"] = { "Kajkavian Serbo-Croatian", 838165, "sh", } m["sh-tor"] = { -- Linguist code srp-tor "Torlakian Serbo-Croatian", 1078803, "sh", aliases = {"Torlak"}, } -------------------------------------------------------------------------------------- -- Celtic varieties -- -------------------------------------------------------------------------------------- ----------------------------------------------------- -- Brythonic varieties -- ----------------------------------------------------- m["bry-ear"] = { "Early Brythonic", nil, "cel-bry-pro", } m["bry-lat"] = { "Late Brythonic", nil, "cel-bry-pro", } ----------------------------------------------------- -- Gaulish varieties -- ----------------------------------------------------- m["xcg"] = { "Cisalpine Gaulish", 3832927, "cel-gau", } m["xtg"] = { "Transalpine Gaulish", 29977, "cel-gau", } ----------------------------------------------------- -- Welsh varieties -- ----------------------------------------------------- m["cy-nor"] = { "North Wales Welsh", 13127692, "cy", aliases = {"North Walian Welsh", "Northern Welsh"}, } m["cy-sou"] = { "South Wales Welsh", 13127689, "cy", aliases = {"South Walian Welsh", "Southern Welsh"}, } -------------------------------------------------------------------------------------- -- Germanic varieties -- -------------------------------------------------------------------------------------- -- Proto-West Germanic varieties m["frk"] = { "Frankish", 10860505, "gmw-pro", family = "gmw-frk", aliases = {"Old Frankish"}, } m["gem-sue"] = { "Suevic", 134600275, "gmw-pro", aliases = {"Suebian"}, } m["gmw-afr-pro"] = { "Proto-Anglo-Frisian", 134603379, "gmw-nsg-pro", family = "gmw-afr", } m["gmw-nsg-pro"] = { "Proto-North Sea Germanic", 134603374, "gmw-pro", family = "gmw-nsg", aliases = {"Proto-Ingvaeonic"}, } ----------------------------------------------------- -- Dutch varieties -- ----------------------------------------------------- m["nl-BE"] = { "Belgian Dutch", 34147, "nl", aliases = {"Flemish", "Flemish Dutch", "Southern Dutch"}, } ----------------------------------------------------- -- English and Scots varieties -- ----------------------------------------------------- -- English varieties m["en-AU"] = { "Australian English", 44679, "en", } m["en-GB"] = { "British English", 7979, "en", } m["en-GB-SCT"] = { "Scottish English", 1553250, "en-GB", } m["en-GB-WLS"] = { "Welsh English", 2363292, "en-GB", } m["en-IM"] = { "Manx English", 6753295, "en-GB", } m["en-aae"] = { "Australian Aboriginal English", 783347, "en-AU", } m["en-ear"] = { "Early Modern English", 1472196, "en", ancestors = "enm", aliases = {"Early New English"}, } m["en-geo"] = { "Geordie", 653421, "en", ancestors = "enm-nor", } m["en-IE"] = { -- FIXME: "IE" doesn't cover Northern Ireland "Irish English", 665624, "en", } m["en-uls"] = { "Ulster English", 6840826, "en-IE", } m["en-GB-NIR"] = { "Northern Irish English", 6840826, -- actually the code for Ulster English "en-uls", } m["en-NNN"] = { -- NA = Namibia; NNN is NATO 3-letter code for North America "North American English", 7053766, "en", ietf_subtag = "en-021" -- 021 = UN M49 code for "Northern America" (i.e. North America wihout Central America or the Caribbean) } m["en-US"] = { "American English", 7976, "en-NNN", } m["en-NZ"] = { "New Zealand English", 44661, "en" } m["en-ZA"] = { "South African English", 1156228, "en" } m["en-US-CA"] = { "California English", 1026812, "en-US", } m["en-CA"] = { "Canadian English", 44676, "en-US", } m["en-HK"] = { "Hong Kong English", 1068863, "en", } m["en-IN"] = { "Indian English", 1348800, "en", } m["pld"] = { "Polari", 1359130, "en", } -- Scots varieties m["sco-ins"] = { "Insular Scots", 16919205, "sco", } m["sco-uls"] = { "Ulster Scots", 201966, "sco", } m["sco-nor"] = { "Northern Scots", 16928150, "sco", } m["sco-sou"] = { "Southern Scots", 7570457, "sco", aliases = {"South Scots", "Borders Scots"}, } -- Middle English varieties m["enm-esc"] = { -- Part of Middle English until it developed into Middle Scots. "Early Scots", 5326738, "enm", ancestors = "enm-nor", aliases = {"Old Scots", "Scottish Middle English"}, } m["enm-emi"] = { "East Midland Middle English", 134238810, "enm", ancestors = "ang-ang", -- Technically ang-mer, but attested Mercian is mostly WM IIRC } m["enm-ken"] = { "Kentish Middle English", 134238532, "enm", ancestors = "ang-ken", } m["enm-nor"] = { "Northern Middle English", 134238541, "enm", ancestors = "ang-nor", } m["enm-sou"] = { "Southern Middle English", 134238528, "enm", ancestors = "ang-wsx", } m["enm-wmi"] = { "West Midland Middle English", 134238824, "enm", ancestors = "ang-mer", } -- Old English varieties -- Includes both Mercian and Northumbrian. m["ang-ang"] = { "Anglian Old English", 121142917, "ang", } m["ang-ken"] = { "Kentish Old English", 11687485, "ang", } m["ang-mer"] = { "Mercian Old English", 602072, "ang-ang", } m["ang-nor"] = { "Northumbrian Old English", 1798915, "ang-ang", } m["ang-wsx"] = { "West Saxon Old English", 2658603, "ang", } ----------------------------------------------------- -- High German varieties -- ----------------------------------------------------- -- (modern) German varieties m["de-AT"] = { "Austrian German", 306626, "de", } m["de-AT-vie"] = { "Viennese German", 56474, "de-AT", } m["de-CH"] = { "Switzerland German", 1366643, "de", aliases = {"Schweizer Hochdeutsch", "Swiss Standard German", "Swiss High German"}, } m["de-bal"] = { "Baltic German", 15785413, "de", } m["de-ear"] = { "Early New High German", 1472199, "de", ancestors = "gmh", aliases = {"Early Modern High German"}, } m["ksh"] = { "Kölsch", 4624, "gmw-cfr", } m["pfl"] = { "Palatine German", 23014, "gmw-rfr", aliases = {"Pfälzisch", "Pälzisch", "Palatinate German"}, } m["sli"] = { "Silesian East Central German", 152965, "gmw-ecg", aliases = {"Silesian"}, } m["sxu"] = { "Upper Saxon German", 699284, "gmw-ecg", } -- Old High German varieties m["lng"] = { "Lombardic", 35972, "goh", } -- Alemannic German varieties m["gsw-low"] = { "Low Alemannic German", 503724, "gsw", } m["gsw-FR-als"] = { "Alsatian Alemannic German", 8786, "gsw-low", } m["gsw-hig"] = { "High Alemannic German", 503728, "gsw", } m["gsw-hst"] = { "Highest Alemannic German", 687538, "gsw", } m["wae"] = { "Walser German", 680517, "gsw-hst", } ----------------------------------------------------- -- Low German varieties -- ----------------------------------------------------- m["nds-de"] = { "German Low German", 25433, "nds", ietf_subtag = "nds-DE", -- should we make this the actual code? wikimedia_codes = "nds", } m["nds-nl"] = { "Dutch Low Saxon", 516137, "nds", ietf_subtag = "nds-NL", -- should we make this the actual code? wikimedia_codes = "nds-nl", } m["act"] = { "Achterhoeks", 153627, "nds-nl", aliases = {"Achterhoek", "Achterhooks"}, } m["drt"] = { "Drents", 2736709, "nds-nl", aliases = {"Drèents", "Dreins", "Dreints", "Drints"}, } m["frs"] = { "East Frisian Low German", 149208, "nds-de", aliases = {"East Frisian", "East Frisian Low Saxon"}, } m["gos"] = { "Gronings", 508854, "nds-nl", aliases = {"Grunnegs", "Grönnegs"}, } m["nds-lpr"] = { "Low Prussian", 33982, "nds-de", } m["sdz"] = { "Sallands", 3436668, "nds-nl", aliases = {"Sallaans", "Sallaands"}, } m["stl"] = { "Stellingwerfs", 506010, "nds-nl", aliases = {"Stellingwarfs"}, } m["twd"] = { "Twents", 497363, "nds-nl", aliases = {"Tweants"}, } m["vel"] = { "Veluws", 2484810, "nds-nl", } m["wep"] = { "Westphalian", 505655, "nds-de", aliases = {"Westfalish", "Westphalien"}, } ----------------------------------------------------- -- North Frisian varieties -- ----------------------------------------------------- m["frr-ins"] = { "Insular North Frisian", 110629610, "frr", } m["frr-fam"] = { "Föhr-Amrum North Frisian", 110629601, "frr-ins", } m["frr-foh"] = { "Föhr North Frisian", 28185, "frr-fam", aliases = {"Föhr Frisian", "Fering", "Ferring", -- Glottolog }, varieties = {"Aasdring", "Weesdring"}, } m["frr-amr"] = { "Amrum North Frisian", 28192, "frr-fam", aliases = {"Amrum Frisian", "Amrum", "Öömrang"}, } m["frr-hel"] = { "Heligoland North Frisian", 28086, "frr-ins", aliases = {"Heligoland Frisian", "Halunder", "Heligolandic Frisian", "Heligolandic North Frisian", "Helgoland Frisian", "Helgoland North Frisian", "Helgoland"}, } m["frr-syl"] = { "Sylt North Frisian", 28181, "frr-ins", aliases = {"Sylt Frisian", "Söl'ring", "Sölreng", -- Glottolog }, } m["frr-mai"] = { "Mainland North Frisian", 110629626, "frr", } m["frr-hal"] = { "Halligen North Frisian", 28177, "frr-mai", aliases = {"Halligen Frisian", "Halifreesk", "Hallingen Frisian", "Hallingen North Frisian", "Hallingen", -- Glottolog }, } m["frr-moo"] = { "Mooring North Frisian", 28187, "frr-mai", aliases = {"Bökingharde North Frisian", "Bökingharde Frisian", "Böökinghiirder frasch", "Mooring", "Moring", }, varieties = {{"East Mooring", "Ostermooring"}, {"West Mooring", "Westermooring"}}, } m["frr-kar"] = { "Karrharde North Frisian", 28191, "frr-mai", aliases = {"Karrharde Frisian", "Karrharder", }, } m["frr-goe"] = { -- Technically this refers to three adjacent dialects (Northern, Central and Southern), the latter of which went -- extinct in 1980-1981. As a result, Glottolog speaks of "Norder-Mittelgoesharde", referring to the remaining two. "Goesharde North Frisian", 28183, "frr-mai", aliases = {"Norder-Mittelgoesharde North Frisian", "Norder-Mittelgoesharde Frisian", "Norder-Mittelgoesharde", "Goesharde Frisian", "Goesharde", "Gooshiirder", }, } m["frr-wie"] = { "Wiedingharde North Frisian", 28171, "frr-mai", aliases = {"Wiedingharde Frisian", "Wiedingharde", "Wiringhiirder freesk", }, } ----------------------------------------------------- -- Old Norse varieties -- ----------------------------------------------------- m["non-grn"] = { "Greenlandic Norse", 855236, "non-own", } m["non-oen"] = { "Old East Norse", 10498031, "non", ancestors = "non", } m["non-own"] = { "Old West Norse", 2377483, "non", ancestors = "non", } ----------------------------------------------------- -- Old Swedish varieties -- ----------------------------------------------------- m["gmq-osw-lat"] = { "Late Old Swedish", 10723594, "gmq-osw", ancestors = "gmq-osw", } -------------------------------------------------------------------------------------- -- Greek varieties -- -------------------------------------------------------------------------------------- m["qsb-grc"] = { "Pre-Greek", 965052, "und", family = "qfa-sub", } m["grc-aeo"] = { "Aeolic Greek", 406373, "grc", aliases = {"Lesbic Greek", "Lesbian Greek", "Aeolian Greek"}, } m["grc-arc"] = { "Arcadian Greek", nil, "grc-arp", } m["grc-arp"] = { "Arcadocypriot Greek", 499602, "grc", } m["grc-att"] = { "Attic Greek", 506588, "grc", } m["grc-boi"] = { "Boeotian Greek", 406373, "grc-aeo", } m["grc-cyp"] = { "Cypriot Ancient Greek", -- to distinguish from Cypriot Greek below nil, "grc-arp", } m["grc-dor"] = { "Doric Greek", 285494, "grc", } m["grc-ela"] = { "Elean Greek", nil, "grc", } m["grc-epi"] = { "Epic Greek", 990062, "grc", aliases = {"Homeric Greek"}, } m["grc-ion"] = { "Ionic Greek", 504165, "grc", } m["grc-koi"] = { "ဂရေတ် ခါဝ်အိန်", 107358, "grc", ancestors = "grc-att", aliases = {"Hellenistic Greek"}, } m["grc-kre"] = { "Cretan Ancient Greek", -- to distinguish from Cretan Greek below nil, "grc-dor", } m["grc-opl"] = { "Opuntian Locrian", nil, "grc", } m["grc-ozl"] = { "Ozolian Locrian", nil, "grc", } m["grc-pam"] = { "Pamphylian Greek", 2271793, "grc", } m["grc-ths"] = { "Thessalian Greek", 406373, "grc-aeo", } m["gkm"] = { "ဂရေတ် ဗေတ်သေန်ထေၚ်", 36387, "grc", ancestors = "grc-koi", aliases = {"Medieval Greek"}, } m["el-cyp"] = { "Cypriot Greek", 245899, "el", aliases = {"Cypriotic Greek"}, } m["el-pap"] = { "Paphian Greek", nil, "el", } m["el-crt"] = { "Cretan Greek", 588306, "el", } m["el-kth"] = { "Katharevousa", 35961, "el", "Polyt", ancestors = "gkm", aliases = {"Katharevousa Greek"}, -- Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["el-kal"] = { "Kaliarda", 12878658, "el", } -------------------------------------------------------------------------------------- -- Indo-Iranian varieties -- -------------------------------------------------------------------------------------- ------------------------------------------------------------------------- -- Indo-Aryan varieties -- ------------------------------------------------------------------------- -- reconstructed intermediate stages m["pra-pro"] = { "Proto-New Indo-Aryan", nil, "pra", } m["inc-ash-pro"] = { "Proto-Middle Indo-Aryan", nil, "inc-ash", } m["inc-mit"] = { "Mitanni", 1986700, "inc-pro", } m["bra-old"] = { "Old Braj", nil, "bra", } -- Apabhramsas m["inc-aav"] = { "အဝဟတာ", nil, "inc-apa", aliases = {"Abahattha"}, } m["inc-asa"] = { "သဥူရေသဳနဳ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-agu"] = { "ဂူဂျာရာ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-aka"] = { "ခေပ်သမဳရဳ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-ama"] = { "မဟာရာတ်သပ်ထရဳ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-ata"] = { "တာကာ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } m["inc-avr"] = { "ဝရာခါဒါ အာပ်ပါပရာမ်သာ", nil, "inc-apa", } -- Assamese varieties m["as-bkm"] = { "Barpetia Kamrupi Assamese", 30642960, "as", } m["as-nkm"] = { "Nalbaria Kamrupi Assamese", 85787678, "as", } m["as-pkm"] = { "Palasbaria Kamrupi Assamese", nil, "as", } -- Bengali varieties m["bn-dvn"] = { "Dhakaiya Vaṅga Bengali", 48726851, "bn", -- Eastern Bengali variety } m["bn-nvn"] = { "Noakhailla Vaṅga Bengali", 107548681, "bn", -- Eastern Bengali variety } -- Dhivehi varieties m["dv-old"] = { "Old Dhivehi", 117790875, "dv", } m["dv-mul"] = { "Mulaku Dhivehi", nil, "dv", aliases = {"Mulaku Divehi", "Mulaku Bas"}, } m["dv-huv"] = { "Huvadhu Dhivehi", nil, "dv", aliases = {"Huvadhu Divehi", "Huvadhu Bas"}, } m["dv-add"] = { "Addu Dhivehi", nil, "dv", aliases = {"Addu Divehi", "Addu Bas"}, } -- Gujarati varieties m["gu-kat"] = { "Kathiyawadi", nil, "gu", aliases = {"Kathiyawadi Gujarati", "Kathiawadi"}, } m["gu-lda"] = { "Lisan ud-Dawat Gujarati", nil, "gu", aliases = {"Lisan ud-Dawat", "LDA"}, } -- Hindi varieties m["hi-mum"] = { "Bombay Hindi", 3543151, "hi", aliases = {"Mumbai Hindi", "Bambaiyya Hindi"}, } m["hi-mid"] = { "Middle Hindi", nil, "inc-ohi", ancestors = "inc-ohi", } -- Konkani varieties m["kok-mid"] = { "Middle Konkani", nil, "kok", aliases = {"Medieval Konkani"}, } m["kok-old"] = { "Old Konkani", nil, "kok", aliases = {"Early Konkani"}, } -- Prakrits m["pra-ard"] = { "အာတ်ဓၟဂါတ်ဒဳ ပရာကရေတ်", 35217, "pra", aliases = {"Ardhamagadhi"}, } m["pra-hel"] = { "ဟေဠူ ပရာကရေတ်", 15080869, "pra", aliases = {"Elu", "Elu Prakrit", "Helu"}, } m["pra-kha"] = { "ခါဿာ ပရာကရေတ်", nil, "pra", aliases = {"Khasa"}, } m["pra-mag"] = { "မဂ္ဂဒိ ပရာကရေတ်", -- Not to be confused with Magahi (mag) 2652214, "pra", aliases = {"Magadhi"}, } m["pra-mah"] = { "မဟာရာတ်ထရဳ ပရာကရေတ်", 2586773, "pra", aliases = {"Maharashtri Prakrit", "Maharastri", "Maharashtri"}, } m["pra-pai"] = { "ပါအေတ်သာသဳ ပရာကရေတ်", 2995607, "pra-sau", aliases = {"Paisaci", "Paisachi"}, ancestors = "pra-sau" } m["pra-sau"] = { "သောရာသေနဳ ပရာကရေတ်", 2452885, "pra", aliases = {"Sauraseni", "Shauraseni"}, } m["pra-ava"] = { "အဗါန်တဳ", nil, "pra", aliases = {"Avanti Prakrit"}, } m["pra-pra"] = { "ပရာသဳယျာ", nil, "pra", aliases = {"Pracya Prakrit"}, } m["pra-bah"] = { "ပါလိကဳ", nil, "pra", aliases = {"Bahliki Prakrit"}, } m["pra-dak"] = { "ထေတ်သဳနတာယျ", nil, "pra", aliases = {"Daksinatya Prakrit"}, } m["pra-sak"] = { "သာကာရဳ", nil, "pra", aliases = {"Sakari Prakrit"}, } m["pra-can"] = { "ခေန်ဒါလဳ", nil, "pra", aliases = {"Candali Prakrit"}, } m["pra-sab"] = { "သာဗါရဳ", nil, "pra", aliases = {"Sabari Prakrit"}, } m["pra-abh"] = { "အဖိရဳ", nil, "pra", aliases = {"Abhiri Prakrit"}, } m["pra-dra"] = { "ဒရာမဳလဳ", nil, "pra", aliases = {"Dramili Prakrit"}, } m["pra-odr"] = { "အဝ်ဒရဳ", nil, "pra", aliases = {"Odri Prakrit"}, } -- Punjabi varieties m["pnb"] = { "Western Punjabi", 58635, "pa", "pa-Arab", } -- Sanskrit varieties m["vsn"] = { "Vedic Sanskrit", 36858, "sa", } m["cls"] = { "Classical Sanskrit", 9333703, "sa", } m["sa-bhs"] = { "Buddhist Hybrid Sanskrit", 248758, "sa", } m["sa-bra"] = { "Brahmanic Sanskrit", 139822891, "vsn", } m["sa-epi"] = { "Epic Sanskrit", 56702805, "cls", } m["sa-neo"] = { "New Sanskrit", nil, "sa", } m["sa-rig"] = { "Rigvedic Sanskrit", 139822680, "vsn", } -- Sinhalese varieties m["si-med"] = { "Medieval Sinhalese", nil, "si", aliases = {"Medieval Sinhala"}, } ------------------------------------------------------------------------- -- Iranian varieties -- ------------------------------------------------------------------------- m["qsb-bma"] = { "the BMAC substrate", 133187435, "und", family = "qfa-sub", aliases = {"the Bactria-Margiana substrate", "the Bactria-Margiana Archaeological Complex substrate"}, } -- Historical and current Iranian dialects m["ae-old"] = { "Old Avestan", 29572, "ae", aliases = {"Gathic Avestan"}, } m["ae-yng"] = { "Younger Avestan", 29572, "ae-old", aliases = {"Young Avestan"}, } m["bcc"] = { "Southern Balochi", 33049, "bal", aliases = {"Southern Baluchi"}, } m["bgp"] = { "Eastern Balochi", 33049, "bal", aliases = {"Eastern Baluchi"}, } m["bgn"] = { "Western Balochi", 33049, "bal", aliases = {"Western Baluchi"}, } m["bsg-ban"] = { "Bandari", nil, "bsg", } m["bsg-hor"] = { "Hormozi", nil, "bsg", } m["bsg-min"] = { "Minabi", nil, "bsg", } m["kho-old"] = { "Old Khotanese", nil, "kho", } m["kho-lat"] = { "Late Khotanese", nil, "kho-old", } m["peo-ear"] = { "Early Old Persian", nil, "peo", } m["peo-lat"] = { "Late Old Persian", nil, "peo", } m["pal-ear"] = { "Early Middle Persian", nil, "pal", } m["pal-lat"] = { "Late Middle Persian", nil, "pal", ancestors = "pal-ear", } m["ps-nwe"] = { "Northwestern Pashto", nil, "ps", } m["ps-cgi"] = { "Central Ghilzay", nil, "ps-nwe", } m["ps-mah"] = { "Mahsudi", nil, "ps-nwe", } m["ps-nea"] = { "Northeastern Pashto", nil, "ps", } m["ps-afr"] = { "Afridi", nil, "ps-nea", } m["ps-bng"] = { "Bangash", nil, "ps-nea", } m["ps-xat"] = { "Khatak", nil, "ps-nea", } m["ps-pes"] = { "Peshawari", nil, "ps-nea", } m["ps-sea"] = { "Southeastern Pashto", nil, "ps", } m["ps-ban"] = { "Bannu", nil, "ps-sea", } m["ps-kak"] = { "Kakari", nil, "ps-sea", } m["ps-ser"] = { "Sher", nil, "ps-sea", } m["ps-waz"] = { "Waziri", 12274473, "ps-sea", } m["ps-swe"] = { "Southwestern Pashto", nil, "ps", } m["ps-kan"] = { "Kandahari", nil, "ps-swe", } m["ps-jad"] = { "Jadrani", nil, "ps", ancestors = "ira-pat-pro" } m["xme-azr"] = { "Old Azari", nil, "xme-ott", aliases = {"Old Azeri", "Azari", "Azeri", "Āḏarī", "Adari", "Adhari"}, } m["xme-ttc-cen"] = { "Central Tati", nil, "xme-ott", } m["xme-ttc-eas"] = { "Eastern Tati", nil, "xme-ott", } m["xme-ttc-nor"] = { "Northern Tati", nil, "xme-ott", } m["xme-ttc-sou"] = { "Southern Tati", nil, "xme-ott", } m["xme-ttc-wes"] = { "Western Tati", nil, "xme-ott", } m["xmn"] = { "Manichaean Middle Persian", nil, "pal-lat", } m["fa-ear"] = { "Early New Persian", 127413796, "fa", ancestors = "pal-lat", translit = "fa-cls-translit", } m["fa-cls"] = { "Classical Persian", 9168, "fa", ancestors = "fa-ear", translit = "fa-cls-translit", } m["fa-ira"] = { "Iranian Persian", 3513637, "fa", aliases = {"Modern Persian", "Western Persian"}, translit = "fa-ira-translit", } m["prs"] = { "Dari", 178440, "fa", aliases = {"Dari Persian", "Central Persian", "Eastern Persian", "Afghan Persian"}, translit = "fa-cls-translit", } m["haz"] = { "Hazaragi", 33398, "prs", translit = "fa-cls-translit", } m["os-dig"] = { "Digor Ossetian", 3027861, "os", aliases = {"Digoron", "Digor"}, } m["os-iro"] = { "Iron Ossetian", nil, "os", aliases = {"Iron"}, } m["sog-ear"] = { "Early Sogdian", nil, "sog", } m["sog-lat"] = { "Late Sogdian", nil, "sog-ear", } m["ro-MD"] = { "Moldovan", 36392, "ro", aliases = {"Moldavian"}, } m["oru-kan"] = { "Kaniguram", 6363164, "oru", } m["oru-log"] = { "Logar", nil, "oru", } m["oos"] = { "Old Ossetic", 65455882, "xln", } m["oos-ear"] = { "Early Old Ossetic", nil, "oos", } m["oos-lat"] = { "Late Old Ossetic", nil, "oos", } m["rdb-jir"] = { "Jirofti", nil, "rdb", } m["rdb-kah"] = { "Kahnuji", nil, "rdb", } -- Southwestern Fars lects m["fay-bur"] = { "Burenjani", nil, "fay", } m["fay-bsh"] = { "Bushehri", nil, "fay", } m["fay-dsh"] = { "Dashtaki", nil, "fay", } m["fay-dav"] = { "Davani", 5228140, "fay", } m["fay-eze"] = { "Emamzada Esmaili", nil, "fay", } m["fay-gav"] = { "Gavkoshaki", nil, "fay", } m["fay-kho"] = { "Khollari", nil, "fay", } m["fay-kon"] = { "Kondazi", nil, "fay", } m["fay-kzo"] = { "Old Kazeruni", nil, "fay", } m["fay-mas"] = { "Masarami", nil, "fay", } m["fay-pap"] = { "Papuni", nil, "fay", } m["fay-sam"] = { "Samghani", nil, "fay", } m["fay-shr"] = { "Shirazi", nil, "fay", } m["fay-sho"] = { "Old Shirazi", nil, "fay", } m["fay-kar"] = { "Khargi", nil, "fay", } m["fay-sor"] = { "Sorkhi", nil, "fay", } -- Talysh lects m["tly-cen"] = { "Central Talysh", nil, "tly", } m["tly-asa"] = { "Asalemi", nil, "tly-cen", } m["tly-kar"] = { "Karganrudi", nil, "tly-cen", } m["tly-tul"] = { "Tularudi", nil, "tly-cen", } m["tly-tal"] = { "Taleshdulabi", nil, "tly-cen", } m["tly-nor"] = { "Northern Talysh", nil, "tly", } m["tly-aze"] = { "Azerbaijani Talysh", nil, "tly-nor", } m["tly-anb"] = { "Anbarani", nil, "tly-nor", } m["tly-sou"] = { "Southern Talysh", nil, "tly", } m["tly-fum"] = { "Fumani", nil, "tly-sou", } m["tly-msu"] = { "Masulei", nil, "tly-sou", } m["tly-msa"] = { "Masali", nil, "tly-sou", } m["tly-san"] = { "Shandarmani", nil, "tly-sou", } -- Tafreshi lects m["xme-amo"] = { "Amorehi", nil, "xme-taf", } m["atn"] = { "Ashtiani", 3436590, "xme-taf", } m["xme-bor"] = { "Borujerdi", nil, "xme-taf", } m["xme-ham"] = { "Hamadani", 6302426, "xme-taf", } m["xme-kah"] = { "Kahaki", nil, "xme-taf", } m["vaf"] = { "Vafsi", 32611, "xme-taf", } -- Kermanic lects m["kfm"] = { "Khunsari", 6403030, "xme-ker", } m["xme-mah"] = { "Mahallati", nil, "xme-ker", } m["xme-von"] = { "Vonishuni", nil, "xme-ker", } m["xme-bdr"] = { "Badrudi", nil, "xme-ker", } m["xme-del"] = { "Delijani", nil, "xme-ker", } m["xme-kas"] = { "Kashani", nil, "xme-ker", } m["xme-kes"] = { "Kesehi", nil, "xme-ker", } m["xme-mey"] = { "Meymehi", nil, "xme-ker", } m["ntz"] = { "Natanzi", 6968399, "xme-ker", } m["xme-abz"] = { "Abuzeydabadi", nil, "xme-ker", } m["xme-aby"] = { "Abyanehi", nil, "xme-ker", } m["xme-far"] = { "Farizandi", nil, "xme-ker", } m["xme-jow"] = { "Jowshaqani", nil, "xme-ker", } m["xme-nas"] = { "Nashalji", nil, "xme-ker", } m["xme-qoh"] = { "Qohrudi", nil, "xme-ker", } m["xme-yar"] = { "Yarandi", nil, "xme-ker", } m["soj"] = { "Soi", 7930463, "xme-ker", aliases = {"Sohi"}, } m["xme-tar"] = { "Tari", nil, "xme-ker", } m["gzi"] = { "Gazi", 5529130, "xme-ker", } m["xme-sed"] = { "Sedehi", nil, "xme-ker", } m["xme-ard"] = { "Ardestani", nil, "xme-ker", } m["xme-zef"] = { "Zefrehi", nil, "xme-ker", } m["xme-isf"] = { "Isfahani", nil, "xme-ker", } m["xme-kaf"] = { "Kafroni", nil, "xme-ker", } m["xme-vrz"] = { "Varzenehi", nil, "xme-ker", } m["xme-xur"] = { "Khuri", nil, "xme-ker", } m["nyq"] = { "Nayini", 6983146, "xme-ker", } m["xme-ana"] = { "Anaraki", nil, "xme-ker", } m["gbz"] = { "Zoroastrian Dari", 32389, "xme-ker", aliases = {"Behdināni", "Gabri", "Gavrŭni", "Gabrōni"}, } m["xme-krm"] = { "Kermani", nil, "xme-ker", } m["xme-yaz"] = { "Yazdi", nil, "xme-ker", } m["xme-bid"] = { "Bidhandi", nil, "xme-ker", } m["xme-bij"] = { "Bijagani", nil, "xme-ker", } m["xme-cim"] = { "Chimehi", nil, "xme-ker", } m["xme-han"] = { "Hanjani", nil, "xme-ker", } m["xme-kom"] = { "Komjani", nil, "xme-ker", } m["xme-nar"] = { "Naraqi", nil, "xme-ker", } m["xme-nus"] = { "Nushabadi", nil, "xme-ker", } m["xme-qal"] = { "Qalhari", nil, "xme-ker", } m["xme-trh"] = { "Tarehi", nil, "xme-ker", } m["xme-val"] = { "Valujerdi", nil, "xme-ker", } m["xme-var"] = { "Varani", nil, "xme-ker", } m["xme-zor"] = { "Zori", nil, "xme-ker", } -- Ramandi lects m["tks-ebr"] = { "Ebrahimabadi", nil, "tks", } m["tks-sag"] = { "Sagzabadi", nil, "tks", } m["tks-esf"] = { "Esfarvarini", nil, "tks", } m["tks-tak"] = { "Takestani", nil, "tks", } m["tks-cal"] = { "Chali Tati", nil, "tks", aliases = {"Chāli"}, } m["tks-dan"] = { "Danesfani", nil, "tks", } m["tks-xia"] = { "Khiaraji", nil, "tks", } m["tks-xoz"] = { "Khoznini", nil, "tks", } -- Shughni dialects m["sgh-bro"] = { "Bartangi-Oroshori", nil, "sgh", } m["sgh-bar"] = { "Bartangi", nil, "sgh-bro", } m["sgh-oro"] = { "Oroshori", nil, "sgh-bro", aliases = {"Roshorvi"}, } m["sgh-rsx"] = { "Roshani-Khufi", nil, "sgh", } m["sgh-xuf"] = { "Khufi", 2562249, "sgh-rsx", aliases = {"Xufi", "Xūfī"}, } m["sgh-ros"] = { "Roshani", 2597566, "sgh-rsx", aliases = {"Rushani", "Rōšāni"}, } m["sgh-xgb"] = { "Khughni-Bajui", nil, "sgh", } m["sgh-xug"] = { "Khughni", nil, "sgh-xgb", } m["sgh-baj"] = { "Bajui", nil, "sgh-xgb", } ------------------------------------------------------------------------- -- Nuristani varieties -- ------------------------------------------------------------------------- m["bsh-kat"] = { "Kativiri", 2605045, "bsh", aliases = {"Katə́viri"}, } m["xvi"] = { "Kamviri", 1193495, "bsh", aliases = {"Kamvíri"}, } m["bsh-mum"] = { "Mumviri", nil, "bsh", aliases = {"Mumvíri"}, } -------------------------------------------------------------------------------------- -- Italic varieties -- -------------------------------------------------------------------------------------- ------------------------------------------------------------------------- -- Latin varieties -- ------------------------------------------------------------------------- -- Latin varieties by period m["itc-ola"] = { "လပ်တေန်တြေံ", 12289, "la", "Latn, Ital", translit = { Ital = "Ital-translit" }, } m["itc-lan"] = { "Lanuvian", 16890829, "itc-ola", aliases = {"Lanuvine"}, } m["itc-pra"] = { "Praenestine", 16889772, "itc-ola", aliases = {"Praenestinian"}, } m["la-cla"] = { "လပ်တေန်ဝၚ်ဂန္ထ", 253854, "la", } m["la-vul"] = { "လပ်တေန်အရိုၚ်", 37560, "la-cla", } m["la-afr"] = { "African Romance", 162064, "roa-pro", } m["la-lat"] = { "လပ်တေန်လဇုဲ", 1503113, "la", ancestors = "la-cla", } m["la-med"] = { "လပ်တေန် ခေတ်လဒေါဝ်", 1163234, "la", ancestors = "la-lat", } m["la-eme"] = { "လပ်တေန်ခေတ်လဒေါဝ်ဗွဲမပြဟ်", nil, "la-med", } m["la-ecc"] = { "သာသနာခရေတ်လပ်တေန်", 1247932, "la", aliases = {"Church Latin", "Liturgical Latin"}, ancestors = "la-lat", } m["la-ren"] = { "လပ်တေန်ခေတ်ကလေၚ်ပလေဝ်ပ္တိုန်တၟိ", 499083, "la", ancestors = "la-med", } m["la-new"] = { "လပ်တေန်တၟိ", 1248221, "la", aliases = {"Modern Latin"}, ancestors = "la-ren", } m["la-con"] = { "လပ်တေန်ခေတ်ပြိုၚ်ပ္ကာန်", 1246397, "la-new", } ------------------------------------------------------------------------- -- Miscellaneous Italic varieties -- ------------------------------------------------------------------------- m["xfa-cap"] = { "Capenate", 133182969, "xfa", } m["osc-luc"] = { "Lucanian", 3265025, "osc", } m["osc-sam"] = { "Samnite", 133184287, "osc", } ------------------------------------------------------------------------- -- Romance varieties -- ------------------------------------------------------------------------- m["roa-pro"] = { "Proto-Romance", 3408029, "la-lat", ancestors = "la-vul", } ----------------------------------------------------- -- Catalan varieties -- ----------------------------------------------------- m["ca-val"] = { "Valencian", 32641, "ca", } ----------------------------------------------------- -- Franco-Provençal varieties -- ----------------------------------------------------- m["frp-old"] = { "Old Franco-Provençal", nil, "frp", } ----------------------------------------------------- -- French and derived creole varieties -- ----------------------------------------------------- m["fro-nor"] = { "Old Northern French", 2044917, "fro", aliases = {"Old Norman", "Old Norman French"}, } m["fro-pic"] = { "Picard Old French", nil, "fro", } m["xno"] = { "Anglo-Norman", 35214, "fro-nor", } m["xno-law"] = { "Law French", 2044323, "xno", } m["zrp"] = { "Zarphatic", 36994, "fro", aliases = {"Judeo-French"}, pseudo_families = "qfa-jew", } m["fr-CA"] = { "Canadian French", 1450506, "fr", } m["fr-CH"] = { "Swiss French", 1480152, "fr", } m["fr-aca"] = { "Acadian French", 415109, "fr", } m["fr-lou"] = { "Louisiana French", 3083213, "fr", } m["fr-mis"] = { "Missouri French", 3083210, "fr", } m["frc"] = { "Cajun French", 880301, "fr-lou", } m["ht-sdm"] = { "Saint Dominican Creole French", nil, "ht", ancestors = "fr", } -- Norman varieties m["nrf-grn"] = { "Guernsey Norman", 56428, "nrf", aliases = {"Guernsey"}, } m["nrf-jer"] = { "Jersey Norman", 56430, "nrf", aliases = {"Jersey"}, } ----------------------------------------------------- -- Gallo-Italic varieties -- ----------------------------------------------------- m["egl-old"] = { "Old Emilian", nil, "egl", } m["lij-old"] = { "လဳဂူရဳယာန်တြေံ", nil, "lij", aliases = {"Old Genoese"}, } m["lmo-old"] = { "လောန်ဗါတ်တြေံ", 97165320, "lmo", } m["pms-old"] = { "Old Piedmontese", nil, "pms", aliases = {"Old Piemontese"}, } m["vec-old"] = { "Old Venetan", nil, "vec", aliases = {"Old Venetian"}, } m["rgn-old"] = { "Old Romagnol", nil, "rgn", } ----------------------------------------------------- -- Italo-Romance varieties -- ----------------------------------------------------- -- Italian varieties m["roa-oit"] = { "Old Italian", nil, "it", } m["it-CH"] = { "Switzerland Italian", 672147, "it", } -- Other Italo-Romance varieties m["nap-old"] = { "Old Neapolitan", nil, "nap", } m["scn-old"] = { "Old Sicilian", nil, "scn", } ----------------------------------------------------- -- Occitan varieties -- ----------------------------------------------------- m["oc-auv"] = { "Auvergnat", 35359, "oc", aliases = {"Auvernhat", "Auvergnese"}, } m["oc-gas"] = { "ဂေါသ်သကာန်", 35735, "oc", } -- standardized dialect of Gascon m["oc-ara"] = { "Aranese", 10196, "oc-gas", } m["oc-lan"] = { "လာမ်ဂဝေအ်ဒံက်ဃှေန်", 942602, "oc", aliases = {"Lengadocian"}, } m["oc-lim"] = { "လိမူသေန်", 427614, "oc", } m["oc-pro"] = { "ဖရဝ်ဗေန်သော", 241243, "oc", aliases = {"Provencal"}, } m["oc-pro-old"] = { "ဖရဝ်ဗေန်သောတြေံ", 2779185, "pro", } m["oc-viv"] = { "ဝဳဝါရုဝ်-အောဖှာၚ်", 1649613, "oc", } m["oc-jud"] = { "Shuadit", 56472, "oc", aliases = { "Chouhadite", "Chouhadit", "Chouadite", "Chouadit", "Shuhadit", "Judeo-Occitan", "Judæo-Occitan", "Judaeo-Occitan", "Judeo-Provençal", "Judæo-Provençal", "Judaeo-Provençal", "Judeo-Provencal", "Judaeo-Provencal", "Judeo-Comtadin", "Judæo-Comtadin", "Judaeo-Comtadin", }, pseudo_families = "qfa-jew", } ----------------------------------------------------- -- Portuguese and derived creole varieties -- ----------------------------------------------------- -- Portuguese m["pt-BR"] = { "Brazilian Portuguese", 750553, "pt", } m["pt-PT"] = { "European Portuguese", 922399, "pt", } -- Kabuverdianu (Cape Verde Creole, Cape Verdean Creole) m["kea-bar"] = { "Barlavento Kabuverdianu", 2217638, "kea", aliases = {"Barlavento", "Barlavento Creole", "Sampadjudu"}, } m["kea-bvi"] = { "Boa Vista Kabuverdianu", 16501837, "kea-bar", aliases = {"Boa Vista Creole"}, } m["kea-sal"] = { "Sal Kabuverdianu", 18707467, "kea-bar", aliases = {"Sal Creole"}, } m["kea-saa"] = { "Santo Antão Kabuverdianu", 18707472, "kea-bar", aliases = {"Santo Antão Creole"}, } m["kea-sni"] = { "São Nicolau Kabuverdianu", 18707549, "kea-bar", aliases = {"São Nicolau Creole"}, } m["kea-svi"] = { "São Vicente Kabuverdianu", 18707550, "kea-bar", aliases = {"São Vicente Creole"}, } m["kea-sot"] = { "Sotavento Kabuverdianu", 10261559, "kea", aliases = {"Sotavento", "Sotavento Creole", "Badiu"}, } m["kea-bra"] = { "Brava Kabuverdianu", 18670181, "kea-sot", aliases = {"Brava Creole"}, } m["kea-fog"] = { "Fogo Kabuverdianu", 18706861, "kea-sot", aliases = {"Fogo Creole"}, } m["kea-mai"] = { "Maio Kabuverdianu", 18707286, "kea-sot", aliases = {"Maio Creole"}, } m["kea-san"] = { "Santiago Kabuverdianu", 35117, "kea-sot", aliases = {"Santiago Creole"}, } m["kea-alu"] = { "ALUPEC Kabuverdianu", 375704, "kea", aliases = {"ALUPEC", "Alfabeto Unificado para a Escrita do Cabo-Verdiano"}, } ----------------------------------------------------- -- Rhaeto-Romance varieties -- ----------------------------------------------------- -- Friulian varieties m["fur-old"] = { "Old Friulian", nil, "fur", } -- Ladin varieties m["lld-amp"] = { "Ampezan Ladin", 25617466, "lld", aliases = {"Anpezan", "Ampezan", "Ampezzan", "Ampezzano"}, } m["lld-bad"] = { "Badiot Ladin", 3706562, "lld", aliases = {"Badiot", "Badioto", "Badiotto"}, } m["lld-cad"] = { "Cadorino Ladin", 3706570, "lld", aliases = {"Cadorino"}, } m["lld-fas"] = { "Fascian Ladin", 742627, "lld", aliases = {"Fascian", "Fassano"}, } m["lld-fod"] = { "Fodom Ladin", 3706605, "lld", aliases = {"Fodom", "Livinallese"}, } m["lld-for"] = { "Fornes Ladin", 5470374, "lld", aliases = {"Fornes"}, } m["lld-ghe"] = { "Gherdëina Ladin", 3706597, "lld", aliases = {"Gherdëina", "Gardenese", "Val Gardena"}, } m["lld-non"] = { "Nones Ladin", 1055027, "lld", aliases = {"Nones", "Noneso"}, } -- Romansh varieties m["rm-old"] = { "Old Romansh", nil, "rm", } m["rm-put"] = { "Puter Romansh", 688309, "rm", aliases = {"Puter", "Putèr", "Upper Engadine", "rm-puter"}, } m["rm-srm"] = { "Surmiran Romansh", 690216, "rm", aliases = {"Surmiran", "rm-surmiran", "Surmiran-Albula", -- Glottolog }, } m["rm-srs"] = { "Sursilvan Romansh", 688348, "rm", aliases = {"Sursilvan", "rm-sursilv"}, } m["rm-sut"] = { "Sutsilvan Romansh", 688272, "rm", aliases = {"Sutsilvan", "rm-sutsilv"}, varieties = {"Scharans Sutsilvan"}, -- per Glottolog } m["rm-val"] = { "Vallader Romansh", 690226, "rm", aliases = {"Vallader", "Putèr", "Lower Engadine", "rm-vallader"}, } m["rm-gri"] = { "Rumantsch Grischun", 688873, "rm", aliases = {"rm-rumgr"}, } ----------------------------------------------------- -- Sardinian varieties -- ----------------------------------------------------- m["sc-old"] = { "Old Sardinian", nil, "sc", } m["sc-src"] = { "Logudorese", 777974, "sc", aliases = {"Logudorese Sardinian"}, } m["sc-nuo"] = { "Nuorese", nil, "sc-src", aliases = {"Nuorese Sardinian"}, } m["sc-sro"] = { "Campidanese", 35348, "sc", aliases = {"Campidanese Sardinian"}, } ----------------------------------------------------- -- Spanish varieties -- ----------------------------------------------------- m["es-ear"] = { "Early Modern Spanish", 5364419, "es", } m["es-AR"] = { "Rioplatense Spanish", 509780, "es", } m["es-BO"] = { "Bolivian Spanish", 510730, "es", } m["es-CL"] = { "Chilean Spanish", 857295, "es", } m["es-CO"] = { "Colombian Spanish", 1115875, "es", } m["es-CU"] = { "Cuban Spanish", 824909, "es", } m["es-MX"] = { "Mexican Spanish", 616620, "es", } m["es-PE"] = { "Peruvian Spanish", 736236, "es", } m["es-PH"] = { "Philippine Spanish", 22091406, "es", } m["es-US"] = { "United States Spanish", 2301077, "es", aliases = {"US Spanish"}, } --use label "US Spanish" to put Spanish terms in this category m["es-PR"] = { "Puerto Rican Spanish", 7258609, "es", } m["es-VE"] = { "Venezuelan Spanish", 840017, "es", } m["es-lun"] = { "Lunfardo", 1401612, "es", } ---------------------------------------------------------------------------------------------------------------------- -- Japonic varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Japanese varieties m["ja-mid"] = { "ဂျပါန် လဒေါဝ်", 6841474, "ojp", ancestors = "ojp", } m["ja-mid-ear"] = { "Early Middle Japanese", 182695, "ja-mid", } m["ja-mid-lat"] = { "ဂျပါန်တြေံခေတ်လဇုဲ", 1816184, "ja-mid", ancestors = "ja-mid-ear", } m["ja-ear"] = { "Early Modern Japanese", 5326692, "ja", ancestors = "ja-mid-lat", } m["ojp-eas"] = { "Eastern Old Japanese", 65247957, "ojp", } m["ja-cla"] = { "Classical Japanese", 1332057, "ja", -- FIXME: This is redundant because Classical Japanese is considered a child of (Modern) Japanese, which has ja-mid-ear -- (as well as ja-mid-lat) as ancestors. However, the intent here is that the *direct* ancestor of ja-cla is ja-mid-ear -- and ja-mid-lat is not an ancestor. Need to rethink ancestor handling. -- ancestors = "ja-mid-ear", } ---------------------------------------------------------------------------------------------------------------------- -- Koreanic varieties -- ---------------------------------------------------------------------------------------------------------------------- -- Korean varieties m["oko-lat"] = { "ကိုဝ်ရဳယျာတြေံခေတ်လဇုဲ", nil, "oko", } m["okm-ear"] = { "Early Middle Korean", nil, "okm", } m["ko-cen"] = { "Central Korean", nil, "ko", } m["ko-gyg"] = { "Gyeonggi Korean", 485492, "ko-cen", aliases = {"Seoul Korean"}, } m["ko-chu"] = { "Chungcheong Korean", 625800, "ko-cen", aliases = {"Hoseo Korean"}, } m["ko-hwa"] = { "Hwanghae Korean", 16183706, "ko-cen", } m["ko-gan"] = { "Gangwon Korean", 11260444, "ko-cen", aliases = {"Yeongdong Korean"}, } m["ko-gys"] = { "Gyeongsang Korean", 488002, "ko", aliases = {"Southeastern Korean"}, } m["ko-jeo"] = { "Jeolla Korean", 11250166, "ko", aliases = {"Southwestern Korean"}, } m["ko-pyo"] = { "Pyongan Korean", 7263142, "ko", aliases = {"Northwestern Korean"}, } m["ko-ham"] = { "Hamgyong Korean", 860702, "ko", aliases = {"Northeastern Korean"}, } m["ko-yuk"] = { "Yukjin Korean", 16171275, "ko", aliases = {"Yukchin Korean", "Ryukjin Korean", "Ryukchin Korean"}, } ---------------------------------------------------------------------------------------------------------------------- -- Mongolic varieties -- ---------------------------------------------------------------------------------------------------------------------- m["xng-ear"] = { "Early Middle Mongol", nil, "xng", } m["xng-lat"] = { "Late Middle Mongol", nil, "xng", ancestors = "xng-ear", } m["mn-kha"] = { "Khalkha Mongolian", 6399808, "mn", aliases = {"Khalkha"}, } m["mn-ord"] = { "Ordos Mongolian", 716904, "mn", aliases = {"Ordos"}, } m["mn-cha"] = { "Chakhar Mongolian", 907425, "mn", aliases = {"Chakhar"}, } m["mn-khr"] = { "Khorchin Mongolian", 3196210, "mn", aliases = {"Khorchin"}, } ---------------------------------------------------------------------------------------------------------------------- -- Niger-Congo varieties -- ---------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------- -- Akan varieties -- ----------------------------------------------------- m["tw"] = { "Twi Akan", 36850, "ak", aliases = {"Twi"}, } m["abr"] = { "Abron", 34831, "tw", aliases = {"Brong", "Bono", "Bono Twi"}, } m["tw-asa"] = { "Asante Twi", 19261685, "tw", aliases = {"Asante", "Ashanti", "Ashante"}, } m["tw-aku"] = { "Akuapem Twi", 31150449, "tw", aliases = {"Akuapem", "Akuapim", "Akwapem Twi", "Akwapi"}, } m["fat"] = { "Fante Akan", 35570, "ak", aliases = {"Fante", "Fanti", "Fantse", "Mfantse"}, } m["wss"] = { "Wasa", 36914, "ak", } -- creole m["alv-kro"] = { "Kromanti", 1093206, "crp-mar", } ----------------------------------------------------- -- Bantu varieties -- ----------------------------------------------------- m["bnt-cmn"] = { "Common Bantu", nil, "bnt-pro", } m["xh-bha"] = { "Bhaca", 4900493, "xh", aliases = {"isiBhaca", "IsiBhaca"}, } -- Rwanda-Rundi varieties m["rw-kin"] = { "Kinyarwanda", 33573, "rw", aliases = {"Rwanda"}, } m["rw-run"] = { "Kirundi", 33583, "rw", aliases = {"Rundi"}, } ----------------------------------------------------- -- Fula varieties -- ----------------------------------------------------- m["fuc"] = { "Pulaar", 1420205, "ff", } m["fuf"] = { "Pular", 3915357, "ff", } m["ffm"] = { "Maasina Fulfulde", 3915322, "ff", } m["fue"] = { -- no enwiki entry as of yet but frwiki and pmswiki have one "Borgu Fulfulde", 12952426, "ff", } m["fuh"] = { -- no enwiki entry as of yet but frwiki and pmswiki have one "Western Niger Fulfulde", 12952430, "ff", } m["fuq"] = { -- no enwiki entry as of yet but frwiki, hrwiki and pmswiki have one "Central-Eastern Niger Fulfulde", 12628799, "ff", } m["fuv"] = { -- no enwiki entry as of yet but dewiki, frwiki, hrwiki, pmswiki and swwiki have one "Nigerian Fulfulde", 36129, "ff", } m["fub"] = { -- no enwiki entry as of yet but dewiki, frwiki, hrwiki, pmswiki, ptwiki, swwiki and yowiki have one "Adamawa Fulfulde", 34776, "ff", } m["fui"] = { -- no enwiki entry as of yet but pmswiki and swwiki have one "Bagirmi Fulfulde", 11003859, "ff", } ---------------------------------------------------------------------------------------------------------------------- -- Papuan varieties -- ---------------------------------------------------------------------------------------------------------------------- m["kze"] = { "Kosena", 12952663, "auy", } m["ont"] = { "Ontenu", 3352827, "gaj", aliases = {"Ontena"}, } ---------------------------------------------------------------------------------------------------------------------- -- Salishan varieties -- ---------------------------------------------------------------------------------------------------------------------- m["lut-nor"] = { "Northern Lushootseed", nil, "lut", aliases = {"Northern Puget Sound Salish"}, } m["slh"] = { "Southern Lushootseed", 7997684, "lut", aliases = {"Southern Puget Sound Salish", "Twulshootseed", "Whulshootseed"}, } m["ska"] = { "Skagit", 12642471, "lut-nor", } m["sno"] = { "Snohomish", 25559662, "lut-nor", } ---------------------------------------------------------------------------------------------------------------------- -- Sino-Tibetan varieties -- ---------------------------------------------------------------------------------------------------------------------- m["tbq-pro"] = { "ဗၟာ-တိဗဝ်တဝ် အခိုက်ကၞာ", 7251864, "sit-pro", } ----------------------------------------------------- -- Chinese varieties -- ----------------------------------------------------- ------------- Old Chinese, Middle Chinese ------------- m["och-ear"] = { "Early Old Chinese", nil, "och", } m["och-lat"] = { "Late Old Chinese", nil, "och", } m["ltc-ear"] = { "Early Middle Chinese", nil, "ltc", } m["ltc-lat"] = { "Late Middle Chinese", nil, "ltc", } ------------- Classical/Literary varieties ------------- -- FIXME: Temporary. m["lzh-shi"] = { "Traditional Chinese poetry", 1759242, "lzh", } -- FIXME: Temporary. m["lzh-cii"] = { "Ci", 1091366, "lzh", } -- FIXME: Temporary. m["lzh-yue"] = { "Classical Cantonese", nil, "lzh", } -- FIXME: Temporary. m["lzh-cmn"] = { "Classical Mandarin", nil, "lzh", } -- FIXME: Temporary. m["lzh-tai"] = { "Classical Taishanese", nil, "lzh", } -- FIXME: Temporary. m["lzh-cmn-TW"] = { "Classical Taiwanese Mandarin", nil, "lzh-cmn", } -- FIXME: Temporary. m["lzh-VI"] = { "Vietnamese Classical Chinese", 17034227, "lzh", } -- FIXME: Temporary. m["lzh-KO"] = { "Korean Classical Chinese", 10496257, "lzh", ietf_subtag = "lzh-KR" -- KR = South Korea, as there is no code for Korea as a whole } -- FIXME: Temporary. m["lzh-lit"] = { "Literary Chinese", nil, "lzh", } -- FIXME: Temporary. FIXME: Do we need this? How does it differ from Old Chinese? m["lzh-pre"] = { "Pre-Classical Chinese", nil, "lzh", } ------------- Written Vernacular varieties ------------- -- FIXME: Temporary. m["cmn-wvc"] = { "Written vernacular Mandarin", 783605, "cmn", } -- FIXME: Temporary. FIXME: How does this differ from "Literary Cantonese"? m["yue-wvc"] = { "Written vernacular Cantonese", nil, "yue", } -- FIXME: Temporary. m["zhx-tai-wvc"] = { "Written vernacular Taishanese", nil, "zhx-tai", } ------------- Mandarin varieties ------------- -- FIXME: Temporary. NOTE: The Linguist List assigns the "w:Beijing dialect" (Wikidata 1147606) the code "cmn-bej" and -- the larger "w:Beijing Mandarin (division of Mandarin)" dialect group (Wikidata 2169652; what we call "Beijingic -- Mandarin", after Glottolog) the code "cmn-bei". m["cmn-bei"] = { "Beijing Mandarin", 1147606, "cmn-bec", } -- FIXME: Temporary. m["cmn-bec"] = { "Beijingic Mandarin", 2169652, "cmn", } -- FIXME: Temporary. NOTE: The Linguist List uses the code cmn-zho. m["cmn-cep"] = { "Central Plains Mandarin", 3048775, "cmn", aliases = {"Zhongyuan Mandarin"}, } m["cmn-ear"] = { "Early Mandarin", 837169, "cmn", ancestors = "ltc", } -- FIXME: Temporary. m["cmn-gua"] = { "Guanzhong Mandarin", 3431648, "cmn-cep", } -- FIXME: Temporary. Appears to be a subdialect of Guiliu Mandarin, which in turn is a subdialect of Southwestern Mandarin. m["cmn-gui"] = { "Guilin Mandarin", 11111636, "cmn-sow", } m["cmn-jhu"] = { "Jianghuai Mandarin", 2128953, "cmn", aliases = {"Lower Yangtze Mandarin"}, } -- FIXME: Temporary. m["cmn-lan"] = { "Lanyin Mandarin", 662754, "cmn", } -- FIXME: Temporary. m["cmn-MY"] = { "Malaysian Mandarin", 13646143, "cmn", } -- FIXME: Temporary. m["cmn-nan"] = { "Nanjing Mandarin", 2681098, "cmn-jhu", } -- FIXME: Temporary. m["cmn-noe"] = { "Northeastern Mandarin", 1064504, "cmn", } -- FIXME: Temporary. m["cmn-PH"] = { "Philippine Mandarin", 7185155, "cmn", } -- FIXME: Temporary. m["cmn-SG"] = { "Singapore Mandarin", 1048980, "cmn", } -- FIXME: Temporary. m["cmn-sow"] = { "Southwestern Mandarin", 2609239, "cmn", } -- FIXME: Temporary. Appears to be a subdialect of Jilu Mandarin. m["cmn-tia"] = { "Tianjin Mandarin", 7800220, "cmn", } -- FIXME: Temporary. NOTE: Wikidata also has Q4380827 "Taiwanese Mandarin", defined as "rare dialect of Standard Chinese -- (Mandarin) used in Taiwan, which is strongly influenced by Taiwanese Hokkien; mostly used by elderlies" and having no -- English Wikipedia article (but see w:zh:臺灣國語). m["cmn-TW"] = { "Taiwanese Mandarin", 262828, "cmn", } -- FIXME: Temporary. Appears to be a subdialect of Wu-Tian Mandarin, in turn a subdialect of Southwestern Mandarin. -- Given the code cmn-xwu in the Linguist List. m["cmn-wuh"] = { "Wuhan Mandarin", 11124731, "cmn-sow", aliases = {"Wuhanese"}, } -- FIXME: Temporary. Appears to be a subdialect of Lanyin Mandarin. m["cmn-xin"] = { "Xining Mandarin", nil, "cmn-lan", } -- FIXME: Temporary. m["cmn-yan"] = { "Yangzhou Mandarin", nil, "cmn-jhu", } ------------- Cantonese varieties ------------- -- FIXME: Temporary. m["yue-gua"] = { "Guangzhou Cantonese", nil, "yue", } -- FIXME: Temporary. Given the codes yue-yue or yue-can in the Linguist List. m["yue-HK"] = { "Hong Kong Cantonese", 5894342, "yue", } -- FIXME: Temporary. FIXME: How does this differ from "Written vernacular Cantonese"? m["yue-lit"] = { "Literary Cantonese", 2472605, "yue", } ------------- Wu varieties ------------- m["wuu-han"] = { "Hangzhounese", 5648144, "wuu", } m["wuu-nin"] = { "Ningbonese", 3972199, "wuu", } -- FIXME: Temporary. m["wuu-nor"] = { "Northern Wu", 7675988, "wuu", aliases = {"Taihu Wu"}, } -- FIXME: Temporary? Subvariety of Taihu Wu. NOTE: "chm" stands for Chongming, the main dialect, to avoid a conflict -- with Shanghainese. m["wuu-chm"] = { "Shadi Wu", 6112340, "wuu-nor", } m["wuu-sha"] = { "Shanghainese", 36718, "wuu-nor", } m["wuu-suz"] = { "Suzhounese", 831744, "wuu-nor", } -- FIXME: Temporary. May be converted into a full language and/or split. m["wuu-wen"] = { "Wenzhounese", 710218, "wuu", } ------------- Xiang varieties ------------- m["hsn-lou"] = { "Loudi Xiang", 10943823, "hsn-old", } m["hsn-hya"] = { "Hengyang Xiang", 20689035, "hsn-hzh", } m["hsn-hzh"] = { "Hengzhou Xiang", nil, "hsn", } m["hsn-new"] = { "New Xiang", 7012696, "hsn", aliases = {"Chang-Yi"}, } m["hsn-old"] = { "Old Xiang", 7085453, "hsn", aliases = {"Lou-Shao"}, } ------------- Hakka varieties ------------- -- FIXME: Temporary. m["hak-dab"] = { "Dabu Hakka", 19855566, "hak", -- formerly hak-TW but seems to be spoken primary in Dabu County in Guangdong } -- FIXME: Temporary. m["hak-eam"] = { "Early Modern Hakka", nil, "hak", } -- FIXME: Temporary. m["hak-hai"] = { "Hailu Hakka", 17038519, "hak", -- often considered a Taiwanese lect but also spoken in [[Shanwei]], [[Guangdong]] } -- FIXME: Temporary. m["hak-HK"] = { "Hong Kong Hakka", 2675834, "hak", } -- FIXME: Temporary. m["hak-hui"] = { "Huiyang Hakka", 16873881, "hak", } -- FIXME: Temporary. m["hak-hui-MY"] = { "Malaysian Huiyang Hakka", nil, "hak-hui", } -- FIXME: Temporary. Similar to and possibly the parent of Sixian Hakka in Taiwan. m["hak-mei"] = { "Meixian Hakka", 839295, "hak", aliases = {"Moiyan Hakka", "Meizhou Hakka"}, } -- FIXME: Temporary. m["hak-six"] = { "Sixian Hakka", 9668261, "hak-TW", } -- FIXME: Temporary. m["hak-TW"] = { "Taiwanese Hakka", 2391532, "hak", } -- FIXME: Temporary. m["hak-zha"] = { "Zhao'an Hakka", 6703311, "hak", aliases = {"Zhangzhou Hakka"}, } -- Southern Min varieties -- m["nan-anx"] = { "Anxi Hokkien", 97064149, "nan-qua", } m["nan-cha"] = { "Changtai Hokkien", nil, "nan-zha", } m["nan-hou"] = { "Houlu Min", 19855492, "nan-dat", } m["nan-hui"] = { "Hui'an Hokkien", 16241797, "nan-qua", } m["nan-jin"] = { "Jinjiang Hokkien", 11089375, "nan-qua", } m["nan-kin"] = { "Kinmenese Hokkien", 56278342, "nan-xia", aliases = {"Kinmen Hokkien"}, } m["nan-med"] = { "Medan Hokkien", 6805114, "nan-zha", } m["nan-pen"] = { "Penang Hokkien", 11120689, "nan-zha", } m["nan-hbl-PH"] = { "Philippine Hokkien", 3236692, "nan-qua", } m["nan-qia"] = { "Qianlu Min", 19842517, "nan-dat", } m["nan-qua"] = { "Quanzhou Hokkien", 2251677, "nan-hbl", aliases = {"Chinchew", "Choanchew"}, } -- FIXME: Temporary? Derived from both Quanzhou and Zhangzhou Hokkien. m["nan-hbl-SG"] = { "Singapore Hokkien", 3846528, "nan-hbl", } m["nan-spm"] = { "Southern Malaysian Hokkien", 7570322, "nan-qua", aliases = {"Southern Malaysia Hokkien", "Southern Peninsular Malaysian Hokkien", "Southern Peninsular Malaysia Hokkien"} } m["nan-hbl-TW"] = { "Taiwanese Hokkien", 36778, "nan-hbl", } m["nan-ton"] = { "Tong'an Hokkien", nil, "nan-xia", } m["nan-xia"] = { "Xiamen Hokkien", 68744, "nan-hbl", aliases = {"Amoy", "Amoyese", "Amoynese", "Xiamenese"}, } m["nan-yon"] = { "Yongchun Hokkien", 65118728, "nan-qua", } m["nan-zha"] = { "Zhangzhou Hokkien", 8070492, "nan-hbl", aliases = {"Changchew", "Chiangchew", "Changchow"}, } m["nan-zho"] = { "Zhao'an Hokkien", 65118728, "nan-zha", aliases = {"Zhao'an", "Chawan", "Chawan Hokkien"}, } m["nan-zhp"] = { "Zhangping Hokkien", 15937822, "nan-zha", } ------------- Other Min varieties ------------- -- FIXME: Temporary. Affiliation within Min uncertain; some combination of Eastern and Southern. m["zhx-zho"] = { "Zhongshan Min", 8070958, "zh", } ------------- Other Chinese varieties ------------- -- FIXME: Temporary. Affiliation within Chinese uncertain; possibly Yue. m["zhx-dan"] = { "Danzhou Chinese", 2578935, "zh", } ------------- Chinese romanization varieties ------------- -- [[Wiktionary:Information desk/2022/June#Etymology Coding Issue]] -- [[Wiktionary:Grease pit/2022/June#Transliteration Systems in Etymologies 2]] m["cmn-pinyin"] = { "Hanyu Pinyin", 42222, "cmn", aliases = {"Pinyin"}, } m["cmn-tongyong"] = { "Tongyong Pinyin", 700739, "cmn", } m["cmn-wadegiles"] = { "Wade–Giles", 208442, "cmn", aliases = {"Wade-Giles", "Wade Giles"}, } m["zh-postal"] = { "Postal Romanization", 151868, "zh", } -- Chinese cyrillization m["cmn-palladius"] = { "Palladius", 1234239, "cmn", aliases = {"Palladius system"}, } ----------------------------------------------------- -- Tibetic varieties -- ----------------------------------------------------- m["adx"] = { "Amdo Tibetan", 56509, "bo", } m["kbg"] = { "Khamba", 12952626, "bo", } m["khg"] = { "Khams Tibetan", 56601, "bo", } m["tsk"] = { "Tseku", 11159532, "bo", } ---------------------------------------------------------------------------------------------------------------------- -- Tai-Kadai varieties -- ---------------------------------------------------------------------------------------------------------------------- m["th-old"] = { "သေံတြေံ", nil, "tai-swe-pro", wikipedia_article = "Thai language#Old Thai", } m["th-suk"] = { "သူခိုဝ်ထိုၚ် သေံတြေံ", -- 1238-1438. Cannot use "Sukhothai Thai" as Sukhothai is the current city and "Sukhothai Thai" is a lect. nil, "th-old", aliases = {"Sukhothai Siamese"}, wikipedia_article = "Thai language#Old Thai", } m["th-ayu"] = { "အယုဒ္ဓယ သေံတြေံ", -- 1351-1767. Cannot use "Ayutthaya Thai" as Ayutthaya is the current city. nil, "th-old", aliases = {"Ayutthaya Siamese"}, wikipedia_article = "Thai language#Old Thai", } --[[ m["th-new"] = { "Hacked Thai", -- temporary for testing new translit/display methods nil, "th", translit = "User:Benwing2/th-scraping-translit", display_text = "User:Benwing2/th-scraping-translit", strip_diacritics = "User:Benwing2/th-scraping-translit", preprocess_links = "User:Benwing2/th-scraping-translit", } ]] m["tai-shz"] = { "Shangsi Zhuang", 13216, "za", } ---------------------------------------------------------------------------------------------------------------------- -- Turkic varieties -- ---------------------------------------------------------------------------------------------------------------------- m["trk-cmn-pro"] = { "Proto-Common Turkic", 1126028, "trk-pro", } m["trk-ogr-pro"] = { "Proto-Oghur", 1422731, "trk-pro", family = "trk-ogr", } m["trk-bul-pro"] = { "Proto-Bulgar", nil, "trk-ogr-pro", } m["trk-ogz-pro"] = { "Proto-Oghuz", 494600, "trk-pro", family = "trk-ogz", aliases = {"Southwestern Common Turkic"}, } m["crh-dbj"] = { "Dobrujan Tatar", 12811566, "crh", aliases = {"Romanian Tatar"}, } m["cv-ana"] = { "Anatri Chuvash", nil, "cv", aliases = {"Anatri", "Lower Chuvash"}, } m["cv-mid"] = { "Middle Chuvash", nil, "cv", ancestors = "cv-old", } m["cv-old"] = { "Old Chuvash", nil, "cv", ancestors = "xbo-vol", } m["cv-vir"] = { "Viryal Chuvash", 4278332, "cv", aliases = {"Viryal", "Upper Chuvash"}, } m["kjh-fyu"] = { "Fuyu Kyrgyz", 2598963, "kjh", aliases = {"Fuyu Kirgiz", "Fuyu Kirghiz", "Manchurian Kyrgyz", "Manchurian Kirgiz", "Manchurian Kirghiz"}, } m["klj-arg"] = { "Arghu", 33455, "klj", ancestors = "trk-cmn-pro", } m["otk-kir"] = { "Old Kirghiz", 83142, "otk", aliases = {"Yenisei Turkic", "Yenisei Kyrgyz"}, } m["otk-ork"] = { "Orkhon Turkic", 31295480, "otk", } m["qwm-cum"] = { "Cuman", 1075050, "qwm", aliases = {"Kuman", "Polovtsian", "Polovcian"}, } m["qwm-arm"] = { "Armeno-Kipchak", 2027503, "qwm", ancestors = "qwm-cum", aliases = {"Xıpçaχ tili", "Tatarça"}, } m["qwm-mam"] = { "Mamluk-Kipchak", 4279942, "qwm", aliases = {"Mameluk-Kipchak"}, } m["az-cls"] = { "Classical Azerbaijani", nil, "az", aliases = {"Classical Azeri"}, } m["qxq"] = { "Qashqai", 13192, "az", aliases = {"Qaşqay", "Qashqayi", "Kashkai", "Kashkay"}, } m["tr-CY"] = { "Cypriot Turkish", 7917392, "tr", } m["uz-afg"] = { -- NOTE: has ISO 639-3 code uzs assigned to it. "Afghan Uzbek", 1066787, "uz", aliases = {"Southern Uzbek"}, translit = "uz-afg-translit", } m["xbo-dan"] = { "Danube Bulgar", nil, "xbo", } m["xbo-vol"] = { "Volga Bulgar", nil, "xbo", } ---------------------------------------------------------------------------------------------------------------------- -- Uralic varieties -- ---------------------------------------------------------------------------------------------------------------------- m["fiu-pro"] = { "ဖေန်နဝ်-ဥူဂရေတ်-အခိုက်ကၞာ", 79890, "urj-pro", } m["urj-fpr-pro"] = { "ဖေန်နဝ်-ပဵုမေတ်-အခိုက်ကၞာ", nil, "urj-pro", } m["krl-nor"] = { "North Karelian", 125501196, "krl", } m["krl-sou"] = { "South Karelian", 129812730, "krl", } m["mns-eas"] = { "Eastern Mansi", 30311755, "mns-cen", } m["mns-wes"] = { "Western Mansi", 30311756, "mns-cen", } ---------------------------------------------------------------------------------------------------------------------- -- Yeneseian varieties -- ---------------------------------------------------------------------------------------------------------------------- m["qfa-yke-pro"] = { "Proto-Ketic", nil, "qfa-yen-pro", family = "qfa-yke", } m["qfa-yko-pro"] = { "Proto-Kottic", nil, "qfa-yen-pro", family = "qfa-yko", } m["qfa-yrn-pro"] = { "Proto-Arinic", nil, "qfa-yen-pro", family = "qfa-yrn", } m["qfa-ypm-pro"] = { "Proto-Pumpokolic", nil, "qfa-yen-pro", family = "qfa-ypm", } ---------------------------------------------------------------------------------------------------------------------- -- Miscellaneous varieties -- ---------------------------------------------------------------------------------------------------------------------- m["mul-tax"] = { "taxonomic name", 522190, "mul", } ----------------------------------------------------- -- Elamite varieties -- ----------------------------------------------------- m["elx-old"] = { "Old Elamite", nil, "elx", } m["elx-mid"] = { "Middle Elamite", nil, "elx", } m["elx-neo"] = { "Neo-Elamite", nil, "elx", } m["elx-ach"] = { "Achaemenid Elamite", nil, "elx", } ----------------------------------------------------- -- Substrates -- ----------------------------------------------------- -- Pre-Roman substrates m["qsb-ibe"] = { "Paleo-Hispanic", 246801, "und", family = "qfa-sub", aliases = {"Palaeo-Hispanic", "Paleohispanic", "Palaeohispanic", "Paleo-Iberian", "Palaeo-Iberian"}, } m["qsb-bal"] = { "Paleo-Balkan", 1815070, "und", family = "qfa-sub", aliases = {"Palaeo-Balkan", "Paleobalkan", "Palaeobalkan"}, } m["xaq"] = { "Aquitanian", 500522, "euq-pro", family = "euq", } return require("Module:languages").finalizeData(m, "language", true) qzb3q1w95gdeftrlcieaiyhqkds2oet မဝ်ဂျူ:data consistency check 828 724 399026 381692 2026-07-17T13:26:13Z 咽頭べさ 33 399026 Scribunto text/plain -- TODO: -- ietf_subtag field used with a 2/3-letter langauge/family code except qaa-qtz, or a 4-letter script code. -- Check against files containing up-to-date ISO data, to cross-check validity. local export = {} local mw = mw local require = require local string = string local Array = require("Module:array") local m_en_utilities = require("Module:en-utilities") local m_etym_languages_canonical_names = require("Module:etymology languages/canonical names") local m_etym_languages_codes = require("Module:etymology languages/code to canonical name") local m_etym_languages_data = require("Module:etymology languages/data") local m_families = require("Module:families") local m_families_canonical_names = require("Module:families/canonical names") local m_families_codes = require("Module:families/code to canonical name") local m_families_data = require("Module:families/data") local m_languages = require("Module:languages") local m_languages_canonical_names = require("Module:languages/canonical names") local m_languages_codes = require("Module:languages/code to canonical name") local m_languages_data_all = require("Module:languages/data/all") local m_load = require("Module:load") local m_scripts = require("Module:scripts") local m_scripts_canonical_names = require("Module:scripts/canonical names") local m_scripts_codes = require("Module:scripts/code to canonical name") local m_scripts_data = require("Module:scripts/data") local m_str_utils = require("Module:string utilities") local m_table = require("Module:table") local add_indefinite_article = m_en_utilities.add_indefinite_article local codepoint = m_str_utils.codepoint local concat = table.concat local dump = mw.dumpObject local format = string.format local gcodepoint = m_str_utils.gcodepoint local get_data_module_name = m_languages.getDataModuleName local get_family_by_code = m_families.getByCode local get_family_by_canonical_name = m_families.getByCanonicalName local get_indefinite_article = m_en_utilities.get_indefinite_article local get_language_by_code = m_languages.getByCode local get_language_by_canonical_name = m_languages.getByCanonicalName local get_script_by_code = m_scripts.getByCode local get_script_by_canonical_name = m_scripts.getByCanonicalName local gmatch = string.gmatch local gsub = string.gsub local insert = table.insert local ipairs = ipairs local is_callable = require("Module:fun").is_callable local is_positive_integer = require("Module:math").is_positive_integer local is_known_language_tag = mw.language.isKnownLanguageTag local isutf8 = mw.ustring.isutf8 local json_decode = mw.text.jsonDecode local language_link = require("Module:links").language_link local list_to_set = m_table.listToSet local list_to_text = mw.text.listToText local load_data = m_load.load_data local log = mw.log local main_loader = package.loaders[2] local make_family = m_families.makeObject local make_lang = m_languages.makeObject local make_script = m_scripts.makeObject local match = string.match local new_title = mw.title.new local next = next local pairs = pairs local pcall = pcall local remove_comments = require("Module:string/removeComments") local safe_require = m_load.safe_require local sorted_pairs = m_table.sortedPairs local split = m_str_utils.split local sub = string.sub local table_len = m_table.length local tag_text = require("Module:script utilities").tag_text local type = type local umatch = m_str_utils.match local unpack = unpack or table.unpack -- Lua 5.2 compatibility local aliases = require("Module:languages/data").aliases local messages local function discrepancy(modname, ...) local success, result = pcall(function(...) messages[modname]:insert(format(...)) end, ...) if not success then log(result, ...) end end local messages_mt = {} function messages_mt:__index(k) local val = Array() self[k] = val return val end local all_codes = {} local language_names = {} local etym_language_names = {} local family_names = {} local script_names = {} local nonempty_families = {} local allowed_empty_families = {tbq = true} local nonempty_scripts = {} local function link(obj, code_first) return type(obj) == "string" and obj or code_first and format("<code>%s</code> (%s)", obj:getCode(), obj:makeCategoryLink()) or format("%s (<code>%s</code>)", obj:makeCategoryLink(), obj:getCode()) end local function check_data_keys(...) local valid_keys = Array(...):toSet() return function (modname, obj, data) local invalid_keys for k in pairs(data) do if not valid_keys[k] then if not invalid_keys then invalid_keys = Array(k) else invalid_keys:insert(k) end end end if invalid_keys == nil then return end local plural = #invalid_keys ~= 1 discrepancy(modname, "The data key%s %s for %s %s invalid.", plural and "s" or "", invalid_keys:map(function(key) return "<code>" .. key .. "</code>" end):concat(", "), link(obj), plural and "are" or "is" ) end end -- Modification of isArray in [[Module:table]]. -- This assumes all keys are either integers or non-numbers. -- If there are fractional numbers, the results might be incorrect. -- For instance, find_gap{"a", "b", [0.5] = true} evaluates to 3, but there -- isn't a gap at 3 in the sense of there being an integer key greater than 3. local function find_gap(t, can_contain_non_number_keys) local i = 0 for k in pairs(t) do if not (can_contain_non_number_keys and type(k) ~= "number") then i = i + 1 if t[i] == nil then return i end end end end local function check_true_or_string_or_nil(modname, obj, data, key) local field = data[key] if not (field == nil or field == true or type(field) == "string") then discrepancy(modname, "%s has %s <code>%s</code> value that is not <code>nil</code>, <code>true</code> or a string: <code>%s</code>", link(obj), get_indefinite_article(key), key, dump(data[key]) ) end end local function check_array(modname, obj, data, array_name, parent_array_name, can_contain_non_number_keys) local parent_table = data if parent_array_name then parent_table = assert(data[parent_array_name], parent_array_name) parent_array_name = "the <code>" .. parent_array_name .. "</code> field in " else parent_array_name = "" end local array_type = type(parent_table[array_name]) if array_type == "table" then local gap = find_gap(parent_table[array_name], can_contain_non_number_keys) if gap then discrepancy(modname, "The <code>%s</code> array in %sthe data table for %s has a gap at index %d.", array_name, parent_array_name, link(obj), gap ) else return true end else discrepancy(modname, "The <code>%s</code> field in %sthe data table for %s should be an array (table) but is %s.", array_name, parent_array_name, link(obj), array_type == "nil" and "nil" or "a " .. array_type ) end end local function check_no_alias_codes(modname, mod_data) local lookup, discrepancies = {}, {} for k, v in pairs(mod_data) do local check = lookup[v] if check then discrepancies[check] = discrepancies[check] or {"<code>" .. check .. "</code>"} insert(discrepancies[check], "<code>" .. k .. "</code>") else lookup[v] = k end end for _, v in pairs(discrepancies) do discrepancy(modname, "The codes %s are currently alias codes. Only one code should be used in the data.", list_to_text(v, ", ", " and ") ) end end local function check_wikidata_item(modname, obj, data, key) local data_item = data[key] if data_item == nil or is_positive_integer(data_item) then return end discrepancy(modname, "%s has a Wikidata item ID that is not a positive integer: <code>%s</code>", link(obj), dump(data_item) ) end local function check_name_field(modname, obj, data, canonical_name, data_key, allow_nested, allow_canonical_name_in_table) local array = data[data_key] if not array then return end check_array(modname, obj, data, data_key, nil, true) local names = {} local function check_other_name(other_name) if not allow_canonical_name_in_table and other_name == canonical_name then discrepancy(modname, "%s has its canonical name (<code>%s</code>) repeated in the table of <code>%s</code>.", link(obj), dump(canonical_name), data_key ) end if names[other_name] then discrepancy(modname, "The name %s is found twice or more in the list of <code>%s</code> for %s.", other_name, data_key, link(obj) ) end names[other_name] = true end for _, other_name in ipairs(array) do if type(other_name) == "table" then if not allow_nested then discrepancy(modname, "A nested table is found in the list of <code>%s</code> for %s, but isn't allowed.", data_key, link(obj) ) else for _, on in ipairs(other_name) do check_other_name(on) end end else check_other_name(other_name) end end end local function check_other_names_aliases_varieties(modname, obj, data, canonical_name) if data.other_names then check_name_field(modname, obj, data, canonical_name, "other_names") end if data.aliases then check_name_field(modname, obj, data, canonical_name, "aliases") end if data.varieties then -- Sometimes a variety legitimately has the same name as the language as a whole, so allow that. check_name_field(modname, obj, data, canonical_name, "varieties", "allow_nested", "allow_canonical_name_in_table") end end local function validate_pattern(pattern, modname, obj, standard_chars) if type(pattern) ~= "string" then return discrepancy(modname, "\"%s\", the %spattern for %s, is not a string.", pattern, standard_chars and "standard character " or "", link(obj) ) elseif not isutf8(pattern) then return discrepancy(modname, "%s specifies a pattern for for %scharacter detection which is not valid UTF-8: <code>%s</code>", link(obj), standard_chars and "standard " or "", dump(pattern) ) end local ranges for lower, higher in gmatch(pattern, "(.[\128-\191]*)%-%%?(.[\128-\191]*)") do if codepoint(lower) >= codepoint(higher) then ranges = ranges or Array() insert(ranges, { lower, higher }) end end if ranges and ranges[1] then local plural = #ranges ~= 1 and "s" or "" discrepancy(modname, "%s specifies an invalid pattern " .. "for %scharacter detection: <code>%s</code>. The first codepoint%s " .. "in the range%s %s %s must be less than or equal to the second.", link(obj), standard_chars and "standard " or "", dump(pattern), plural, plural, ranges:map(function(range) return format(range[1] .. "-" .. range[2] .. " (U+%X, U+%X)", codepoint(range[1]), codepoint(range[2])) end):concat(", "), #ranges ~= 1 and "are" or "is" ) end local success, result = pcall(umatch, "", "[" .. pattern .. "]") if not success then discrepancy(modname, "%s specifies an invalid pattern for %scharacter detection: <code>%s</code> (%s)", link(obj), standard_chars and "standard " or "", dump(pattern), result ) end end local remove_exceptions_addition = 0xF0000 local maximum_code_point = 0x10FFFF local remove_exceptions_maximum_code_point = maximum_code_point - remove_exceptions_addition -- TODO: check modules exist. -- TODO: validate script codes and check inner tables. local function check_replacement_data(modname, obj, data, key, func_name) local replacements = data[key] if replacements == nil then return end local replacements_type = type(replacements) if replacements_type == "string" then local mod = main_loader("Module:" .. replacements) if not mod then discrepancy(modname, "The <code>%s</code> field in the data table for %s specifies the module [[Module:%s]], which does not exist.", key, link(obj), replacements ) else mod = mod() if not (type(mod) == "table" and is_callable(mod[func_name])) then discrepancy(modname, "The <code>%s</code> field in the data table for %s specifies the module [[Module:%s]], which exists, but does not contain the expected function <code>%s()</code>.", key, link(obj), replacements, func_name ) end end return elseif replacements_type ~= "table" then discrepancy(modname, "The <code>%s</code> field in the data table for %s must be a string or table, not a %s.", key, link(obj), replacements_type ) return end local from, to = replacements.from, replacements.to if (from ~= nil) ~= (to ~= nil) then discrepancy(modname, "The <code>from</code> and <code>to</code> arrays in the <code>%s</code> table for %s are not both defined or both undefined.", key, link(obj) ) elseif from then for _, k in ipairs {"from", "to"} do check_array(modname, obj, data, k, key) end end local remove_diacritics = replacements.remove_diacritics if not (remove_diacritics == nil or type(remove_diacritics) == "string") then discrepancy(modname, "The <code>remove_diacritics</code> field in the <code>%s</code> table for %s table must be a string.", key, link(obj) ) end local remove_exceptions = replacements.remove_exceptions if remove_exceptions then if check_array(modname, obj, data, "remove_exceptions", key) then for sequence_i, sequence in ipairs(remove_exceptions) do local code_point_i = 0 for code_point in gcodepoint(sequence) do code_point_i = code_point_i + 1 if code_point > remove_exceptions_maximum_code_point then discrepancy(modname, "Code point #%d (0x%04X) in field #%d of the <code>remove_exceptions</code> array for %s is over U+%04X.", code_point_i, code_point, sequence_i, link(obj), remove_exceptions_maximum_code_point ) end end end end end if from and to and table_len(to) > table_len(from) then discrepancy(modname, "The <code>from</code> array in the <code>%s</code> table for %s must be shorter or the same length as the <code>to</code> array.", key, link(obj) ) end end local function check_replacements_data(modname, obj, data) for _, replacement_spec in ipairs{ {"translit", "tr"}, {"display_text", "makeDisplayText"}, {"strip_diacritics", "stripDiacritics"}, {"sort_key", "makeSortKey"}, } do check_replacement_data(modname, obj, data, unpack(replacement_spec)) end end local function has_ancestor(lang, code) for _, anc in ipairs(lang:getAncestors()) do if code == anc:getCode() or has_ancestor(anc, code) then return true end end end local function get_default_ancestors(lang) if lang:hasType("language", "etymology-only") then local parent = lang:getParent() if not has_ancestor(parent, lang:getCode()) then return parent:getAncestorCodes() end end local fam_code, def_anc = lang:getFamilyCode() while fam_code and fam_code ~= "qfa-not" do local fam = m_families_data[fam_code] def_anc = fam.protoLanguage or m_languages_data_all[fam_code .. "-pro"] and fam_code .. "-pro" or m_etym_languages_data[fam_code .. "-pro"] and fam_code .. "-pro" if def_anc and def_anc ~= lang:getCode() then return {def_anc} end fam_code = fam[3] end end local function iterate_ancestor(obj, modname, anc_code) local anc = get_language_by_code(anc_code, nil, true) if not anc then discrepancy(modname, "%s lists the invalid language code <code>%s</code> as its ancestor.", link(obj), dump(anc_code) ) return end local anc_fam = anc:getFamily() if not anc_fam then discrepancy(modname, "%s has no family.", link(anc) ) return end local anc_fam_code = anc_fam:getCode() local def_ancs = get_default_ancestors(obj) if def_ancs then for _, def_anc in ipairs(def_ancs) do def_anc = get_language_by_code(def_anc, nil, true) if def_anc and ( anc_code == def_anc:getCode() or has_ancestor(def_anc, anc_code) or def_anc:hasParent(anc_code) and not has_ancestor(anc, def_anc:getCode()) ) then discrepancy(modname, "%s has the ancestor %s listed in its ancestor field, which is redundant, since it is determined to be ancestral automatically.", link(obj), link(anc) ) end end end if not obj:inFamily(anc_fam_code) then discrepancy(modname, "%s has %s set as an ancestor, but is not in the %s.", link(obj), link(anc), link(anc_fam) ) end local fam, proto = obj repeat fam = fam:getFamily() proto = fam and fam:getProtoLanguage() until proto or not fam or fam:getCode() == "qfa-not" if proto and not ( proto:getCode() == anc:getCode() or proto:hasAncestor(anc:getCode()) or anc:hasAncestor(proto:getCode()) ) then local fam = obj:getFamily() discrepancy(modname, "%s is in the %s and has %s set as an ancestor, but it is not possible to form an ancestral chain between them.", link(obj), link(fam), link(anc) ) end end local function check_ancestors(modname, obj, data) local ancestors = data.ancestors if ancestors == nil then return end local ancestors_type = type(ancestors) if ancestors_type == "string" then ancestors = split(ancestors, ",", true, true) elseif ancestors_type ~= "table" then discrepancy(modname, "The <code>ancestors</code> field in the data table for %s must be a string or table, not a %s.", link(obj), ancestors_type ) end for _, anc in ipairs(ancestors) do iterate_ancestor(obj, modname, anc) end end local function check_wikimedia_codes(modname, obj, data) local wikimedia_codes = data.wikimedia_codes if wikimedia_codes == nil then return end local wikimedia_codes_type = type(wikimedia_codes) if wikimedia_codes_type == "string" then wikimedia_codes = split(wikimedia_codes, ",", true, true) elseif wikimedia_codes_type ~= "table" then discrepancy(modname, "The <code>wikimedia_codes</code> field in the data table for %s must be a string or table, not a %s.", link(obj), wikimedia_codes_type ) end for _, code in ipairs(wikimedia_codes) do if not is_known_language_tag(code) then discrepancy(modname, "%s lists the invalid Wikimedia code <code>%s</code> in the <code>wikimedia_codes</code> field.", link(obj), dump(code) ) end end end local function check_code_to_name_and_name_to_code_maps( source_module_type, source_module_description, code_to_module_map, name_to_code_map, code_to_name_modname, code_to_name_module, name_to_code_modname, name_to_code_module ) local function check_code_and_name(modname, code, canonical_name) -- Check the code is in code_to_module_map and that it didn't originate from the wrong data module. local check_mod = code_to_module_map[code] or code_to_module_map[aliases[code]] if not (check_mod and match(check_mod, "^" .. source_module_type .. "/data")) then if not name_to_code_map[canonical_name] then discrepancy(modname, "The code <code>%s</code> and the canonical name %s should be removed; they are not found in %s.", code, canonical_name, source_module_description ) else discrepancy(modname, "<code>%s</code>, the code for the canonical name %s, is wrong; it should be <code>%s</code>.", code, canonical_name, name_to_code_map[canonical_name] ) end elseif not name_to_code_map[canonical_name] then local data_table = require("Module:" .. code_to_module_map[code])[code] discrepancy(modname, "%s, the canonical name for the code <code>%s</code>, is wrong; it should be %s.", canonical_name, code, data_table[1] ) end end for code, canonical_name in pairs(code_to_name_module) do check_code_and_name(code_to_name_modname, code, canonical_name) end for canonical_name, code in pairs(name_to_code_module) do check_code_and_name(name_to_code_modname, code, canonical_name) end end local function check_extraneous_extra_data( data_modname, data_module, extra_data_modname, extra_data_module) for code, _ in pairs(extra_data_module) do if not data_module[code] then discrepancy(extra_data_modname, "The code <code>%s</code> is not found in [[Module:%s]], and should be removed from [[Module:%s]].", code, data_modname, extra_data_modname ) end end end -- TODO: add collision check between the canonical names "X" and "X [Ll]anguage". local function check_languages(frame) local check_language_data_keys = check_data_keys( 1, 2, 3, 4, -- canonical name, Wikidata item, family, scripts "display_text", "generate_forms", "strip_diacritics", "sort_key", "other_names", "aliases", "varieties", "ietf_subtag", "type", "ancestors", "pseudo_families", "wikimedia_codes", "wikipedia_article", "standard_chars", "translit", "override_translit", "link_tr", "dotted_dotless_i" ) local function check_language(modname, code, data, extra_modname, extra_data) local obj, code_modname, canonical_name = make_lang(code, data, true), get_data_module_name(code), data[1] -- FIXME: this module should use the prefixed module name throughout. code_modname = code_modname:gsub("^Module:", "") if code_modname ~= modname then if code_modname == "languages/data/2" then discrepancy(modname, "%s is a two-letter code, so should be moved to [[Module:%s]].", link(obj), code_modname ) elseif code_modname == "languages/data/exceptional" then discrepancy(modname, "%s is an exceptional code, as it does not consist of two or three lowercase letters, so should be moved to [[Module:%s]].", link(obj), code_modname ) else discrepancy(modname, "%s is a three-letter code beginning with '%s', so should be moved to [[Module:%s]].", link(obj), sub(code, 1, 1), code_modname ) end end check_language_data_keys(modname, obj, data) if all_codes[code] then discrepancy(modname, "The code <code>%s</code> is not unique; it is also defined in [[Module:%s]].", code, all_codes[code] ) else if not m_languages_codes[code] then discrepancy("languages/code to canonical name", "The code %s is missing.", link(obj, true) ) end all_codes[code] = modname end -- TODO: these checks should be consolidated with the proto-language checks in the family data, -- since bad settings there affect the warnings here (e.g. xxx-pro assigned to yyy when xxx also -- doesn't not exist - a warning that xxx has "no family" would be misleading). if sub(code, -4) == "-pro" then local fam_code = sub(code, 1, -5) local fam = get_language_by_code(fam_code, nil, true, true) if not fam then discrepancy(modname, "'''Proto-language with no family''': %s should be the proto-language of <code>%s</code>, which doesn't exist.", link(obj), dump(fam_code) ) elseif not fam:hasType("family") then discrepancy(modname, "'''Proto-language with no family''': %s should be the proto-language of <code>%s</code>, but %s is not a family.", link(obj), dump(fam_code), link(fam) ) else -- Reinstate this as low-priority once message priorities have been implemented. -- local expected_name = "Proto-" .. fam:getCanonicalName() -- if canonical_name ~= expected_name then -- discrepancy(modname, -- "%s does not have the expected name \"%s\", even though it is the proto-language of the %s.", -- link(obj), expected_name, link(fam) -- ) -- end end end if not canonical_name then discrepancy(modname, "The code <code>%s</code> has no canonical name specified.", code ) elseif language_names[canonical_name] then local canonical_lang = get_language_by_canonical_name(canonical_name) if not canonical_lang then discrepancy(modname, "%s has a canonical name that cannot be looked up.", link(obj) ) elseif data.main_code ~= canonical_lang:getCode() then discrepancy(modname, "%s has a canonical name that is not unique; it is also used by the code <code>%s</code>.", link(obj), language_names[canonical_name] ) end else if not m_languages_canonical_names[canonical_name] then discrepancy("languages/canonical names", "The canonical name %s is missing.", link(obj) ) end language_names[canonical_name] = code end check_wikidata_item(modname, obj, data, 2) if extra_data then check_other_names_aliases_varieties(modname, obj, extra_data, canonical_name) end local lang_type = data.type if lang_type and not (lang_type == "regular" or lang_type == "reconstructed" or lang_type == "appendix-constructed") then discrepancy(modname, "%s is of the invalid type <code>%s</code>.", link(obj), lang_type ) end if data.aliases then discrepancy(modname, "%s has an <code>aliases</code> key in [[Module:%s]]. This must be moved to [[Module:%s]].", link(obj), modname, extra_modname ) end if data.varieties then discrepancy(modname, "%s has the <code>varieties</code> key in [[Module:%s]]. This must be moved to [[Module:%s]].", link(obj), modname, extra_modname ) end if data.other_names then discrepancy(modname, "%s has the <code>other_names</code> key in [[Module:%s]]. This must be moved to [[Module:%s]].", link(obj), modname, extra_modname ) end if not extra_data then discrepancy(extra_modname, "%s has data in [[Module:%s]], but does not have corresponding data in [[Module:%s]].", link(obj), modname, extra_modname ) --[[elseif extra_data.other_names then discrepancy(extra_modname, "%s has <code>other_names</code> key, but these should be changed to either <code>aliases</code> or <code>varieties</code>.", link(obj) )]] end local sc = data[4] if sc then if type(sc) == "string" then sc = split(sc, "%s*,%s*", true) end if type(sc) == "table" then if not sc[1] then discrepancy(modname, "%s has no scripts listed.", link(obj) ) else for _, sccode in ipairs(sc) do local cur_sc = m_scripts_data[sccode] if not (cur_sc or sccode == "All" or sccode == "Hants") then discrepancy(modname, "%s lists the invalid script code <code>%s</code>.", link(obj), dump(sccode) ) --[[elseif not cur_sc.characters then discrepancy(modname, "%s lists the %s, which does not have any characters.", link(obj), link(get_script_by_code(sccode)) )]] end nonempty_scripts[sccode] = true end end else discrepancy(modname, "The %s field for %s must be a table or string.", 4, link(obj) ) end end if data.ancestors then check_ancestors(modname, obj, data) end if data.wikimedia_codes then check_wikimedia_codes(modname, obj, data) end if data[3] then local family = data[3] if not m_families_data[family] then discrepancy(modname, "%s has the invalid family code <code>%s</code>.", link(obj), dump(family) ) end nonempty_families[family] = true end check_replacements_data(modname, obj, data) if data.standard_chars then if type(data.standard_chars) == "table" then local sccodes = {} for _, sccode in ipairs(sc) do sccodes[sccode] = true end for sccode in pairs(data.standard_chars) do if not (sccodes[sccode] or sccode == 1) then discrepancy(modname, "The field %s in the <code>standard_chars</code> table for %s does not match any script for that language.", sccode, link(obj) ) end end elseif data.standard_chars and type(data.standard_chars) ~= "string" then discrepancy(modname, "The <code>standard_chars</code> field in the data table for %s must be a string or table.", link(obj) ) end end check_true_or_string_or_nil(modname, obj, data, "override_translit") check_true_or_string_or_nil(modname, obj, data, "link_tr") -- This doesn't apply any more since scripts can be script-wide translit methods. -- if data.override_translit and not data.translit then -- discrepancy(modname, -- "%s has the <code>override_translit</code> field set, but no transliteration module", -- link(obj) -- ) -- end end local function check_module(modname) local mod_data = load_data("Module:" .. modname) local extra_modname = modname .. "/extra" local extra_mod_data = load_data("Module:" .. extra_modname) for code, data in pairs(mod_data) do check_language(modname, code, data, extra_modname, extra_mod_data[code]) end check_no_alias_codes(modname, mod_data) check_no_alias_codes(extra_modname, extra_mod_data) check_extraneous_extra_data(modname, mod_data, extra_modname, extra_mod_data) end -- Check two-letter codes check_module( "languages/data/2" ) -- Check three-letter codes for i = 0x61, 0x7A do -- a to z check_module( format("languages/data/3/%c", i) ) end -- Check exceptional codes check_module( "languages/data/exceptional" ) -- These checks must be done while all_codes only contains language codes: -- that is, after language data modules have been processed, but before -- etymology languages, families, and scripts have. check_code_to_name_and_name_to_code_maps( "languages", "a submodule of [[Module:languages]]", all_codes, language_names, "languages/code to canonical name", m_languages_codes, "languages/canonical names", m_languages_canonical_names ) -- Check [[Template:langname-lite]] local modname = "Template:langname-lite" for code, name in gmatch(remove_comments(new_title(modname):getContent()), "\n\t*|#*([^\n]+)=([^\n]*)") do if #code > 1 and code ~= "default" then for _, code in pairs(split(code, "|", true)) do local lang = get_language_by_code(code, nil, true, true) if match(name, "etymcode") then local nonEtym_name = frame:preprocess(name) local nonEtym_real_name = lang:getFullName() if nonEtym_name ~= nonEtym_real_name then discrepancy(modname, "Code: <code>%s</code>. Saw name: %s. Expected name: %s.", code, nonEtym_name, nonEtym_real_name ) end name = frame:preprocess(gsub(name, "{{{allow etym|}}}", "1")) elseif match(name, "familycode") then name = match(name, "familycode|(.-)|") else name = name end if not lang then discrepancy(modname, "Code: <code>%s</code>. Saw name: %s. Language not present in data.", code, name ) else local real_name = lang:getCanonicalName() if name ~= real_name then discrepancy(modname, "Code: <code>%s</code>. Saw name: %s. Expected name: %s.", code, name, real_name ) end end end end end end local function check_etym_languages() local modname = "etymology languages/data" local check_etymology_language_data_keys = check_data_keys( 1, 2, 3, 4, -- canonical name, Wikidata item, family, scripts "parent", "display_text", "generate_forms", "strip_diacritics", "sort_key", "other_names", "aliases", "varieties", "ietf_subtag", "type", "main_code", "ancestors", "pseudo_families", "wikimedia_codes", "wikipedia_article", "standard_chars", "translit", "override_translit", "link_tr", "dotted_dotless_i" ) local checked = {} for code, data in pairs(m_etym_languages_data) do local obj, canonical_name, parent = make_lang(code, data, true), data[1], data.parent check_etymology_language_data_keys(modname, obj, data) if all_codes[code] then discrepancy(modname, "The code <code>%s</code> is not unique; it is also defined in [[Module:%s]].", code, all_codes[code] ) else if not m_etym_languages_codes[code] then discrepancy("etymology languages/code to canonical name", "The code %s is missing.", link(obj, true) ) end all_codes[code] = modname end if not canonical_name then discrepancy(modname, "The code <code>%s</code> has no canonical name specified.", code ) elseif language_names[canonical_name] then local canonical_lang = get_language_by_canonical_name(canonical_name, nil, true) if not canonical_lang then discrepancy(modname, "%s has a canonical name that cannot be looked up.", link(obj) ) elseif data.main_code ~= canonical_lang:getCode() then discrepancy(modname, "%s has a canonical name that is not unique; it is also used by the code <code>%s</code>.", link(obj), language_names[canonical_name] ) end else if not m_etym_languages_canonical_names[canonical_name] then discrepancy("etymology languages/canonical names", "The canonical name %s is missing.", link(obj) ) end etym_language_names[canonical_name] = code end check_other_names_aliases_varieties(modname, obj, data, canonical_name) if parent then if type(parent) ~= "string" then discrepancy(modname, "%s has a parent code that is %s rather than a string.", link(obj), parent == nil and "nil" or "a " .. type(parent) ) elseif not (m_languages_data_all[parent] or m_etym_languages_data[parent]) then discrepancy(modname, "%s has the invalid parent code <code>%s</code>%s.", link(obj), dump(parent), m_families_data[parent] and " (a family code)" or "" ) end nonempty_families[parent] = true else discrepancy(modname, "%s has no parent code.", link(obj) ) end if data.ancestors then check_ancestors(modname, obj, data) end if data.wikimedia_codes then check_wikimedia_codes(modname, obj, data) end if data[3] then local family = data[3] if not m_families_data[family] then discrepancy(modname, "%s has the invalid family code <code>%s</code>.", link(obj), dump(family)) end nonempty_families[family] = true end check_replacements_data(modname, obj, data) check_wikidata_item(modname, obj, data, 2) local stack = {} while data do if checked[code] then break elseif stack[code] then local parent = data.parent discrepancy(modname, "%s has a cyclic parental relationship to %s", link(make_lang(code, data, true)), link(get_language_by_code(parent, nil, true)) ) break end stack[code] = true code = data.parent data = m_etym_languages_data[code] end for code in pairs(stack) do checked[code] = true end end check_no_alias_codes(modname, m_etym_languages_data) check_code_to_name_and_name_to_code_maps( "etymology languages", "[[Module:etymology languages/data]]", all_codes, etym_language_names, "etymology languages/code to canonical name", m_etym_languages_codes, "etymology languages/canonical names", m_etym_languages_canonical_names) end -- TODO: add collision check between the canonical names "X" and "X [Ll]anguages". local function check_families() local modname = "families/data" local check_family_data_keys = check_data_keys( 1, 2, 3, -- canonical name, Wikidata item, (parent) family "type", "ietf_subtag", "protoLanguage", "other_names", "aliases", "varieties", "pseudo_families", "categoryName" ) local checked, double_check_if_empty = {["qfa-not"] = true}, {} for code, data in pairs(m_families_data) do local obj, canonical_name, family, protolang = make_family(code, data), data[1], data[3], data.protoLanguage check_family_data_keys(modname, obj, data) if all_codes[code] then discrepancy(modname, "The code <code>%s</code> is not unique; it is also defined in [[Module:%s]].", code, all_codes[code] ) else if not m_families_codes[code] then discrepancy("families/code to canonical name", "The code %s is missing.", link(obj, true) ) end all_codes[code] = modname end if not canonical_name then discrepancy(modname, "The code <code>%s</code> has no canonical name specified.", code ) elseif family_names[canonical_name] then local canonical_family = get_family_by_canonical_name(canonical_name) if not canonical_family then discrepancy(modname, "%s has a canonical name that cannot be looked up.", link(obj) ) elseif data.main_code ~= canonical_family:getCode() then discrepancy(modname, "%s has a canonical name that is not unique; it is also used by the code <code>%s</code>.", link(obj), family_names[canonical_name] ) end else if not m_families_canonical_names[canonical_name] then discrepancy("families/canonical names", "The canonical name %s is missing.", link(obj) ) end family_names[canonical_name] = code end check_other_names_aliases_varieties(modname, obj, data, canonical_name) if family then if family == code and code ~= "qfa-not" then discrepancy(modname, "%s has itself as its family.", link(obj) ) elseif not m_families_data[family] then discrepancy(modname, "%s has the invalid parent family code <code>%s</code>.", link(obj), dump(family) ) end nonempty_families[family] = true end if protolang then local protolang_obj = get_language_by_code(protolang, nil, true) if not protolang_obj then discrepancy(modname, "%s has the invalid proto-language code <code>%s</code>.", link(obj), dump(protolang) ) elseif protolang == code .. "-pro" then discrepancy(modname, "%s has %s listed as its proto-language, which is redundant, since it is determined to be the proto-language automatically.", link(obj), link(protolang_obj) ) elseif sub(protolang, -4) == "-pro" then discrepancy(modname, "%s has %s listed as its proto-language, which is supposed to be the proto-language for the family <code>%s</code>.", link(obj), link(protolang_obj), sub(protolang, 1, -5) ) end end check_wikidata_item(modname, obj, data, 2) -- Could be a false-positive if a child family occurs on a later -- iteration, so set aside any that fail for a second check. This avoids -- having to iterate through the whole list of families once -- nonempty_families has been fully populated. if not (nonempty_families[code] or allowed_empty_families[code]) then double_check_if_empty[code] = obj end local stack = {} while data do if checked[code] then break elseif stack[code] then local parent = data[3] discrepancy(modname, "%s has a cyclic familial relationship to %s", link(make_family(code, data)), link(get_family_by_code(parent)) ) break end stack[code] = true code = data[3] data = m_families_data[code] end for code in pairs(stack) do checked[code] = true end end -- Any languages set aside as candidates for having no children are checked -- again, now that nonempty_families is definitely complete. for code, obj in next, double_check_if_empty do if not (nonempty_families[code] or allowed_empty_families[code]) then discrepancy(modname, "%s has no child families or languages.", link(obj) ) end end check_no_alias_codes(modname, m_families_data) check_code_to_name_and_name_to_code_maps( "families", "[[Module:families/data]]", all_codes, family_names, "families/code to canonical name", m_families_codes, "families/canonical names", m_families_canonical_names) end -- TODO: add collision check between the canonical names "X" and "X [Ss]cript". local function check_scripts() local modname = "scripts/data" local check_script_data_keys = check_data_keys( 1, 2, 3, -- canonical name, Wikidata item, writing systems "other_names", "aliases", "varieties", "parent", "ietf_subtag", "type", "wikipedia_article", "ranges", "characters", "spaces", "capitalized", "translit", "direction", "character_category", "normalizationFixes", "sort_by_scraping", "display_text", "sort_key", "strip_diacritics" ) -- Just to satisfy requirements of check_code_to_name_and_name_to_code_maps. local script_code_to_module_map = {} for code, data in pairs(m_scripts_data) do local obj, canonical_name = make_script(code, data), data[1] if not m_scripts_codes[code] and #code == 4 then discrepancy("scripts/code to canonical name", "The code %s is missing", link(obj, true) ) end check_script_data_keys(modname, obj, data) if not canonical_name then discrepancy(modname, "The code <code>%s</code> has no canonical name specified.", code ) elseif script_names[canonical_name] then local canonical_script = get_script_by_canonical_name(canonical_name) if not canonical_script then discrepancy(modname, "%s has a canonical name that cannot be looked up.", link(obj) ) --[[elseif data.main_code ~= canonical_script:getCode() then discrepancy(modname, "%s has a canonical name that is not unique; it is also used by the code <code>%s</code>.", link(obj), script_names[canonical_name] )]] end else if not m_scripts_canonical_names[canonical_name] and #code == 4 then discrepancy("scripts/canonical names", "The canonical name %s is missing.", link(obj) ) end script_names[canonical_name] = code end check_other_names_aliases_varieties(modname, obj, data, canonical_name) if not nonempty_scripts[code] then discrepancy(modname, "%s is not used by any language%s.", link(obj), data.characters and "" or " and has no characters listed for auto-detection") --[[elseif not data.characters then discrepancy(modname, "%s has no characters listed for auto-detection.", link(obj) )--]] end if data.characters then validate_pattern(data.characters, modname, obj, false) end check_wikidata_item(modname, obj, data, 2) script_code_to_module_map[code] = modname end check_no_alias_codes(modname, m_scripts_data) check_code_to_name_and_name_to_code_maps( "scripts", "a submodule of [[Module:scripts]]", script_code_to_module_map, script_names, "scripts/code to canonical name", m_scripts_codes, "scripts/canonical names", m_scripts_canonical_names) end -- FIXME: this is quite messy. local function check_wikidata_languages() local data = json_decode(new_title("မဝ်ဂျူ:languages/data/wikidata.json"):getContent()) local seen = {{}, {}, {}, [5] = {}} for _, item in ipairs(data) do local id = item.id for k, v in pairs(item) do if k ~= "id" then local _seen = seen[k] for _, code in ipairs(v) do local _code = code[1] local _type = type(_seen[_code]) if _type == "table" then insert(_seen[_code], id) elseif _type == "string" then _seen[_code] = {_seen[_code], id} else _seen[_code] = id end end end end end local modname = "languages/data/wikidata.json" for k, v in pairs(seen) do for code, ids in pairs(v) do if type(ids) == "table" then local t = {} for i, id in ipairs(ids) do t[i] = format("<code>[[d:%s|%s]]</code>", id, id) end discrepancy(modname, "<code>%s</code> is set as an ISO 639-%d code on multiple items: %s.", code, k, list_to_text(t) ) end end end end local function check_labels() local check_label_data_keys = check_data_keys( "display", "Wikipedia", "glossary", "plain_categories", "topical_categories", "pos_categories", "regional_categories", "sense_categories", "omit_preComma", "omit_postComma", "omit_preSpace", "deprecated", "track" ) local function check_label(modname, code, data) local _type = type(data) if _type == "table" then check_label_data_keys(modname, code, data) elseif _type ~= "string" then discrepancy(modname, "The data for the label <code>%s</code> is %s %s; only tables and strings are allowed.", code, add_indefinite_article(_type) ) end end for _, module in ipairs{"", "/regional", "/topical"} do local modname = "မဝ်ဂျူ:labels/data" .. module module = require(modname) for label, data in pairs(module) do check_label(modname, label, data) end end for code in pairs(m_languages_codes) do local modname = "မဝ်ဂျူ:labels/data/lang/" .. code local module = safe_require(modname) if module then for label, data in pairs(module) do check_label(modname, label, data) end end end end local function check_zh_trad_simp() local m_ts = require("မဝ်ဂျူ:zh/data/ts") local m_st = require("မဝ်ဂျူ:zh/data/st") local ruby = require("မဝ်ဂျူ:ja-ruby").ruby_auto local lang = get_language_by_code("zh") local Hant = get_script_by_code("Hant") local Hans = get_script_by_code("Hans") local data = {[0] = m_st, m_ts} local mod = {[0] = "st", "ts"} local var = {[0] = "Simp.", "Trad."} local sc = {[0] = Hans, Hant} local function find_stable_loop(chars, other, j) local display = ruby({["markup"] = "[" .. other .. "](" .. var[(j+1)%2] .. ")"}) display = language_link{term = other, alt = display, lang = lang, sc = sc[(j+1)%2], tr = "-"} insert(chars, display) if data[(j+1)%2][other] == other then insert(chars, other) return chars, 1 elseif not data[(j+1)%2][other] then insert(chars, "not found") return chars, 2 elseif data[j%2][data[(j+1)%2][other]] ~= other then return find_stable_loop(chars, data[(j+1)%2][other], j + 1) else local display = ruby({["markup"] = "[" .. data[(j+1)%2][other] .. "](" .. var[j%2] .. ")"}) display = language_link{term = data[(j+1)%2][other], alt = display, lang = lang, sc = sc[j%2], tr = "-"} insert(chars, display .. " (") display = ruby({["markup"] = "[" .. data[j%2][data[(j+1)%2][other]] .. "](" .. var[(j+1)%2] .. ")"}) display = language_link{term = data[j%2][data[(j+1)%2][other]], alt = display, lang = lang, sc = sc[(j+1)%2], tr = "-"} insert(chars, display .. " etc.)") return chars, 3 end return chars end for i = 0, 1, 1 do for ch, other_ch in pairs(data[i]) do if data[(i+1)%2][other_ch] ~= ch then local chars, issue = {} local display = ruby({["markup"] = "[" .. ch .. "](" .. var[i] .. ")"}) display = language_link{term = ch, alt = display, lang = lang, sc = sc[i], tr = "-"} insert(chars, display) chars, issue = find_stable_loop(chars, other_ch, i) if issue == 1 or issue == 2 then local sc_this, mod_this, j = {} if match(chars[#chars-1], var[(i+1)%2]) then j = 1 else j = 0 end mod_this = mod[(i+j)%2] sc_this = {[0] = sc[(i+j)%2], sc[(i+j+1)%2]} for k, ch in ipairs(chars) do chars[k] = tag_text(ch, lang, sc_this[k%2], "term") end local modname = "zh/data/" .. mod_this if issue == 1 then discrepancy(modname, "character references itself: %s", concat(chars, " → ") ) elseif issue == 2 then discrepancy(modname, "missing character: %s", concat(chars, " → ") ) end elseif issue == 3 then for j, ch in ipairs(chars) do chars[j] = tag_text(ch, lang, sc[(i+j)%2], "term") end discrepancy("zh/data/" .. mod[i], "possible mismatched character: %s", concat(chars, " → ") ) end end end end end local function check_serialization(modname) local serializers = { ["Hani-sortkey/data/serialized"] = "Hani-sortkey/serializer", } if not serializers[modname] then return nil end local serializer = serializers[modname] local current_data = require("မဝ်ဂျူ:" .. serializer).main(true) local stored_data = require("မဝ်ဂျူ:" .. modname) if current_data ~= stored_data then discrepancy(modname, "<strong><u>Important!</u> Serialized data is out of sync. Use [[Module:%s]] to update it. If you have made any changes to the underlying data, the serialized data <u>must</u> be updated before these changes will take effect.</strong>", serializer ) end end local find_code = require("မဝ်ဂျူ:memoize")(function(message) return match(message, "<code>([^<]+)</code>") end) local function compare_messages(message1, message2) local code1, code2 = find_code(message1), find_code(message2) if code1 and code2 then return code1 < code2 else return message1 < message2 end end -- Warning: cannot be called twice in the same module invocation because -- some module-global variables are not reset between calls. local function do_checks(frame, modules) messages = setmetatable({}, messages_mt) if modules["zh/data/ts"] or modules["zh/data/st"] then check_zh_trad_simp() end check_languages(frame) check_etym_languages() -- families and scripts must be checked AFTER languages; languages checks fill out -- the nonempty_families and nonempty_scripts tables, used for testing if a family/script -- is ever used in the data check_families() check_scripts() check_wikidata_languages() if modules["labels/data"] then check_labels() end for module in pairs(modules) do check_serialization(module) end setmetatable(messages, nil) for _, msglist in pairs(messages) do msglist:sort(compare_messages) end local ret = messages messages = nil return ret end local function format_message(modname, msglist) local header; if match(modname, "^မဝ်ဂျူ:") or match(modname, "^ထာမ်ပလိက်:") then header = "===[[" .. modname .. "]]===" else header = "===[[မဝ်ဂျူ:" .. modname .. "]]===" end return header .. msglist:map(function(msg) return "\n* " .. msg end):concat() end function export.check_modules_t(frame) local args = frame.args local modules = list_to_set(args) local ret = Array() local messages = do_checks(frame, modules) for _, module in ipairs(args) do local msglist = messages[module] if msglist then ret:insert(format_message(module, msglist)) end end return ret:concat("\n") end function export.perform(frame) local messages = do_checks(frame, {}) -- Format the messages local ret = Array() for modname, msglist in sorted_pairs(messages) do ret:insert(format_message(modname, msglist)) end -- Are there any messages? -- TODO: check how many messages there are. if false then --if i == 1 then return "<b class=\"success\">Glory to Arstotzka.</b>" else ret:insert(1, "<b class=\"warning\">Discrepancies detected:</b>") return ret:concat("\n") end end return export gif1br8jjzt2zq8jqc3w1wcbax8t3rm ထာမ်ပလိက်:shortcut 10 892 399060 3428 2026-07-17T16:46:59Z 咽頭べさ 33 399060 wikitext text/x-wiki <includeonly>{{#invoke:shortcut box|shortcut_t}}</includeonly><noinclude>{{documentation}}</noinclude> exsyrlhl8x8eep173m56lwf7p5s2adf ထာမ်ပလိက်:m-self 10 7839 399140 14759 2026-07-18T03:13:55Z 咽頭べさ 33 399140 wikitext text/x-wiki <includeonly><onlyinclude>{{safesubst:<noinclude/>#invoke:links/templates|l_term_t|face=term|notself=1}}</onlyinclude></includeonly><!-- -->{{m-self|en|term}}{{documentation}} n8a9gq9t38rp18j8fa1g3hcotbhs7nt မဝ်ဂျူ:etymology languages/canonical names 828 52684 399021 375475 2026-07-17T13:14:30Z Intobesa.bot 1035 Bot: ပွမကၠာဲစုတ်ယၟုနူဘာသာအၚ်္ဂလိက် 399021 Scribunto text/plain return { ["Abhiri"] = "pra-abh", ["Abuzeydabadi"] = "xme-abz", ["Abyanehi"] = "xme-aby", ["Acadian French"] = "fr-aca", ["Achaemenid Elamite"] = "elx-ach", ["Achterhoeks"] = "act", ["Adamawa Fulfulde"] = "fub", ["Addu Dhivehi"] = "dv-add", ["Aeolic Greek"] = "grc-aeo", ["Afghan Uzbek"] = "uz-afg", ["African Romance"] = "la-afr", ["Afridi"] = "ps-afr", ["Akhmimic Coptic"] = "cop-akh", ["Akuapem Twi"] = "tw-aku", ["Alsatian Alemannic German"] = "gsw-FR-als", ["Amdo Tibetan"] = "adx", ["American English"] = "en-US", ["Amorehi"] = "xme-amo", ["Anaraki"] = "xme-ana", ["Anatri Chuvash"] = "cv-ana", ["Anbarani"] = "tly-anb", ["Angkorian Old Khmer"] = "okz-ang", ["Anglian Old English"] = "ang-ang", ["Anglo-Norman"] = "xno", ["Anxi Hokkien"] = "nan-anx", ["Aranese"] = "oc-ara", ["Arbëresh Albanian"] = "aae", ["Arcadian Greek"] = "grc-arc", ["Arcadocypriot Greek"] = "grc-arp", ["Ardestani"] = "xme-ard", ["Ardhamagadhi Prakrit"] = "pra-ard", ["Arghu"] = "klj-arg", ["Armeno-Kipchak"] = "qwm-arm", ["Arvanitika Albanian"] = "aat", ["Asalemi"] = "tly-asa", ["Asante Twi"] = "tw-asa", ["Ashtiani"] = "atn", ["Attic Greek"] = "grc-att", ["Australian Aboriginal English"] = "en-aae", ["Australian English"] = "en-AU", ["Austrian German"] = "de-AT", ["Auvergnat"] = "oc-auv", ["Avahattha"] = "inc-aav", ["Avanti"] = "pra-ava", ["Ayutthaya Old Thai"] = "th-ayu", ["Azerbaijani Talysh"] = "tly-aze", ["Badrudi"] = "xme-bdr", ["Bagirmi Fulfulde"] = "fui", ["Bahliki"] = "pra-bah", ["Bajui"] = "sgh-baj", ["Baltic German"] = "de-bal", ["Bandari"] = "bsg-ban", ["Bangash"] = "ps-bng", ["Bannu"] = "ps-ban", ["Barpetia Kamrupi Assamese"] = "as-bkm", ["Bartangi"] = "sgh-bar", ["Bartangi-Oroshori"] = "sgh-bro", ["Beijing Mandarin"] = "cmn-bei", ["Beijingic Mandarin"] = "cmn-bec", ["Belgian Dutch"] = "nl-BE", ["Besemah"] = "pse-bsm", ["Betawi Kota"] = "bew-kot", ["Biblical Aramaic"] = "arc-bib", ["Biblical Hebrew"] = "hbo", ["Bidhandi"] = "xme-bid", ["Bijagani"] = "xme-bij", ["Boeotian Greek"] = "grc-boi", ["Bohairic Coptic"] = "cop-boh", ["Bolivian Spanish"] = "es-BO", ["Bombay Hindi"] = "hi-mum", ["Bono Twi"] = "tw-abr", ["Borana"] = "gax", ["Borgu Fulfulde"] = "fue", ["Borujerdi"] = "xme-bor", ["Brahmanic Sanskrit"] = "sa-bra", ["Brazilian Portuguese"] = "pt-BR", ["British English"] = "en-GB", ["Buddhist Hybrid Sanskrit"] = "sa-bhs", ["Burenjani"] = "fay-bur", ["Bushehri"] = "fay-bsh", ["Byzantine Greek"] = "gkm", ["Cajun French"] = "frc", ["California English"] = "en-US-CA", ["Camorta"] = "ncb-cam", ["Campidanese"] = "sc-sro", ["Canadian English"] = "en-CA", ["Canadian French"] = "fr-CA", ["Canadian Ukrainian"] = "uk-CA", ["Candali"] = "pra-can", ["Capenate"] = "xfa-cap", ["Central Ghilzay"] = "ps-cgi", ["Central Korean"] = "ko-cen", ["Central Plains Mandarin"] = "cmn-cep", ["Central Talysh"] = "tly-cen", ["Central Tati"] = "xme-ttc-cen", ["Central-Eastern Niger Fulfulde"] = "fuq", ["Chakavian Serbo-Croatian"] = "ckm", ["Chakhar Mongolian"] = "mn-cha", ["Chali Tati"] = "tks-cal", ["Changtai Hokkien"] = "nan-cha", ["Chilean Spanish"] = "es-CL", ["Chimehi"] = "xme-cim", ["Christian Palestinian Aramaic"] = "arc-cpa", ["Chungcheong Korean"] = "ko-chu", ["Ci"] = "lzh-cii", ["Cisalpine Gaulish"] = "xcg", ["Classical Azerbaijani"] = "az-cls", ["Classical Cantonese"] = "lzh-yue", ["Classical Japanese"] = "ja-cla", ["Classical Latin"] = "la-cla", ["Classical Malay"] = "ms-cla", ["Classical Mandarin"] = "lzh-cmn", ["Classical Persian"] = "fa-cls", ["Classical Sanskrit"] = "cls", ["Classical Tagalog"] = "tl-cls", ["Classical Taishanese"] = "lzh-tai", ["Classical Taiwanese Mandarin"] = "lzh-cmn-TW", ["Colombian Spanish"] = "es-CO", ["Common Bantu"] = "bnt-cmn", ["Contemporary Latin"] = "la-con", ["Coptic Dialect G"] = "cop-ggg", ["Coptic Dialect J"] = "cop-jjj", ["Coptic Dialect K"] = "cop-kkk", ["Coptic Dialect P"] = "cop-ppp", ["Cretan Ancient Greek"] = "grc-kre", ["Cretan Greek"] = "el-crt", ["Cuban Spanish"] = "es-CU", ["Cuman"] = "qwm-cum", ["Cypriot Greek"] = "el-cyp", ["Cypriot Turkish"] = "tr-CY", ["Dabu Hakka"] = "hak-dab", ["Daksinatya"] = "pra-dak", ["Danesfani"] = "tks-dan", ["Danube Bulgar"] = "xbo-dan", ["Danzhou Chinese"] = "zhx-dan", ["Dari"] = "prs", ["Dashtaki"] = "fay-dsh", ["Davani"] = "fay-dav", ["Delijani"] = "xme-del", ["Dhakaiya Vaṅga Bengali"] = "bn-dvn", ["Digor Ossetian"] = "os-dig", ["Dnieper Baltic"] = "bat-dni", ["Dobrujan Tatar"] = "crh-dbj", ["Doric Greek"] = "grc-dor", ["Dramili"] = "pra-dra", ["Drents"] = "drt", ["Early Brythonic"] = "bry-ear", ["Early Mandarin"] = "cmn-ear", ["Early Medieval Latin"] = "la-eme", ["Early Middle Chinese"] = "ltc-ear", ["Early Middle Japanese"] = "ja-mid-ear", ["Early Middle Korean"] = "okm-ear", ["Early Middle Mongol"] = "xng-ear", ["Early Middle Persian"] = "pal-ear", ["Early Modern Czech"] = "cs-ear", ["Early Modern English"] = "en-ear", ["Early Modern Hakka"] = "hak-eam", ["Early Modern Japanese"] = "ja-ear", ["Early Modern Spanish"] = "es-ear", ["Early New High German"] = "de-ear", ["Early New Persian"] = "fa-ear", ["Early Old Chinese"] = "och-ear", ["Early Old Ossetic"] = "oos-ear", ["Early Old Persian"] = "peo-ear", ["Early Scots"] = "enm-esc", ["Early Sogdian"] = "sog-ear", ["East Frisian Low German"] = "frs", ["East Midland Middle English"] = "enm-emi", ["Eastern Balochi"] = "bgp", ["Eastern Mansi"] = "mns-eas", ["Eastern Old Japanese"] = "ojp-eas", ["Eastern Tati"] = "xme-ttc-eas", ["Ebrahimabadi"] = "tks-ebr", ["Ecclesiastical Latin"] = "la-ecc", ["Elean Greek"] = "grc-ela", ["Emamzada Esmaili"] = "fay-eze", ["Epic Greek"] = "grc-epc", ["Esfarvarini"] = "tks-esf", ["European Portuguese"] = "pt-PT", ["Fante Akan"] = "fat", ["Farizandi"] = "xme-far", ["Fayyumic Coptic"] = "cop-fay", ["Frankish"] = "frk", ["Fumani"] = "tly-fum", ["Fuyu Kyrgyz"] = "kjh-fyu", ["Gangwon Korean"] = "ko-gan", ["Gascon"] = "oc-gas", ["Gavkoshaki"] = "fay-gav", ["Gazi"] = "gzi", ["Geordie"] = "en-geo", ["Ghat"] = "thv-ght", ["Gheg Albanian"] = "aln", ["Golyad"] = "bat-gol", ["Goral"] = "pl-gor", ["Greater Polish"] = "pl-gre", ["Greenlandic Norse"] = "non-grn", ["Gronings"] = "gos", ["Guangzhou Cantonese"] = "yue-gua", ["Guanzhong Mandarin"] = "cmn-gua", ["Guernsey Norman"] = "nrf-grn", ["Guilin Mandarin"] = "cmn-gui", ["Gurjara Apabhramsa"] = "inc-agu", ["Gyeonggi Korean"] = "ko-gyg", ["Gyeongsang Korean"] = "ko-gys", ["Hailu Hakka"] = "hak-hai", ["Hamadani"] = "xme-ham", ["Hamgyong Korean"] = "ko-ham", ["Hangzhounese"] = "wuu-han", ["Hanjani"] = "xme-han", ["Hanyu Pinyin"] = "cmn-pinyin", ["Harar Oromo"] = "hae", ["Hatran Aramaic"] = "arc-hat", ["Havigannada"] = "kn-hav", ["Hazaragi"] = "haz", ["Helu Prakrit"] = "pra-hel", ["Hengyang Xiang"] = "hsn-hya", ["Hengzhou Xiang"] = "hsn-hzh", ["Hermopolitan Coptic"] = "cop-her", ["High Alemannic German"] = "gsw-hig", ["Highest Alemannic German"] = "gsw-hst", ["Hokkaido Ainu"] = "ain-hok", ["Hong Kong Cantonese"] = "yue-HK", ["Hong Kong English"] = "en-HK", ["Hong Kong Hakka"] = "hak-HK", ["Hormozi"] = "bsg-hor", ["Houlu Min"] = "nan-hou", ["Hui'an Hokkien"] = "nan-hui", ["Huiyang Hakka"] = "hak-hui", ["Huvadhu Dhivehi"] = "dv-huv", ["Hwanghae Korean"] = "ko-hwa", ["Imperial Aramaic"] = "arc-imp", ["Indian English"] = "en-IN", ["Insular Scots"] = "sco-ins", ["Ionic Greek"] = "grc-ion", ["Iranian Persian"] = "fa-ira", ["Irish English"] = "en-IE", ["Iron Ossetian"] = "os-iro", ["Isfahani"] = "xme-isf", ["Israeli Hebrew"] = "he-IL", ["Jadrani"] = "ps-jad", ["Jeolla Korean"] = "ko-jeo", ["Jersey Norman"] = "nrf-jer", ["Jewish Babylonian Aramaic"] = "tmr", ["Jewish Literary Aramaic"] = "arc-jla", ["Jewish Palestinian Aramaic"] = "jpa", ["Jianghuai Mandarin"] = "cmn-jhu", ["Jinjiang Hokkien"] = "nan-jin", ["Jirofti"] = "rdb-jir", ["Jowshaqani"] = "xme-jow", ["Judeo-Arabic"] = "jrb", ["Kafroni"] = "xme-kaf", ["Kahaki"] = "xme-kah", ["Kahnuji"] = "rdb-kah", ["Kajkavian Serbo-Croatian"] = "kjv", ["Kakari"] = "ps-kak", ["Kaliarda"] = "el-kal", ["Kamviri"] = "xvi", ["Kandahari"] = "ps-kan", ["Kaniguram"] = "oru-kan", ["Karganrudi"] = "tly-kar", ["Kashani"] = "xme-kas", ["Kasmiri Apabhramsa"] = "inc-aka", ["Katchal"] = "ncb-kat", ["Katharevousa"] = "el-kth", ["Kathiyawadi"] = "gu-kat", ["Kativiri"] = "bsh-kat", ["Kentish Middle English"] = "enm-ken", ["Kentish Old English"] = "ang-ken", ["Kermani"] = "xme-krm", ["Kesehi"] = "xme-kes", ["Khalkha Mongolian"] = "mn-kha", ["Khamba"] = "kbg", ["Khams Tibetan"] = "khg", ["Khargi"] = "fay-kar", ["Khasa Prakrit"] = "pra-kha", ["Khatak"] = "ps-xat", ["Khiaraji"] = "tks-xia", ["Khollari"] = "fay-kho", ["Khorchin Mongolian"] = "mn-khr", ["Khoznini"] = "tks-xoz", ["Khufi"] = "sgh-xuf", ["Khughni"] = "sgh-xug", ["Khughni-Bajui"] = "sgh-xgb", ["Khunsari"] = "kfm", ["Khuri"] = "xme-xur", ["Kinmenese Hokkien"] = "nan-kin", ["Kinyarwanda"] = "rw-kin", ["Kirundi"] = "rw-run", ["ဂရေတ် ခါဝ်အိန်"] = "grc-koi", ["Komjani"] = "xme-kom", ["Kondazi"] = "fay-kon", ["Korean Classical Chinese"] = "lzh-KO", ["Kromanti"] = "alv-kro", ["Kundagannada"] = "kn-kun", ["Kuril Ainu"] = "ain-kur", ["Kölsch"] = "ksh", ["Languedocien"] = "oc-lan", ["Lanuvian"] = "itc-lan", ["Lanyin Mandarin"] = "cmn-lan", ["Late Babylonian"] = "akk-lbb", ["Late Brythonic"] = "bry-lat", ["Late Egyptian"] = "egy-lat", ["Late Khotanese"] = "kho-lat", ["Late Latin"] = "la-lat", ["Late Middle Chinese"] = "ltc-lat", ["Late Middle Japanese"] = "ja-mid-lat", ["Late Middle Mongol"] = "xng-lat", ["Late Middle Persian"] = "pal-lat", ["Late Old Chinese"] = "och-lat", ["Late Old Korean"] = "oko-lat", ["Late Old Ossetic"] = "oos-lat", ["Late Old Persian"] = "peo-lat", ["Late Old Swedish"] = "gmq-osw-lat", ["Late Sogdian"] = "sog-lat", ["Law French"] = "xno-law", ["Lesser Polish"] = "pl-les", ["Limousin"] = "oc-lim", ["Lisan ud-Dawat Gujarati"] = "gu-lda", ["Literary Cantonese"] = "yue-lit", ["Literary Chinese"] = "lzh-lit", ["Logar"] = "oru-log", ["Logudorese"] = "sc-src", ["Lombardic"] = "lng", ["Loudi Xiang"] = "hsn-lou", ["Louisiana French"] = "fr-lou", ["Low Alemannic German"] = "gsw-low", ["Low Prussian"] = "nds-lpr", ["Lucanian"] = "osc-luc", ["Lunfardo"] = "es-lun", ["Lycopolitan Coptic"] = "cop-lyc", ["Língua Geral Amazônica"] = "tpw-lga", ["Maasina Fulfulde"] = "ffm", ["Magadhi Prakrit"] = "pra-mag", ["Mahallati"] = "xme-mah", ["Maharastri Apabhramsa"] = "inc-ama", ["Maharastri Prakrit"] = "pra-mah", ["Mahsudi"] = "ps-mah", ["Malaysian Huiyang Hakka"] = "hak-hui-MY", ["Malaysian Mandarin"] = "cmn-MY", ["Mamluk-Kipchak"] = "qwm-mam", ["Manichaean Middle Persian"] = "xmn", ["Manx English"] = "en-IM", ["Masali"] = "tly-msa", ["Masarami"] = "fay-mas", ["Masovian Polish"] = "pl-mas", ["Masulei"] = "tly-msu", ["Medan Hokkien"] = "nan-med", ["Medieval Hebrew"] = "he-med", ["Medieval Latin"] = "la-med", ["Medieval Sinhalese"] = "si-med", ["Medieval Tashelhit"] = "shi-med", ["Meixian Hakka"] = "hak-mei", ["Mercian Old English"] = "ang-mer", ["Mexican Spanish"] = "es-MX", ["Meymehi"] = "xme-mey", ["Middle Assyrian"] = "akk-mas", ["Middle Babylonian"] = "akk-mbb", ["Middle Belarusian"] = "zle-mbe", ["Middle Bulgarian"] = "cu-bgm", ["Middle Chuvash"] = "cv-mid", ["Middle Egyptian"] = "egy-mid", ["Middle Elamite"] = "elx-mid", ["Middle Georgian"] = "ka-mid", ["Middle Hindi"] = "hi-mid", ["Middle Japanese"] = "ja-mid", ["Middle Konkani"] = "kok-mid", ["Middle Polish"] = "zlw-mpl", ["Middle Russian"] = "zle-mru", ["Middle Tamil"] = "ta-mid", ["Middle Ukrainian"] = "zle-muk", ["Minabi"] = "bsg-min", ["Mishnaic Hebrew"] = "he-mis", ["Missouri French"] = "fr-mis", ["Mitanni"] = "inc-mit", ["Moldovan"] = "ro-MD", ["Mulaku Dhivehi"] = "dv-mul", ["Mumviri"] = "bsh-mum", ["Nabataean Aramaic"] = "arc-nab", ["Nalbaria Kamrupi Assamese"] = "as-nkm", ["Nancowry"] = "ncb-nan", ["Nanjing Mandarin"] = "cmn-nan", ["Naraqi"] = "xme-nar", ["Nashalji"] = "xme-nas", ["Natanzi"] = "ntz", ["Nayini"] = "nyq", ["Neo-Assyrian"] = "akk-nas", ["Neo-Babylonian"] = "akk-nbb", ["Neo-Elamite"] = "elx-neo", ["Neo-Middle Egyptian"] = "egy-nmi", ["New Latin"] = "la-new", ["New Sanskrit"] = "sa-neo", ["New Xiang"] = "hsn-new", ["New Zealand English"] = "en-NZ", ["Nigerian Fulfulde"] = "fuv", ["Ningbonese"] = "wuu-nin", ["Noakhailla Vaṅga Bengali"] = "bn-nvn", ["North Alaskan Inupiatun"] = "esi", ["North American English"] = "en-NNN", ["North Karelian"] = "krl-nor", ["Northeastern Mandarin"] = "cmn-noe", ["Northeastern Pashto"] = "ps-nea", ["Northern Irish English"] = "en-GB-NIR", ["Northern Middle English"] = "enm-nor", ["Northern Scots"] = "sco-nor", ["Northern Talysh"] = "tly-nor", ["Northern Tati"] = "xme-ttc-nor", ["Northern Wu"] = "wuu-nor", ["Northumbrian Old English"] = "ang-nor", ["Northwest Alaskan Inupiatun"] = "esk", ["Northwestern Pashto"] = "ps-nwe", ["Nuorese"] = "sc-nuo", ["Nushabadi"] = "xme-nus", ["Odri"] = "pra-odr", ["Old Akkadian"] = "akk-old", ["Old Aramaic"] = "arc-old", ["Old Assyrian"] = "akk-oas", ["Old Avestan"] = "ae-old", ["Old Azari"] = "xme-azr", ["Old Babylonian"] = "akk-obb", ["Old Braj"] = "bra-old", ["Old Chuvash"] = "cv-old", ["Old Coptic"] = "cop-old", ["Old East Norse"] = "non-oen", ["Old Egyptian"] = "egy-old", ["Old Elamite"] = "elx-old", ["Old Italian"] = "roa-oit", ["Old Kazeruni"] = "fay-kzo", ["Old Khotanese"] = "kho-old", ["Old Kirghiz"] = "otk-kir", ["Old Konkani"] = "kok-old", ["Old Latin"] = "itc-ola", ["Old Malay"] = "ms-old", ["Old Mohawk"] = "iro-omo", ["Old Northern French"] = "fro-nor", ["Old Onondaga"] = "iro-oon", ["Old Ossetic"] = "oos", ["Old Provençal"] = "oc-pro-old", ["Old Pskovian"] = "zle-ops", ["Old Shirazi"] = "fay-sho", ["Old Tagalog"] = "tl-old", ["Old Thai"] = "th-old", ["Old Wendat"] = "iro-ohu", ["Old West Norse"] = "non-own", ["Old Xiang"] = "hsn-old", ["Opuntian Locrian"] = "grc-opl", ["Ordos Mongolian"] = "mn-ord", ["Orkhon Turkic"] = "otk-ork", ["Orma"] = "orc", ["Oroshori"] = "sgh-oro", ["Oxyrhynchite Coptic"] = "cop-oxy", ["Ozolian Locrian"] = "grc-ozl", ["Paisaci Prakrit"] = "pra-pai", ["Palasbaria Kamrupi Assamese"] = "as-pkm", ["Palatine German"] = "pfl", ["Paleo-Balkan"] = "qsb-bal", ["Paleo-Hispanic"] = "qsb-ibe", ["Palladius"] = "cmn-palladius", ["Palmyrene Aramaic"] = "arc-pal", ["Pamphylian Greek"] = "grc-pam", ["Paphian Greek"] = "el-pap", ["Papuni"] = "fay-pap", ["Penang Hokkien"] = "nan-pen", ["Peruvian Spanish"] = "es-PE", ["Peshawari"] = "ps-pes", ["Philippine Hokkien"] = "nan-hbl-PH", ["Philippine Mandarin"] = "cmn-PH", ["Philippine Spanish"] = "es-PH", ["Picard Old French"] = "fro-pic", ["Polari"] = "pld", ["Postal Romanization"] = "zh-postal", ["Pracya"] = "pra-pra", ["Praenestine"] = "itc-pra", ["Pre-Angkorian Old Khmer"] = "okz-pre", ["Pre-Classical Chinese"] = "lzh-pre", ["Pre-Greek"] = "qsb-grc", ["Proto-Anglo-Frisian"] = "gmw-afr-pro", ["Proto-Arinic"] = "qfa-yrn-pro", ["Proto-Baltic"] = "bat-pro", ["Proto-Bulgar"] = "trk-bul-pro", ["Proto-Common Turkic"] = "trk-cmn-pro", ["Proto-Finno-Permic"] = "urj-fpr-pro", ["Proto-Finno-Ugric"] = "fiu-pro", ["Proto-Ketic"] = "qfa-yke-pro", ["Proto-Kottic"] = "qfa-yko-pro", ["Proto-Lycopolitan Coptic"] = "cop-ply", ["Proto-North Sea Germanic"] = "gmw-nsg-pro", ["Proto-Oghur"] = "trk-ogr-pro", ["Proto-Oghuz"] = "trk-ogz-pro", ["Proto-Pumpokolic"] = "qfa-ypm-pro", ["Proto-Romance"] = "roa-pro", ["Proto-Tibeto-Burman"] = "tbq-pro", ["Provençal"] = "oc-pro", ["Puerto Rican Spanish"] = "es-PR", ["Pulaar"] = "fuc", ["Pular"] = "fuf", ["Pyongan Korean"] = "ko-pyo", ["Qalhari"] = "xme-qal", ["Qashqai"] = "qxq", ["Qianlu Min"] = "nan-qia", ["Qohrudi"] = "xme-qoh", ["Quanzhou Hokkien"] = "nan-qua", ["Renaissance Latin"] = "la-ren", ["Rioplatense Spanish"] = "es-AR", ["Roshani"] = "sgh-ros", ["Roshani-Khufi"] = "sgh-rsx", ["Russian Church Slavonic"] = "zls-chs-ru", ["Sabari"] = "pra-sab", ["Sagzabadi"] = "tks-sag", ["Sahidic Coptic"] = "cop-sah", ["Saint Dominican Creole French"] = "ht-sdm", ["Sakari"] = "pra-sak", ["Sakhalin Ainu"] = "ain-sak", ["Sallands"] = "sdz", ["Samghani"] = "fay-sam", ["Samnite"] = "osc-sam", ["Sauraseni Apabhramsa"] = "inc-asa", ["Sauraseni Prakrit"] = "pra-sau", ["Scottish English"] = "en-GB-SCT", ["Sedehi"] = "xme-sed", ["Shadi Wu"] = "wuu-chm", ["Shandarmani"] = "tly-san", ["Shanghainese"] = "wuu-sha", ["Shangsi Zhuang"] = "tai-shz", ["Sher"] = "ps-ser", ["Shirazi"] = "fay-shr", ["Shuadit"] = "oc-jud", ["Silesian East Central German"] = "sli", ["Singapore Hokkien"] = "nan-hbl-SG", ["Singapore Mandarin"] = "cmn-SG", ["Sixian Hakka"] = "hak-six", ["Soi"] = "soj", ["Sorkhi"] = "fay-sor", ["South African English"] = "en-ZA", ["South Karelian"] = "krl-sou", ["Southeastern Pashto"] = "ps-sea", ["Southern Balochi"] = "bcc", ["Southern Malaysian Hokkien"] = "nan-spm", ["Southern Middle English"] = "enm-sou", ["Southern Scots"] = "sco-sou", ["Southern Talysh"] = "tly-sou", ["Southern Tati"] = "xme-ttc-sou", ["Southwestern Mandarin"] = "cmn-sow", ["Southwestern Pashto"] = "ps-swe", ["Standard Babylonian"] = "akk-stb", ["Stellingwerfs"] = "stl", ["Suevic"] = "gem-sue", ["Sukhothai Old Thai"] = "th-suk", ["Suzhounese"] = "wuu-suz", ["Swiss French"] = "fr-CH", ["Switzerland German"] = "de-CH", ["Switzerland Italian"] = "it-CH", ["Taiwanese Hakka"] = "hak-TW", ["Taiwanese Hokkien"] = "nan-hbl-TW", ["Taiwanese Mandarin"] = "cmn-TW", ["Takestani"] = "tks-tak", ["Takka Apabhramsa"] = "inc-ata", ["Taleshdulabi"] = "tly-tal", ["Tamahaq"] = "thv", ["Tamasheq"] = "taq", ["Tarehi"] = "xme-trh", ["Tari"] = "xme-tar", ["Tawellemmet"] = "ttq", ["Tayert"] = "thz", ["Thessalian Greek"] = "grc-ths", ["Tianjin Mandarin"] = "cmn-tia", ["Tong'an Hokkien"] = "nan-ton", ["Tongyong Pinyin"] = "cmn-tongyong", ["Torlakian Serbo-Croatian"] = "sh-tor", ["Tosk Albanian"] = "als", ["Traditional Chinese poetry"] = "lzh-shi", ["Transalpine Gaulish"] = "xtg", ["Tseku"] = "tsk", ["Tularudi"] = "tly-tul", ["Twents"] = "twd", ["Twi Akan"] = "tw", ["Ukrainian Church Slavonic"] = "zls-chs-uk", ["Ulster English"] = "en-uls", ["Ulster Scots"] = "sco-uls", ["United States Spanish"] = "es-US", ["Upper Saxon German"] = "sxu", ["Vafsi"] = "vaf", ["Valencian"] = "ca-val", ["Valujerdi"] = "xme-val", ["Varani"] = "xme-var", ["Varzenehi"] = "xme-vrz", ["Vedic Sanskrit"] = "vsn", ["Veluws"] = "vel", ["Venezuelan Spanish"] = "es-VE", ["Viennese German"] = "de-AT-vie", ["Vietnamese Classical Chinese"] = "lzh-VI", ["Viryal Chuvash"] = "cv-vir", ["Vivaro-Alpine"] = "oc-viv", ["Volga Bulgar"] = "xbo-vol", ["Vonishuni"] = "xme-von", ["Vracada Apabhramsa"] = "inc-avr", ["Vulgar Latin"] = "la-vul", ["Waata"] = "ssn", ["Wade–Giles"] = "cmn-wadegiles", ["Walser German"] = "wae", ["Waziri"] = "ps-waz", ["Welsh English"] = "en-GB-WLS", ["Wenzhounese"] = "wuu-wen", ["West Midland Middle English"] = "enm-wmi", ["West Saxon Old English"] = "ang-wsx", ["Western Balochi"] = "bgn", ["Western Mansi"] = "mns-wes", ["Western Niger Fulfulde"] = "fuh", ["Western Panjabi"] = "pnb", ["Western Tati"] = "xme-ttc-wes", ["Westphalian"] = "wep", ["Written vernacular Cantonese"] = "yue-wvc", ["Written vernacular Mandarin"] = "cmn-wvc", ["Written vernacular Taishanese"] = "zhx-tai-wvc", ["Wuhan Mandarin"] = "cmn-wuh", ["Xiamen Hokkien"] = "nan-xia", ["Xining Mandarin"] = "cmn-xin", ["Yangzhou Mandarin"] = "cmn-yan", ["Yarandi"] = "xme-yar", ["Yazdi"] = "xme-yaz", ["Yongchun Hokkien"] = "nan-yon", ["Younger Avestan"] = "ae-yng", ["Yukjin Korean"] = "ko-yuk", ["Zarphatic"] = "zrp", ["Zefrehi"] = "xme-zef", ["Zhangping Hokkien"] = "nan-zhp", ["Zhangzhou Hokkien"] = "nan-zha", ["Zhao'an Hakka"] = "hak-zha", ["Zhao'an Hokkien"] = "nan-zho", ["Zhongshan Min"] = "zhx-zho", ["Zori"] = "xme-zor", ["Zoroastrian Dari"] = "gbz", ["taxonomic name"] = "mul-tax", ["the BMAC substrate"] = "qsb-bma", } n41waz3bn7swfhsijb8af1ljznbn66w 399024 399021 2026-07-17T13:16:12Z Intobesa.bot 1035 Bot: ပွမကၠာဲစုတ်ယၟုနူဘာသာအၚ်္ဂလိက် 399024 Scribunto text/plain return { ["Abhiri"] = "pra-abh", ["Abuzeydabadi"] = "xme-abz", ["Abyanehi"] = "xme-aby", ["Acadian French"] = "fr-aca", ["Achaemenid Elamite"] = "elx-ach", ["Achterhoeks"] = "act", ["Adamawa Fulfulde"] = "fub", ["Addu Dhivehi"] = "dv-add", ["Aeolic Greek"] = "grc-aeo", ["Afghan Uzbek"] = "uz-afg", ["African Romance"] = "la-afr", ["Afridi"] = "ps-afr", ["Akhmimic Coptic"] = "cop-akh", ["Akuapem Twi"] = "tw-aku", ["Alsatian Alemannic German"] = "gsw-FR-als", ["Amdo Tibetan"] = "adx", ["American English"] = "en-US", ["Amorehi"] = "xme-amo", ["Anaraki"] = "xme-ana", ["Anatri Chuvash"] = "cv-ana", ["Anbarani"] = "tly-anb", ["Angkorian Old Khmer"] = "okz-ang", ["Anglian Old English"] = "ang-ang", ["Anglo-Norman"] = "xno", ["Anxi Hokkien"] = "nan-anx", ["Aranese"] = "oc-ara", ["Arbëresh Albanian"] = "aae", ["Arcadian Greek"] = "grc-arc", ["Arcadocypriot Greek"] = "grc-arp", ["Ardestani"] = "xme-ard", ["Ardhamagadhi Prakrit"] = "pra-ard", ["Arghu"] = "klj-arg", ["Armeno-Kipchak"] = "qwm-arm", ["Arvanitika Albanian"] = "aat", ["Asalemi"] = "tly-asa", ["Asante Twi"] = "tw-asa", ["Ashtiani"] = "atn", ["Attic Greek"] = "grc-att", ["Australian Aboriginal English"] = "en-aae", ["Australian English"] = "en-AU", ["Austrian German"] = "de-AT", ["Auvergnat"] = "oc-auv", ["Avahattha"] = "inc-aav", ["Avanti"] = "pra-ava", ["Ayutthaya Old Thai"] = "th-ayu", ["Azerbaijani Talysh"] = "tly-aze", ["Badrudi"] = "xme-bdr", ["Bagirmi Fulfulde"] = "fui", ["Bahliki"] = "pra-bah", ["Bajui"] = "sgh-baj", ["Baltic German"] = "de-bal", ["Bandari"] = "bsg-ban", ["Bangash"] = "ps-bng", ["Bannu"] = "ps-ban", ["Barpetia Kamrupi Assamese"] = "as-bkm", ["Bartangi"] = "sgh-bar", ["Bartangi-Oroshori"] = "sgh-bro", ["Beijing Mandarin"] = "cmn-bei", ["Beijingic Mandarin"] = "cmn-bec", ["Belgian Dutch"] = "nl-BE", ["Besemah"] = "pse-bsm", ["Betawi Kota"] = "bew-kot", ["Biblical Aramaic"] = "arc-bib", ["Biblical Hebrew"] = "hbo", ["Bidhandi"] = "xme-bid", ["Bijagani"] = "xme-bij", ["Boeotian Greek"] = "grc-boi", ["Bohairic Coptic"] = "cop-boh", ["Bolivian Spanish"] = "es-BO", ["Bombay Hindi"] = "hi-mum", ["Bono Twi"] = "tw-abr", ["Borana"] = "gax", ["Borgu Fulfulde"] = "fue", ["Borujerdi"] = "xme-bor", ["Brahmanic Sanskrit"] = "sa-bra", ["Brazilian Portuguese"] = "pt-BR", ["British English"] = "en-GB", ["Buddhist Hybrid Sanskrit"] = "sa-bhs", ["Burenjani"] = "fay-bur", ["Bushehri"] = "fay-bsh", ["ဂရေတ် ဗေတ်သေန်ထေၚ်"] = "gkm", ["Cajun French"] = "frc", ["California English"] = "en-US-CA", ["Camorta"] = "ncb-cam", ["Campidanese"] = "sc-sro", ["Canadian English"] = "en-CA", ["Canadian French"] = "fr-CA", ["Canadian Ukrainian"] = "uk-CA", ["Candali"] = "pra-can", ["Capenate"] = "xfa-cap", ["Central Ghilzay"] = "ps-cgi", ["Central Korean"] = "ko-cen", ["Central Plains Mandarin"] = "cmn-cep", ["Central Talysh"] = "tly-cen", ["Central Tati"] = "xme-ttc-cen", ["Central-Eastern Niger Fulfulde"] = "fuq", ["Chakavian Serbo-Croatian"] = "ckm", ["Chakhar Mongolian"] = "mn-cha", ["Chali Tati"] = "tks-cal", ["Changtai Hokkien"] = "nan-cha", ["Chilean Spanish"] = "es-CL", ["Chimehi"] = "xme-cim", ["Christian Palestinian Aramaic"] = "arc-cpa", ["Chungcheong Korean"] = "ko-chu", ["Ci"] = "lzh-cii", ["Cisalpine Gaulish"] = "xcg", ["Classical Azerbaijani"] = "az-cls", ["Classical Cantonese"] = "lzh-yue", ["Classical Japanese"] = "ja-cla", ["Classical Latin"] = "la-cla", ["Classical Malay"] = "ms-cla", ["Classical Mandarin"] = "lzh-cmn", ["Classical Persian"] = "fa-cls", ["Classical Sanskrit"] = "cls", ["Classical Tagalog"] = "tl-cls", ["Classical Taishanese"] = "lzh-tai", ["Classical Taiwanese Mandarin"] = "lzh-cmn-TW", ["Colombian Spanish"] = "es-CO", ["Common Bantu"] = "bnt-cmn", ["Contemporary Latin"] = "la-con", ["Coptic Dialect G"] = "cop-ggg", ["Coptic Dialect J"] = "cop-jjj", ["Coptic Dialect K"] = "cop-kkk", ["Coptic Dialect P"] = "cop-ppp", ["Cretan Ancient Greek"] = "grc-kre", ["Cretan Greek"] = "el-crt", ["Cuban Spanish"] = "es-CU", ["Cuman"] = "qwm-cum", ["Cypriot Greek"] = "el-cyp", ["Cypriot Turkish"] = "tr-CY", ["Dabu Hakka"] = "hak-dab", ["Daksinatya"] = "pra-dak", ["Danesfani"] = "tks-dan", ["Danube Bulgar"] = "xbo-dan", ["Danzhou Chinese"] = "zhx-dan", ["Dari"] = "prs", ["Dashtaki"] = "fay-dsh", ["Davani"] = "fay-dav", ["Delijani"] = "xme-del", ["Dhakaiya Vaṅga Bengali"] = "bn-dvn", ["Digor Ossetian"] = "os-dig", ["Dnieper Baltic"] = "bat-dni", ["Dobrujan Tatar"] = "crh-dbj", ["Doric Greek"] = "grc-dor", ["Dramili"] = "pra-dra", ["Drents"] = "drt", ["Early Brythonic"] = "bry-ear", ["Early Mandarin"] = "cmn-ear", ["Early Medieval Latin"] = "la-eme", ["Early Middle Chinese"] = "ltc-ear", ["Early Middle Japanese"] = "ja-mid-ear", ["Early Middle Korean"] = "okm-ear", ["Early Middle Mongol"] = "xng-ear", ["Early Middle Persian"] = "pal-ear", ["Early Modern Czech"] = "cs-ear", ["Early Modern English"] = "en-ear", ["Early Modern Hakka"] = "hak-eam", ["Early Modern Japanese"] = "ja-ear", ["Early Modern Spanish"] = "es-ear", ["Early New High German"] = "de-ear", ["Early New Persian"] = "fa-ear", ["Early Old Chinese"] = "och-ear", ["Early Old Ossetic"] = "oos-ear", ["Early Old Persian"] = "peo-ear", ["Early Scots"] = "enm-esc", ["Early Sogdian"] = "sog-ear", ["East Frisian Low German"] = "frs", ["East Midland Middle English"] = "enm-emi", ["Eastern Balochi"] = "bgp", ["Eastern Mansi"] = "mns-eas", ["Eastern Old Japanese"] = "ojp-eas", ["Eastern Tati"] = "xme-ttc-eas", ["Ebrahimabadi"] = "tks-ebr", ["Ecclesiastical Latin"] = "la-ecc", ["Elean Greek"] = "grc-ela", ["Emamzada Esmaili"] = "fay-eze", ["Epic Greek"] = "grc-epc", ["Esfarvarini"] = "tks-esf", ["European Portuguese"] = "pt-PT", ["Fante Akan"] = "fat", ["Farizandi"] = "xme-far", ["Fayyumic Coptic"] = "cop-fay", ["Frankish"] = "frk", ["Fumani"] = "tly-fum", ["Fuyu Kyrgyz"] = "kjh-fyu", ["Gangwon Korean"] = "ko-gan", ["Gascon"] = "oc-gas", ["Gavkoshaki"] = "fay-gav", ["Gazi"] = "gzi", ["Geordie"] = "en-geo", ["Ghat"] = "thv-ght", ["Gheg Albanian"] = "aln", ["Golyad"] = "bat-gol", ["Goral"] = "pl-gor", ["Greater Polish"] = "pl-gre", ["Greenlandic Norse"] = "non-grn", ["Gronings"] = "gos", ["Guangzhou Cantonese"] = "yue-gua", ["Guanzhong Mandarin"] = "cmn-gua", ["Guernsey Norman"] = "nrf-grn", ["Guilin Mandarin"] = "cmn-gui", ["Gurjara Apabhramsa"] = "inc-agu", ["Gyeonggi Korean"] = "ko-gyg", ["Gyeongsang Korean"] = "ko-gys", ["Hailu Hakka"] = "hak-hai", ["Hamadani"] = "xme-ham", ["Hamgyong Korean"] = "ko-ham", ["Hangzhounese"] = "wuu-han", ["Hanjani"] = "xme-han", ["Hanyu Pinyin"] = "cmn-pinyin", ["Harar Oromo"] = "hae", ["Hatran Aramaic"] = "arc-hat", ["Havigannada"] = "kn-hav", ["Hazaragi"] = "haz", ["Helu Prakrit"] = "pra-hel", ["Hengyang Xiang"] = "hsn-hya", ["Hengzhou Xiang"] = "hsn-hzh", ["Hermopolitan Coptic"] = "cop-her", ["High Alemannic German"] = "gsw-hig", ["Highest Alemannic German"] = "gsw-hst", ["Hokkaido Ainu"] = "ain-hok", ["Hong Kong Cantonese"] = "yue-HK", ["Hong Kong English"] = "en-HK", ["Hong Kong Hakka"] = "hak-HK", ["Hormozi"] = "bsg-hor", ["Houlu Min"] = "nan-hou", ["Hui'an Hokkien"] = "nan-hui", ["Huiyang Hakka"] = "hak-hui", ["Huvadhu Dhivehi"] = "dv-huv", ["Hwanghae Korean"] = "ko-hwa", ["Imperial Aramaic"] = "arc-imp", ["Indian English"] = "en-IN", ["Insular Scots"] = "sco-ins", ["Ionic Greek"] = "grc-ion", ["Iranian Persian"] = "fa-ira", ["Irish English"] = "en-IE", ["Iron Ossetian"] = "os-iro", ["Isfahani"] = "xme-isf", ["Israeli Hebrew"] = "he-IL", ["Jadrani"] = "ps-jad", ["Jeolla Korean"] = "ko-jeo", ["Jersey Norman"] = "nrf-jer", ["Jewish Babylonian Aramaic"] = "tmr", ["Jewish Literary Aramaic"] = "arc-jla", ["Jewish Palestinian Aramaic"] = "jpa", ["Jianghuai Mandarin"] = "cmn-jhu", ["Jinjiang Hokkien"] = "nan-jin", ["Jirofti"] = "rdb-jir", ["Jowshaqani"] = "xme-jow", ["Judeo-Arabic"] = "jrb", ["Kafroni"] = "xme-kaf", ["Kahaki"] = "xme-kah", ["Kahnuji"] = "rdb-kah", ["Kajkavian Serbo-Croatian"] = "kjv", ["Kakari"] = "ps-kak", ["Kaliarda"] = "el-kal", ["Kamviri"] = "xvi", ["Kandahari"] = "ps-kan", ["Kaniguram"] = "oru-kan", ["Karganrudi"] = "tly-kar", ["Kashani"] = "xme-kas", ["Kasmiri Apabhramsa"] = "inc-aka", ["Katchal"] = "ncb-kat", ["Katharevousa"] = "el-kth", ["Kathiyawadi"] = "gu-kat", ["Kativiri"] = "bsh-kat", ["Kentish Middle English"] = "enm-ken", ["Kentish Old English"] = "ang-ken", ["Kermani"] = "xme-krm", ["Kesehi"] = "xme-kes", ["Khalkha Mongolian"] = "mn-kha", ["Khamba"] = "kbg", ["Khams Tibetan"] = "khg", ["Khargi"] = "fay-kar", ["Khasa Prakrit"] = "pra-kha", ["Khatak"] = "ps-xat", ["Khiaraji"] = "tks-xia", ["Khollari"] = "fay-kho", ["Khorchin Mongolian"] = "mn-khr", ["Khoznini"] = "tks-xoz", ["Khufi"] = "sgh-xuf", ["Khughni"] = "sgh-xug", ["Khughni-Bajui"] = "sgh-xgb", ["Khunsari"] = "kfm", ["Khuri"] = "xme-xur", ["Kinmenese Hokkien"] = "nan-kin", ["Kinyarwanda"] = "rw-kin", ["Kirundi"] = "rw-run", ["ဂရေတ် ခါဝ်အိန်"] = "grc-koi", ["Komjani"] = "xme-kom", ["Kondazi"] = "fay-kon", ["Korean Classical Chinese"] = "lzh-KO", ["Kromanti"] = "alv-kro", ["Kundagannada"] = "kn-kun", ["Kuril Ainu"] = "ain-kur", ["Kölsch"] = "ksh", ["Languedocien"] = "oc-lan", ["Lanuvian"] = "itc-lan", ["Lanyin Mandarin"] = "cmn-lan", ["Late Babylonian"] = "akk-lbb", ["Late Brythonic"] = "bry-lat", ["Late Egyptian"] = "egy-lat", ["Late Khotanese"] = "kho-lat", ["Late Latin"] = "la-lat", ["Late Middle Chinese"] = "ltc-lat", ["Late Middle Japanese"] = "ja-mid-lat", ["Late Middle Mongol"] = "xng-lat", ["Late Middle Persian"] = "pal-lat", ["Late Old Chinese"] = "och-lat", ["Late Old Korean"] = "oko-lat", ["Late Old Ossetic"] = "oos-lat", ["Late Old Persian"] = "peo-lat", ["Late Old Swedish"] = "gmq-osw-lat", ["Late Sogdian"] = "sog-lat", ["Law French"] = "xno-law", ["Lesser Polish"] = "pl-les", ["Limousin"] = "oc-lim", ["Lisan ud-Dawat Gujarati"] = "gu-lda", ["Literary Cantonese"] = "yue-lit", ["Literary Chinese"] = "lzh-lit", ["Logar"] = "oru-log", ["Logudorese"] = "sc-src", ["Lombardic"] = "lng", ["Loudi Xiang"] = "hsn-lou", ["Louisiana French"] = "fr-lou", ["Low Alemannic German"] = "gsw-low", ["Low Prussian"] = "nds-lpr", ["Lucanian"] = "osc-luc", ["Lunfardo"] = "es-lun", ["Lycopolitan Coptic"] = "cop-lyc", ["Língua Geral Amazônica"] = "tpw-lga", ["Maasina Fulfulde"] = "ffm", ["Magadhi Prakrit"] = "pra-mag", ["Mahallati"] = "xme-mah", ["Maharastri Apabhramsa"] = "inc-ama", ["Maharastri Prakrit"] = "pra-mah", ["Mahsudi"] = "ps-mah", ["Malaysian Huiyang Hakka"] = "hak-hui-MY", ["Malaysian Mandarin"] = "cmn-MY", ["Mamluk-Kipchak"] = "qwm-mam", ["Manichaean Middle Persian"] = "xmn", ["Manx English"] = "en-IM", ["Masali"] = "tly-msa", ["Masarami"] = "fay-mas", ["Masovian Polish"] = "pl-mas", ["Masulei"] = "tly-msu", ["Medan Hokkien"] = "nan-med", ["Medieval Hebrew"] = "he-med", ["Medieval Latin"] = "la-med", ["Medieval Sinhalese"] = "si-med", ["Medieval Tashelhit"] = "shi-med", ["Meixian Hakka"] = "hak-mei", ["Mercian Old English"] = "ang-mer", ["Mexican Spanish"] = "es-MX", ["Meymehi"] = "xme-mey", ["Middle Assyrian"] = "akk-mas", ["Middle Babylonian"] = "akk-mbb", ["Middle Belarusian"] = "zle-mbe", ["Middle Bulgarian"] = "cu-bgm", ["Middle Chuvash"] = "cv-mid", ["Middle Egyptian"] = "egy-mid", ["Middle Elamite"] = "elx-mid", ["Middle Georgian"] = "ka-mid", ["Middle Hindi"] = "hi-mid", ["Middle Japanese"] = "ja-mid", ["Middle Konkani"] = "kok-mid", ["Middle Polish"] = "zlw-mpl", ["Middle Russian"] = "zle-mru", ["Middle Tamil"] = "ta-mid", ["Middle Ukrainian"] = "zle-muk", ["Minabi"] = "bsg-min", ["Mishnaic Hebrew"] = "he-mis", ["Missouri French"] = "fr-mis", ["Mitanni"] = "inc-mit", ["Moldovan"] = "ro-MD", ["Mulaku Dhivehi"] = "dv-mul", ["Mumviri"] = "bsh-mum", ["Nabataean Aramaic"] = "arc-nab", ["Nalbaria Kamrupi Assamese"] = "as-nkm", ["Nancowry"] = "ncb-nan", ["Nanjing Mandarin"] = "cmn-nan", ["Naraqi"] = "xme-nar", ["Nashalji"] = "xme-nas", ["Natanzi"] = "ntz", ["Nayini"] = "nyq", ["Neo-Assyrian"] = "akk-nas", ["Neo-Babylonian"] = "akk-nbb", ["Neo-Elamite"] = "elx-neo", ["Neo-Middle Egyptian"] = "egy-nmi", ["New Latin"] = "la-new", ["New Sanskrit"] = "sa-neo", ["New Xiang"] = "hsn-new", ["New Zealand English"] = "en-NZ", ["Nigerian Fulfulde"] = "fuv", ["Ningbonese"] = "wuu-nin", ["Noakhailla Vaṅga Bengali"] = "bn-nvn", ["North Alaskan Inupiatun"] = "esi", ["North American English"] = "en-NNN", ["North Karelian"] = "krl-nor", ["Northeastern Mandarin"] = "cmn-noe", ["Northeastern Pashto"] = "ps-nea", ["Northern Irish English"] = "en-GB-NIR", ["Northern Middle English"] = "enm-nor", ["Northern Scots"] = "sco-nor", ["Northern Talysh"] = "tly-nor", ["Northern Tati"] = "xme-ttc-nor", ["Northern Wu"] = "wuu-nor", ["Northumbrian Old English"] = "ang-nor", ["Northwest Alaskan Inupiatun"] = "esk", ["Northwestern Pashto"] = "ps-nwe", ["Nuorese"] = "sc-nuo", ["Nushabadi"] = "xme-nus", ["Odri"] = "pra-odr", ["Old Akkadian"] = "akk-old", ["Old Aramaic"] = "arc-old", ["Old Assyrian"] = "akk-oas", ["Old Avestan"] = "ae-old", ["Old Azari"] = "xme-azr", ["Old Babylonian"] = "akk-obb", ["Old Braj"] = "bra-old", ["Old Chuvash"] = "cv-old", ["Old Coptic"] = "cop-old", ["Old East Norse"] = "non-oen", ["Old Egyptian"] = "egy-old", ["Old Elamite"] = "elx-old", ["Old Italian"] = "roa-oit", ["Old Kazeruni"] = "fay-kzo", ["Old Khotanese"] = "kho-old", ["Old Kirghiz"] = "otk-kir", ["Old Konkani"] = "kok-old", ["Old Latin"] = "itc-ola", ["Old Malay"] = "ms-old", ["Old Mohawk"] = "iro-omo", ["Old Northern French"] = "fro-nor", ["Old Onondaga"] = "iro-oon", ["Old Ossetic"] = "oos", ["Old Provençal"] = "oc-pro-old", ["Old Pskovian"] = "zle-ops", ["Old Shirazi"] = "fay-sho", ["Old Tagalog"] = "tl-old", ["Old Thai"] = "th-old", ["Old Wendat"] = "iro-ohu", ["Old West Norse"] = "non-own", ["Old Xiang"] = "hsn-old", ["Opuntian Locrian"] = "grc-opl", ["Ordos Mongolian"] = "mn-ord", ["Orkhon Turkic"] = "otk-ork", ["Orma"] = "orc", ["Oroshori"] = "sgh-oro", ["Oxyrhynchite Coptic"] = "cop-oxy", ["Ozolian Locrian"] = "grc-ozl", ["Paisaci Prakrit"] = "pra-pai", ["Palasbaria Kamrupi Assamese"] = "as-pkm", ["Palatine German"] = "pfl", ["Paleo-Balkan"] = "qsb-bal", ["Paleo-Hispanic"] = "qsb-ibe", ["Palladius"] = "cmn-palladius", ["Palmyrene Aramaic"] = "arc-pal", ["Pamphylian Greek"] = "grc-pam", ["Paphian Greek"] = "el-pap", ["Papuni"] = "fay-pap", ["Penang Hokkien"] = "nan-pen", ["Peruvian Spanish"] = "es-PE", ["Peshawari"] = "ps-pes", ["Philippine Hokkien"] = "nan-hbl-PH", ["Philippine Mandarin"] = "cmn-PH", ["Philippine Spanish"] = "es-PH", ["Picard Old French"] = "fro-pic", ["Polari"] = "pld", ["Postal Romanization"] = "zh-postal", ["Pracya"] = "pra-pra", ["Praenestine"] = "itc-pra", ["Pre-Angkorian Old Khmer"] = "okz-pre", ["Pre-Classical Chinese"] = "lzh-pre", ["Pre-Greek"] = "qsb-grc", ["Proto-Anglo-Frisian"] = "gmw-afr-pro", ["Proto-Arinic"] = "qfa-yrn-pro", ["Proto-Baltic"] = "bat-pro", ["Proto-Bulgar"] = "trk-bul-pro", ["Proto-Common Turkic"] = "trk-cmn-pro", ["Proto-Finno-Permic"] = "urj-fpr-pro", ["Proto-Finno-Ugric"] = "fiu-pro", ["Proto-Ketic"] = "qfa-yke-pro", ["Proto-Kottic"] = "qfa-yko-pro", ["Proto-Lycopolitan Coptic"] = "cop-ply", ["Proto-North Sea Germanic"] = "gmw-nsg-pro", ["Proto-Oghur"] = "trk-ogr-pro", ["Proto-Oghuz"] = "trk-ogz-pro", ["Proto-Pumpokolic"] = "qfa-ypm-pro", ["Proto-Romance"] = "roa-pro", ["Proto-Tibeto-Burman"] = "tbq-pro", ["Provençal"] = "oc-pro", ["Puerto Rican Spanish"] = "es-PR", ["Pulaar"] = "fuc", ["Pular"] = "fuf", ["Pyongan Korean"] = "ko-pyo", ["Qalhari"] = "xme-qal", ["Qashqai"] = "qxq", ["Qianlu Min"] = "nan-qia", ["Qohrudi"] = "xme-qoh", ["Quanzhou Hokkien"] = "nan-qua", ["Renaissance Latin"] = "la-ren", ["Rioplatense Spanish"] = "es-AR", ["Roshani"] = "sgh-ros", ["Roshani-Khufi"] = "sgh-rsx", ["Russian Church Slavonic"] = "zls-chs-ru", ["Sabari"] = "pra-sab", ["Sagzabadi"] = "tks-sag", ["Sahidic Coptic"] = "cop-sah", ["Saint Dominican Creole French"] = "ht-sdm", ["Sakari"] = "pra-sak", ["Sakhalin Ainu"] = "ain-sak", ["Sallands"] = "sdz", ["Samghani"] = "fay-sam", ["Samnite"] = "osc-sam", ["Sauraseni Apabhramsa"] = "inc-asa", ["Sauraseni Prakrit"] = "pra-sau", ["Scottish English"] = "en-GB-SCT", ["Sedehi"] = "xme-sed", ["Shadi Wu"] = "wuu-chm", ["Shandarmani"] = "tly-san", ["Shanghainese"] = "wuu-sha", ["Shangsi Zhuang"] = "tai-shz", ["Sher"] = "ps-ser", ["Shirazi"] = "fay-shr", ["Shuadit"] = "oc-jud", ["Silesian East Central German"] = "sli", ["Singapore Hokkien"] = "nan-hbl-SG", ["Singapore Mandarin"] = "cmn-SG", ["Sixian Hakka"] = "hak-six", ["Soi"] = "soj", ["Sorkhi"] = "fay-sor", ["South African English"] = "en-ZA", ["South Karelian"] = "krl-sou", ["Southeastern Pashto"] = "ps-sea", ["Southern Balochi"] = "bcc", ["Southern Malaysian Hokkien"] = "nan-spm", ["Southern Middle English"] = "enm-sou", ["Southern Scots"] = "sco-sou", ["Southern Talysh"] = "tly-sou", ["Southern Tati"] = "xme-ttc-sou", ["Southwestern Mandarin"] = "cmn-sow", ["Southwestern Pashto"] = "ps-swe", ["Standard Babylonian"] = "akk-stb", ["Stellingwerfs"] = "stl", ["Suevic"] = "gem-sue", ["Sukhothai Old Thai"] = "th-suk", ["Suzhounese"] = "wuu-suz", ["Swiss French"] = "fr-CH", ["Switzerland German"] = "de-CH", ["Switzerland Italian"] = "it-CH", ["Taiwanese Hakka"] = "hak-TW", ["Taiwanese Hokkien"] = "nan-hbl-TW", ["Taiwanese Mandarin"] = "cmn-TW", ["Takestani"] = "tks-tak", ["Takka Apabhramsa"] = "inc-ata", ["Taleshdulabi"] = "tly-tal", ["Tamahaq"] = "thv", ["Tamasheq"] = "taq", ["Tarehi"] = "xme-trh", ["Tari"] = "xme-tar", ["Tawellemmet"] = "ttq", ["Tayert"] = "thz", ["Thessalian Greek"] = "grc-ths", ["Tianjin Mandarin"] = "cmn-tia", ["Tong'an Hokkien"] = "nan-ton", ["Tongyong Pinyin"] = "cmn-tongyong", ["Torlakian Serbo-Croatian"] = "sh-tor", ["Tosk Albanian"] = "als", ["Traditional Chinese poetry"] = "lzh-shi", ["Transalpine Gaulish"] = "xtg", ["Tseku"] = "tsk", ["Tularudi"] = "tly-tul", ["Twents"] = "twd", ["Twi Akan"] = "tw", ["Ukrainian Church Slavonic"] = "zls-chs-uk", ["Ulster English"] = "en-uls", ["Ulster Scots"] = "sco-uls", ["United States Spanish"] = "es-US", ["Upper Saxon German"] = "sxu", ["Vafsi"] = "vaf", ["Valencian"] = "ca-val", ["Valujerdi"] = "xme-val", ["Varani"] = "xme-var", ["Varzenehi"] = "xme-vrz", ["Vedic Sanskrit"] = "vsn", ["Veluws"] = "vel", ["Venezuelan Spanish"] = "es-VE", ["Viennese German"] = "de-AT-vie", ["Vietnamese Classical Chinese"] = "lzh-VI", ["Viryal Chuvash"] = "cv-vir", ["Vivaro-Alpine"] = "oc-viv", ["Volga Bulgar"] = "xbo-vol", ["Vonishuni"] = "xme-von", ["Vracada Apabhramsa"] = "inc-avr", ["Vulgar Latin"] = "la-vul", ["Waata"] = "ssn", ["Wade–Giles"] = "cmn-wadegiles", ["Walser German"] = "wae", ["Waziri"] = "ps-waz", ["Welsh English"] = "en-GB-WLS", ["Wenzhounese"] = "wuu-wen", ["West Midland Middle English"] = "enm-wmi", ["West Saxon Old English"] = "ang-wsx", ["Western Balochi"] = "bgn", ["Western Mansi"] = "mns-wes", ["Western Niger Fulfulde"] = "fuh", ["Western Panjabi"] = "pnb", ["Western Tati"] = "xme-ttc-wes", ["Westphalian"] = "wep", ["Written vernacular Cantonese"] = "yue-wvc", ["Written vernacular Mandarin"] = "cmn-wvc", ["Written vernacular Taishanese"] = "zhx-tai-wvc", ["Wuhan Mandarin"] = "cmn-wuh", ["Xiamen Hokkien"] = "nan-xia", ["Xining Mandarin"] = "cmn-xin", ["Yangzhou Mandarin"] = "cmn-yan", ["Yarandi"] = "xme-yar", ["Yazdi"] = "xme-yaz", ["Yongchun Hokkien"] = "nan-yon", ["Younger Avestan"] = "ae-yng", ["Yukjin Korean"] = "ko-yuk", ["Zarphatic"] = "zrp", ["Zefrehi"] = "xme-zef", ["Zhangping Hokkien"] = "nan-zhp", ["Zhangzhou Hokkien"] = "nan-zha", ["Zhao'an Hakka"] = "hak-zha", ["Zhao'an Hokkien"] = "nan-zho", ["Zhongshan Min"] = "zhx-zho", ["Zori"] = "xme-zor", ["Zoroastrian Dari"] = "gbz", ["taxonomic name"] = "mul-tax", ["the BMAC substrate"] = "qsb-bma", } jfyin03kbylbsmsa3wh05yf13nhbmly မဝ်ဂျူ:data consistency check/documentation 828 56882 399027 398454 2026-07-17T13:28:09Z 咽頭べさ 33 399027 wikitext text/x-wiki <includeonly>{{shortcut|WT:DATACHECK|WT:FSCK}}</includeonly> This module checks the validity and internal consistency of the language, language family, and script data used on Wiktionary: the modules in [[:Category:Language data modules]] as well as [[Module:scripts/data]]. == Output == {{#invoke:data consistency check|perform}} ==Checks performed== For multiple data modules: * Codes for languages, families and etymology-only languages must be unique and cannot clash with one another. * Canonical names for languages, families, and etymology-only languages must not be found in the list of other names. * Each name in the list of other names must appear only once. * <code>otherNames</code>, if present, must be an array. * Wikidata item IDs must be a positive integer or a string starting with <code>Q</code> and ending with decimal digits. The following must be true of the data used by [[Module:languages]]: * Each code must be defined in the correct submodule according to whether it is two-letter, three-letter or exceptional. * The canonical name (field <code>1</code>) must be present and must not be the same as the canonical name of another language. * If field <code>2</code> is not <code>nil</code>, it must a valid Wikidata item ID. * If field <code>3</code> or <code>family</code> is given and not <code>nil</code>, it must be a valid family code. * If field <code>4</code> or <code>scripts</code> is given and not <code>nil</code>, it must be an array, and each string in the array must be a valid script code. * If <code>ancestors</code> is given, it must be an array, and each string in the array must be a valid language or etymology language code. * If <code>family</code> is given, it must be a valid family code. * If <code>type</code> is given, it must be one of the recognised values (<code>regular</code>, <code>reconstructed</code>, <code>appendix-constructed</code>). * If <code>entry_name</code> is given, it must be a table that contains either two arrays (<code>from</code> and <code>to</code>) or a string (<code>remove_diacritics</code>) or both. * If <code>sort_key</code> is given, it may either be a string, or at table that in turn contains either two arrays (<code>from</code> and <code>to</code>) or a string (<code>remove_diacritics</code>). * If <code>entry_name</code> or <code>sort_key</code> is given, the <code>from</code> array must be longer or equal in length to the <code>to</code> array. * If <code>standard_chars</code> is given, it must form a valid Lua string pattern when placed between square brackets with <code>^</code> before it ({{code|lua|"[^...]}}). (It should match all characters regularly used in the language, but that cannot be tested.) * If <code>override_translit</code> is set, <code>translit</code> must also be set, because there must be a transliteration module that can override manual transliteration. * If <code>link_tr</code> is present, it must be <code>true</code>. * Have no data keys besides these: {{code|lua|1, 2, 3, "entry_name", "sort_key", "display", "otherNames", "aliases", "varieties", "type", "scripts", "ancestors", "wikimedia_codes", "wikipedia_article", "standard_chars", "translit", "override_translit", "link_tr"}}. Checks not performed: * If <code>translit</code> is present, it should be the name of a module, and this module should contain a <code>tr</code> function that takes a pagename (and optionally a language code and script code) as arguments. * If <code>sort_key</code> is a string, it should be the name of a module, and this module should contain a <code>makeSortKey</code> function that takes a pagename (and optionally a language code and script code) as arguments. * If <code>entry_name</code> or <code>sort_key</code> is a table and contains a field <code>remove_diacritics</code>, the value of the field should be a string that forms a valid Lua pattern when it is placed inside negated set notation (<code>[^...]</code>). These are not checked here, because module errors will quickly crop up in entries if these conditions are not met, assuming that [[Module:utilities]] attempts to generate a sortkey for a category pertaining to the language in question, or {{code|lua|full_link}} attempts to use the transliteration module. [[Module:languages/code to canonical name]] and [[Module:languages/canonical names]] must contain all the codes and canonical names found in the data submodules of [[Module:languages]], and no more. The following must be true of the data used by [[Module:etymology languages]]: * <code>canonicalName</code> must be given. * <code>parent</code> must be given must be a valid language, family or etymology-only language code. * If <code>ancestors</code> is given, it must be an array, and each string in the array must be a valid language or etymology language code. The etymology language should also be listed as the ancestor of a regular language. * Have no data keys besides these: {{code|lua|"canonicalName", "otherNames", "parent", "ancestors", "wikipedia_article", "wikidata_item"}}. Codes in [[Module:families]] data must: * Have <code>canonicalName</code>, which must not be the same as the canonical name of another family. * If <code>family</code> is given, it must be a valid family code. * Have at least one language or subfamily belonging to it. * Have no data keys besides these: {{code|lua|"canonicalName", "otherNames", "family", "protoLanguage", "wikidata_item"}}. Codes in [[Module:scripts]] data must: * Have <code>canonicalName</code>. * Have at least one language that lists it as one of its scripts. * Have a <code>characters</code> pattern for script autodetection, and this must form a valid Lua string pattern when placed between square brackets ({{code|lua|"[...]"}}). (It should match all characters in the script, but that cannot be tested.) * Have no data keys besides these: {{code|lua|"canonicalName", "otherNames", "parent", "systems", "wikipedia_article", "characters", "direction"}}. <includeonly> {{module cat|-|ဒေတာ,မစမ်ၜတ်,အရေဝ်ဘာသာကဵုအက္ခရ်,မထိၚ်ဒက်လဝ်}} </includeonly> ru2ixp1os1lva3ce1grxuuy7fvnf6ks မဝ်ဂျူ:etymology languages/data/documentation 828 64194 399025 398484 2026-07-17T13:19:08Z 咽頭べさ 33 399025 wikitext text/x-wiki Contains data for language or language family codes that are used mainly in [[:ကဏ္ဍ:ထာမ်ပလိက်နိရုတ်ဂမၠိုၚ်|etymology templates]] (specifically [[:ကဏ္ဍ:ထာမ်ပလိက်မဆက်ဆေန်စှ်ေကၠုၚ်နူဍုၚ်သအာၚ်ဂမၠိုၚ်|foreign derivation templates]]) such as {{temp|der}} and {{temp|cog}}. ==Errors== {{if then show|{{#invoke:data consistency check|check_modules_t|languages/data/2|languages/data/2/extra|languages/data/3/a|languages/data/3/a/extra|languages/data/3/b|languages/data/3/b/extra|languages/data/3/c|languages/data/3/c/extra|languages/data/3/d|languages/data/3/d/extra|languages/data/3/e|languages/data/3/e/extra|languages/data/3/f|languages/data/3/f/extra|languages/data/3/g|languages/data/3/g/extra|languages/data/3/h|languages/data/3/h/extra|languages/data/3/i|languages/data/3/i/extra|languages/data/3/j|languages/data/3/j/extra|languages/data/3/k|languages/data/3/k/extra|languages/data/3/l|languages/data/3/l/extra|languages/data/3/m|languages/data/3/m/extra|languages/data/3/n|languages/data/3/n/extra|languages/data/3/o|languages/data/3/o/extra|languages/data/3/p|languages/data/3/p/extra|languages/data/3/q|languages/data/3/q/extra|languages/data/3/r|languages/data/3/r/extra|languages/data/3/s|languages/data/3/s/extra|languages/data/3/t|languages/data/3/t/extra|languages/data/3/u|languages/data/3/u/extra|languages/data/3/v|languages/data/3/v/extra|languages/data/3/w|languages/data/3/w/extra|languages/data/3/x|languages/data/3/x/extra|languages/data/3/y|languages/data/3/y/extra|languages/data/3/z|languages/data/3/z/extra|languages/data/exceptional|languages/data/exceptional/extra|etymology languages/data|families/data|languages/canonical names|languages/code to canonical name|etymology languages/canonical names|etymology languages/code to canonical name|families/canonical names|families/code to canonical name|Template:langname-lite}}|[[Module:data consistency check]] shows no relevant errors.|The following errors were detected by [[Module:data consistency check]]: <noinclude/>}} ==Values== ; <code class="n">1</code> (required) : The canonical name. ; <code class="n">2</code> (required) : The Wikidata item with the Q at the beginning removed as a number. If there is no Wikidata item, enter <code>nil</code>. ; <code class="n">3</code> (required) : The parent: the full language, etymology-only language, or language family that this etymology-only language is a subvariety of. For instance, <code>"en"</code> (English) is the parent of <code>en-GB</code> (British English), and <code>"gmw"</code> (West Germanic) is the parent of <code>gem-sue</code> (Suevic). ; <code class="n">aliases</code>, <code class="n">varieties</code>, <code class="n">otherNames</code>, <code class="n">wikipedia_article</code> : These have the same meaning as they do in the data modules for the full languages; see [[Module:languages/data/2]], [[Module:languages/data/2/extra]]. ; <code class="n">ancestors</code> : The ancestor of this etymology-only language. Add this only if the etymology-only language is listed as an ancestor of a full language. <includeonly> [[ကဏ္ဍ:မဝ်ဂျူစရၚ်အရေဝ်ဘာသာဂမၠိုၚ်]] </includeonly> 7dltbeqtnsb9qg5pzzu2bvpbl35v1jp မဝ်ဂျူ:labels/data/lang/fr 828 108842 399086 395114 2026-07-17T19:37:24Z 咽頭べさ 33 399086 Scribunto text/plain local labels = {} labels["Acadia"] = { aliases = {"Acadian", "acd"}, Wikipedia = "Acadian French", regional_categories = "Acadian", parent = "Canada", } labels["Africa"] = { aliases = {"African"}, Wikipedia = "African French", regional_categories = "African", parent = true, } labels["Algeria"] = { aliases = {"Algerian"}, Wikipedia = {"French language in Algeria", "African French#Algerian French"}, regional_categories = "Algerian", parent = "Africa", } labels["Alsace"] = { Wikipedia = true, regional_categories = "Alsatian", parent = "France", } labels["Antilles"] = { aliases = {"West Indies", "win"}, region = "the {{w|French Antilles}}", Wikipedia = "French West Indies", regional_categories = true, parent = "Caribbean", } labels["Aosta"] = { region = "the [[Aosta Valley]] in northwestern [[Italy]]", aliases = {"Aostan", "aos"}, Wikipedia = "Aostan French", regional_categories = "Aostan", parent = "Europe", } -- included because we have many audio files from here labels["Aquitaine"] = { Wikipedia = {"Meridional French", true}, regional_categories = "Meridional French", } labels["Asia"] = { aliases = {"Asian"}, Wikipedia = true, regional_categories = "Asian", parent = true, } labels["Atlantic Canada"] = { aliases = {"Atlantic Canadian"}, Wikipedia = "French language in Canada#The Maritimes", regional_categories = "Atlantic Canadian", parent = "Canada", } labels["Belgium"] = { aliases = {"Belgian", "bel"}, Wikipedia = "Belgian French", regional_categories = "Belgian", parent = "Europe", } labels["Benin"] = { Wikipedia = true, regional_categories = "Beninese", parent = "West Africa", } labels["Brétigny-sur-Orge"] = { Wikidata = "Q837748", display = "ဗရဳတဳနဳ-သူရ်-အတ်ဂျဳ", } labels["Cajun"] = { prep = "by", region = "[[Cajun]]s in [[Louisiana]]", aliases = {"Cajun French", "caj"}, Wikipedia = "Cajun French", regional_categories = true, parent = "Louisiana", } labels["Cambodia"] = { aliases = {"Cambodian French", "Cambodian", "cam"}, Wikipedia = "French language in Cambodia", display = "ခေန်ဗဝ်ဒဳယျာ", regional_categories = "ခေန်ဗဝ်ဒဳယျာ", parent = "Asia", } labels["Canada"] = { aliases = {"Canadian"}, Wikipedia = "en:Canadian French", display = "ခမ်နာဒါ", regional_categories = "ခမ်နာဒါ", parent = "North America", } labels["Caribbean"] = { the = true, Wikipedia = true, regional_categories = true, parent = "North America", } labels["Congo"] = { region = "<country>", aliases = {"Congolese"}, Wikipedia = {"African French#Kinshasa French", "Languages of the Democratic Republic of the Congo#French"}, regional_categories = "Congolese", country = "the [[Democratic Republic of the Congo]],the [[Republic of the Congo]]", parent = "Africa", } labels["Corsica"] = { parent = "France", display = "[[Corsica]]" } -- Currently categorizes the same as "Congo" and "Republic of the Congo". labels["Democratic Republic of the Congo"] = { aliases = {"Democratic Republic of Congo", "DR Congo", "Congo-Kinshasa"}, Wikipedia = {"African French#Kinshasa French", "Languages of the Democratic Republic of the Congo#French"}, regional_categories = "Congolese", } labels["double verlan"] = { def = "a double application of verlan, a kind of backslang reordering syllables in a word", noreg = true, alises = {"double Verlan", "veul"}, Wikipedia = "Verlan#Double verlan", plain_categories = true, parent = "Verlan", } labels["Europe"] = { aliases = {"European", "European French"}, Wikipedia = "European French", regional_categories = "European", parent = true, } labels["France"] = { aliases = {"French"}, Wikipedia = "en:French of France", display = "ဍုၚ်ရးပြၚ်သေတ်", regional_categories = "ဍုၚ်ရးပြၚ်သေတ်", -- FIXME, rename to "France French", parent = "Europe", } labels["French Guiana"] = { aliases = {"Guianese", "gui", "French Guyana"}, Wikipedia = true, regional_categories = "Guianese", parent = "Caribbean", } labels["Frenchville"] = { Wikipedia = "Frenchville French", regional_categories = true, parent = "US", } labels["Grenoble"] = { Wikidata = "Q1289", } labels["Guadeloupe"] = { Wikipedia = true, regional_categories = true, parent = "Antilles", } labels["Haiti"] = { Wikipedia = true, regional_categories = "Haitian", parent = "Caribbean", } labels["Hérault"] = { Wikidata = "Q12545", } labels["Île-de-France"] = { aliases = {"Île-de-France French"}, Wikipedia = true, regional_categories = true, parent = "France", } labels["India"] = { aliases = {"Indian", "Indian French", "ind"}, Wikipedia = "Indian French", display = "ဍုၚ်အိန္ဒိယ", regional_categories = "ဍုၚ်အိန္ဒိယ", parent = "Asia", } labels["Ivory Coast slang"] = { aliases = {"nouchi", "Nouchi", "noussi", "Noussi", "Ivory Coast French slang", "Côte d’Ivoire slang", "Côte d'Ivoire slang", "Cote d’Ivoire slang", "Cote d'Ivoire slang", "Ivorian slang"}, Wikipedia = "fr:Nouchi", regional_categories = "Ivorian", } labels["Ivory Coast"] = { the = true, aliases = {"Ivory Coast French", "Côte d’Ivoire", "Côte d'Ivoire", "Cote d’Ivoire", "Cote d'Ivoire", "Ivorian"}, Wikipedia = "African French#Abidjan French", regional_categories = "Ivorian", parent = "West Africa", } labels["Jersey Legal"] = { def = "a form of written [[French]] used in some [[law]]s, [[contract]]s and other documents in [[Jersey]]", aliases = {"Jersey Legal French", "jer"}, Wikipedia = "Jersey Legal French", regional_categories = true, parent = "Europe", } labels["Laos"] = { aliases = {"Lao", "Lao French", "Laotian", "Laotian French", "lao"}, Wikipedia = "en:French language in Laos", display = "ရးဍုၚ်လဴ", regional_categories = "ရးဍုၚ်လဴ", parent = "Asia", } labels["Lorraine"] = { Wikipedia = true, regional_categories = true, parent = "France", } labels["Louisiana"] = { aliases = {"Louisiana French", "LA French", "New Orleans", "lou"}, Wikipedia = "Louisiana French", regional_categories = true, parent = "US", } labels["Luxembourg"] = { aliases = {"Luxembourgish", "Luxemburg", "Luxemburgish"}, Wikipedia = true, regional_categories = "Luxembourgish", parent = "Europe", } labels["Lyon"] = { Wikipedia = "en:Lyon", display = "လဳယောန်", regional_categories = "လဳယောန်", parent = "France", } labels["Mali"] = { aliases = {"Malian"}, Wikipedia = "Malians in France", regional_categories = "Malian", parent = "West Africa", } labels["Marseille"] = { Wikipedia = true, regional_categories = true, parent = "France", } labels["Martinique"] = { Wikipedia = true, regional_categories = true, parent = "Antilles", } labels["Massy"] = { Wikidata = "Q274249", } labels["Meridional"] = { region = "{{w|Southern France}}, especially [[Marseille]], [[Avignon]] and [[Toulouse]]", aliases = {"mer", "Occitanie", "Occitania", "Midi", "Southern France"}, Wikipedia = "Meridional French", regional_categories = true, parent = "France", } labels["Métis"] = { prep = "by", region = "the {{w|Métis#Métis people in Canada|Métis people}} in [[Canada]]", aliases = {"Metis"}, Wikipedia = "Métis French", regional_categories = true, parent = "Canada", } labels["Missouri"] = { aliases = {"Missouri French", "Missourian French", "MO French", "Missourian", "St Louis, Missouri", "St. Louis, Missouri", "mis"}, Wikipedia = "Missouri French", regional_categories = true, parent = "US", } labels["Montreal"] = { aliases = {"Montréal"}, Wikipedia = true, regional_categories = true, parent = "Canada", } labels["Morocco"] = { aliases = {"Moroccan"}, Wikipedia = "French language in Morocco", regional_categories = "Moroccan", parent = "Africa", } labels["Muskrat"] = { prep = "by", region = "the {{w|Muskrat French}} people in southeastern [[Michigan]], northern [[Ohio]] along the shores of [[Lake Erie]], and southwestern [[Ontario]]", Wikipedia = "Muskrat French", regional_categories = true, parent = "US", } labels["Nancy"] = { Wikipedia = "Nancy, France", regional_categories = true, parent = "France", } labels["New Brunswick"] = { Wikipedia = {"French language in Canada#The Maritimes", "Brayon"}, regional_categories = true, parent = "Atlantic Canada", } labels["New Caledonia"] = { aliases = {"New Caledonian", "cal"}, Wikipedia = "Caldoche", regional_categories = "New Caledonian", parent = true, } labels["New England"] = { aliases = {"nwe"}, Wikipedia = "New England French", regional_categories = true, parent = "US", } labels["Newfoundland"] = { aliases = {"nfl"}, Wikipedia = "Newfoundland French", regional_categories = true, parent = "Atlantic Canada", } labels["Normandy"] = { Wikipedia = true, regional_categories = true, parent = "France", } labels["North America"] = { aliases = {"North American"}, Wikipedia = "American French", regional_categories = "North American", parent = true, } labels["Northern"] = { region = "Nord-Pas-de-Calais", aliases = {"northern"}, Wikipedia = "Nord-Pas-de-Calais", regional_categories = true, parent = "France", } labels["Nova Scotia"] = { aliases = {"Nova Scotian"}, Wikipedia = "French language in Canada#The Maritimes", regional_categories = true, parent = "Atlantic Canada", } labels["Ontario"] = { Wikipedia = "Ontario French", regional_categories = true, parent = "Canada", } labels["Paris"] = { aliases = {"Parisian"}, Wikipedia = "en:Parisian French", display = "ပါရဳ", regional_categories = "ဍုၚ်ပါရဳ", parent = "Île-de-France", } labels["Picardy"] = { aliases = {"Picard"}, Wikipedia = true, regional_categories = "Picard", parent = "France", } labels["Prince Edward Island"] = { Wikipedia = "French language in Canada#The Maritimes", regional_categories = true, parent = "Atlantic Canada", } --don't add Provençal as an alias labels["Provence"] = { Wikipedia = true, regional_categories = true, parent = "France", } labels["Quebec"] = { aliases = {"Québec", "que"}, Wikipedia = "Quebec French", regional_categories = true, parent = "Canada", } -- Currently categorizes the same as "Congo" and "Democratic Republic of the Congo". labels["Republic of the Congo"] = { aliases = {"Republic of Congo", "Congo Republic", "Congo-Brazzaville"}, Wikipedia = {"African French#Kinshasa French", "Languages of the Republic of the Congo"}, regional_categories = "Congolese", } labels["Réunion"] = { prep = "on", Wikipedia = true, regional_categories = true, parent = "Africa", } labels["Rwanda"] = { aliases = {"Rwandan"}, Wikipedia = true, regional_categories = "Rwandan", parent = "Africa", } labels["Saint-Barthélemy"] = { aliases = {"St. Barts"}, Wikipedia = "Saint-Barthélemy French", regional_categories = true, parent = "Antilles", } labels["Saint-Étienne"] = { Wikidata = "Q42716", } labels["Saint-Maurice-de-Beynost"] = { Wikidata = "Q11981", display = "သိန်-မဝ်ရေတ်-ဒဳ-ဗိန်နောတ်သ်", } labels["Shawinigan"] = { Wikidata = "Q141980", display = "ဍုၚ်သျှဝနဳဂါန်", } labels["Somain"] = { Wikidata = "Q626382", display = "သဝ်မေန်", } labels["Switzerland"] = { aliases = {"Swiss", "Swiss French", "swi"}, Wikipedia = "en:Swiss French", display = "သွေတ်ဇြာလာန်", regional_categories = "သွေတ်", parent = "Europe", } labels["T-V"] = { display = "T–V distinction", Wikipedia = "T–V distinction", } -- included because we have many audio files from here labels["Toulouse"] = { Wikipedia = {"en:Meridional French", true}, display = "တူလေုတ်", regional_categories = "မဳရဳဒဳနောန်", } labels["Tunisia"] = { aliases = {"Tunisian"}, Wikipedia = "Languages of Tunisia#French", regional_categories = "Tunisian", parent = "Africa", } labels["US"] = { region = "the [[United States]]", aliases = {"U.S.", "American"}, Wikipedia = "en:United States", display = "အမေရိကာန်", regional_categories = "အမေရိကာန်", parent = "North America", } labels["Valais"] = { Wikipedia = "en:Valais", display = "ဝလေဝ်သ်", } labels["Verlan"] = { def = "a type of backslang used in [[French]], in which the order of the syllables of words is changed, usually with the last syllable coming first", noreg = true, aliases = {"verlan"}, Wikipedia = true, plain_categories = true, parent = true, othercat = "French back slang", } labels["Vietnam"] = { aliases = {"Vietnamese", "vie"}, Wikipedia = "French language in Vietnam", regional_categories = "Vietnamese", parent = "Asia", } -- included because we have many audio files from here labels["Vosges"] = { Wikipedia = "en:Vosges", display = "ဗောတ်စ်ဂျေတ်စ်", regional_categories = "ဠောရိန်", } labels["West Africa"] = { aliases = {"West African"}, Wikipedia = true, regional_categories = "West African", parent = "Africa", } labels["post-1990"] = { aliases = {"post-1990 spelling"}, display = "[[:en:Appendix:French spelling reforms of 1990|ခ္ဍံက်လိက်ကဆံၚ်သၞာံ ၁၉၉၀]]", } labels["pre-1990"] = { aliases = {"pre-1990 spelling"}, display = "[[:en:Appendix:French spelling reforms of 1990|ခ္ဍံက်လိက်ကၠာနူသၞာံ ၁၉၉၀]]", } return require("Module:labels").finalize_data(labels) 2h1nbv9alkn10b8nigkhxorxj0uzbaq မဝ်ဂျူ:fo-noun/table 828 220797 399108 301661 2026-07-18T02:07:36Z 咽頭べさ 33 399108 Scribunto text/plain local m_links = require("Module:links") local m_utils = require("Module:utilities") local lang = require("Module:languages").getByCode("fo") local export = {} local function make_headers(data, wikicode) if data.defective ~= "p" then table.insert(wikicode, '! class="outer" colspan=') table.insert(wikicode, data.defective:find("def") and "1" or "2") table.insert(wikicode, " | ကိုန်ဨကဝုစ်\n") end if not data.defective:find("s") then table.insert(wikicode, '! class="outer" colspan=2 | ကိုန်ဗဟုဝစ်\n') end table.insert(wikicode, '|-\n') --Singular if data.defective ~= "s_def" and data.defective ~= "p" then table.insert(wikicode, '! ဟွံချိုတ်ပၠိုတ်\n') end if data.defective ~= "s_indef" and data.defective ~= "p" then table.insert(wikicode, '! ချိုတ်ပၠိုတ်\n') end --Plural if not data.defective:find("s") then table.insert(wikicode, '! ဟွံချိုတ်ပၠိုတ်\n! ချိုတ်ပၠိုတ်\n') end end local function show_form(form, tag) if not form then return "&mdash;" end local ret = {} for key, subform in ipairs(form) do table.insert(ret, m_links.full_link({lang = lang, term = subform, accel = {form = tag}})) end return table.concat(ret, ", ") end local function make_case(data, wikicode, case) local case_short = case:sub(1, 3) table.insert(wikicode, '|- \n') table.insert(wikicode, [=[! [[]=] .. case .. [=[ case|]=] .. case .. "]]\n") if data.defective ~= "s_def" and data.defective ~= "p" then table.insert(wikicode, [[| ]] .. show_form(data.forms[case_short .. "_sg"], case_short .. '|s|indef') .. "\n") end if data.defective ~= "s_indef" and data.defective ~= "p" then table.insert(wikicode, [[| ]] .. show_form(data.forms[case_short .. "_sg_def"], case_short .. '|s|def') .. "\n") end if not data.defective:find("s") then table.insert(wikicode, [[| ]] .. show_form(data.forms[case_short .. "_pl"], case_short .. '|p|indef') .. "\n") table.insert(wikicode, [[| ]] .. show_form(data.forms[case_short .. "_pl_def"], case_short .. '|p|def') .. "\n") end end function export.make_table(data) local colspan = {s_indef = "2", s_def = "2", s = "3", p = "3", no = "5"} local wikicode = { mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-top', args = { title = '-', palette = 'magenta' } } } table.insert(wikicode, '! rowspan="2" style="font-weight:normal" | ' .. data.decl_type .. "\n") make_headers(data, wikicode) make_case(data, wikicode, "မဒုၚ်ယၟု") make_case(data, wikicode, "ကမ္မကာရက") make_case(data, wikicode, " ပြကမ္မကာရက") make_case(data, wikicode, "ဗဳဇဂကူ") table.insert(wikicode, mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }) return table.concat(wikicode) end return export 4zkq6zuw5g9v3xqc6q3sarhfdz0qh5x κρεβάτι 0 296815 399020 2026-07-17T13:04:30Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ဂရေတ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|el|κρεββάτι}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|el|gkm|κρεβάτιον|κρεβάτι(ο)ν}}၊ နကဵုအဆက်နူ {{inh|el|grc-koi|κραββάτιον|κραβ(β)άτιον}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|el|grc|κράββατος}} ===ဗွဟ်ရမ္..." 399020 wikitext text/x-wiki ==ဂရေတ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|el|κρεββάτι}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|el|gkm|κρεβάτιον|κρεβάτι(ο)ν}}၊ နကဵုအဆက်နူ {{inh|el|grc-koi|κραββάτιον|κραβ(β)άτιον}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|el|grc|κράββατος}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|el|[kɾɛˈvati]}} ===နာမ်=== {{el-noun|n|κρεβάτια}} # ဖုန်။ ====လဟုတ်စှ်ေ==== {{el-nN-ι-ια-2b|κρεβάτ|κρεβατ}} ===ဝေါဟာတၟုပ်=== * {{l|el|κλίνη|g=f}} * {{l|el|κοίτη|g=f}} * {{l|el|ευνή|g=f}} {{q|archaic}} ===မဒုၚ်လွဳစ=== * {{desc|sq|krevat|bor=1}} * {{desc|rup|crivati|bor=1}} * {{desc|sh|krevet|bor=1}} * {{desc|ro|crivat|bor=1}} * {{desc|ota|كروت|tr=kerevet|bor=1}} * {{desc|ru|кровать|bor=1}} gkt5bi5x1qm4q1iwg11t3ibgikddjzv မဝ်ဂျူ:scripts/charToScript/documentation 828 296816 399028 2026-07-17T13:33:43Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "Implements <tt>charToScript</tt> and <tt>findBestScriptWithoutLang</tt>. See [[Module:scripts]] for documentation." 399028 wikitext text/x-wiki Implements <tt>charToScript</tt> and <tt>findBestScriptWithoutLang</tt>. See [[Module:scripts]] for documentation. 3ggbeawkfexsct495wx55qqiceg4gwi 399029 399028 2026-07-17T13:34:06Z 咽頭べさ 33 咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[မဝ်ဂျူ:scripts/charToScript/doc]] ဇရေင် [[မဝ်ဂျူ:scripts/charToScript/documentation]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင် 399028 wikitext text/x-wiki Implements <tt>charToScript</tt> and <tt>findBestScriptWithoutLang</tt>. See [[Module:scripts]] for documentation. 3ggbeawkfexsct495wx55qqiceg4gwi မဳဒဳယာဝဳကဳ:Gadget-RevdelInfo.js 8 296817 399031 2026-07-17T13:59:01Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "// {{documentation}} /*jshint undef:true */ /*global mw, jQuery */ (function(){ var api = new mw.Api(); function el(tag, child, attr, events) { var node = document.createElement(tag); if (child) { if (typeof child !== 'object') child = [child]; for (var i = 0; i < child.length; ++i) { var ch = child[i]; if ((ch === void(null)) || (ch === null)) continue; else if (typeof ch !== 'object') c..." 399031 javascript text/javascript // {{documentation}} /*jshint undef:true */ /*global mw, jQuery */ (function(){ var api = new mw.Api(); function el(tag, child, attr, events) { var node = document.createElement(tag); if (child) { if (typeof child !== 'object') child = [child]; for (var i = 0; i < child.length; ++i) { var ch = child[i]; if ((ch === void(null)) || (ch === null)) continue; else if (typeof ch !== 'object') ch = document.createTextNode(String(ch)); node.appendChild(ch); } } if (attr) for (var key in attr) { node.setAttribute(key, String(attr[key])); } if (events) for (var key in events) { node.addEventListener(key, events[key], false); } return node; } function fmtDate(date) { // XXX: uses browser's time zone instead of preferences date = new Date(date); switch (mw.user.options.get('date')) { case 'dmy' : return date.toLocaleTimeString() + ', ' + date.getDate() + ' ' + mw.language.months.genitive[date.getMonth()] + ' ' + date.getFullYear(); case 'mdy' : return date.toLocaleTimeString() + ', ' + mw.language.months.genitive[date.getMonth()] + ' ' + date.getFullYear() + ', ' + date.getDate(); case 'ymd' : return date.toLocaleTimeString() + ', ' + date.getFullYear() + ' ' + mw.language.months.genitive[date.getMonth()] + ' ' + date.getDate(); case 'default' : return date.toLocaleString(); case 'ISO 8601': return date.toISOString(); } } function makeBox(rev1, rev2) { var query = { 'action': 'query', 'list': 'logevents', 'leaction': 'delete/revision', 'letitle': mw.config.get('wgPageName'), 'continue': '' }; var list, node = el('div', [ el('p', 'Details from the deletion log:'), list = el('ul') ], { 'class': 'mw-warning-with-logexcerpt', 'style': 'display: none;' }); function processResult(result) { var events = result.query.logevents; for (var i = 0; i < events.length; ++i) { if ((events[i][1] === rev1) || (events[i][1] === rev2)) { var item = events[i]; // XXX: item[2] and item[3] contain flags... might as well show these too // XXX: change link to plaintext based on whether the user has the 'deleterevision' right list.appendChild(el('li', [ fmtDate(item.timestamp), ": ", el('a', item.user, { href: mw.util.getUrl('ညးလွပ်:' + item.user) }), " changed visibility of ", el('a', ["revision ", item[1]], { href: mw.util.getUrl(mw.config.get('wgPageName'), { oldid: item[1], unhide: '1' }) }), item.comment && " (", item.comment, item.comment && ")" ])); node.style.display = ''; } } if (result['continue']) { for (var key in result['continue']) query[key] = result['continue'][key]; api.get(query).then(processResult); } } api.get(query).then(processResult); return node; } if (mw.config.get('wgAction') !== 'view') return; if (!(mw.util.getParamValue('diff') || mw.util.getParamValue('oldid'))) return; if (document.getElementById('mw-rev-deleted-no-diff') || document.getElementById('mw-rev-deleted-unhide-diff')) { var rev1, rev2; var ot = document.getElementById('mw-diff-otitle1'); var nt = document.getElementById('mw-diff-ntitle1'); if (ot) { ot = new URL(ot.getElementsByTagName('a')[0].href); rev1 = ot.searchParams.get("oldid"); } if (nt) { nt = new URL(nt.getElementsByTagName('a')[0].href); rev2 = nt.searchParams.get("oldid"); } document.getElementById('mw-content-text').appendChild(makeBox(rev1, rev2)); } else if (document.getElementById('mw-content-text').firstChild.classList.contains('mw-warning')) { // ugly, ugly hack var rev = mw.util.getParamValue('oldid'); document.getElementById('mw-content-text').appendChild(makeBox(rev, null)); } })(); co4br94nrtk8qncz4dxp4q103jrum7e မဳဒဳယာဝဳကဳ:Gadget-RevdelInfo.js/documentation 8 296818 399032 2026-07-17T14:00:36Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly>" 399032 wikitext text/x-wiki {{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly> nh2z4mxstdhoy5k1d14op93dv5v8194 မဳဒဳယာဝဳကဳ:Gadget-CodeLinks.js 8 296819 399033 2026-07-17T14:10:27Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "/*jshint undef:true, latedef:true */ /*global mw, jQuery */ jQuery(function CodeLinksIIFE() { 'use strict'; // by John Gruber, from https://daringfireball.net/2010/07/improved_regex_for_matching_urls var URLRegExp = /\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i; functio..." 399033 javascript text/javascript /*jshint undef:true, latedef:true */ /*global mw, jQuery */ jQuery(function CodeLinksIIFE() { 'use strict'; // by John Gruber, from https://daringfireball.net/2010/07/improved_regex_for_matching_urls var URLRegExp = /\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i; function processComment(node) { var wikilinkMatch, templateMatch, URLMatch, textNode = node.firstChild; // always a text node. while ( (wikilinkMatch = /\[\[([^|{}\[\]\n]+)?(?:\|.*?)?]]/.exec(textNode.data)) || (templateMatch = /(\{\{(?:#invoke:)?)([^|{}\[\]\n#]+)(?=\||}})/i.exec(textNode.data)) || (URLMatch = URLRegExp.exec(textNode.data)) ) { var link = document.createElement('a'), start = (wikilinkMatch || templateMatch || URLMatch).index, linkText; link.classList.add("code-link"); if (URLMatch) { var URL = URLMatch[0]; link.href = URL; linkText = URL; } else { var fullPageName; if (wikilinkMatch) { linkText = wikilinkMatch[0]; fullPageName = wikilinkMatch[1]; } else if (templateMatch) { var prefix = templateMatch[1], pageName = templateMatch[2]; linkText = pageName; fullPageName = (prefix === '{{#invoke:' ? 'မဝ်ဂျူ:' : 'ထာမ်ပလိက်:') + pageName; link.title = fullPageName; start += prefix.length; } link.href = mw.util.getUrl(fullPageName); } var beforeLink = textNode.data.substring(0, start), afterLink = textNode.data.substring(start + linkText.length); textNode.data = afterLink; link.appendChild(document.createTextNode(linkText)); node.insertBefore(link, textNode); node.insertBefore(document.createTextNode(beforeLink), link); // ensure all matches are null at beginning of loop body; is this necessary? wikilinkMatch = templateMatch = URLMatch = null; } } function each(coll, walk) { return Array.prototype.forEach.call(coll, walk); } var commentClasses = [ 'c', 'c1', 'cm' ]; each(document.getElementsByClassName('mw-highlight'), function (codeBlock) { each(commentClasses, function (commentClass) { each(codeBlock.getElementsByClassName(commentClass), processComment); }); }); // Link module names after `require` and `mw.loadData`, and tracking page // names after `require("Module:debug").track`. var copyArray = Array.from ? Array.from.bind(Array) : function copyArray(array) { return Array.prototype.slice.call(array); }; var classes = { identifier: "n", functionName: "nb", singleQuoteString: "s1", doubleQuoteString: "s2", }; var trackingPageElements = [], moduleNames = [], dataModuleNames = []; var functionNames = document.getElementsByClassName(classes.functionName); Array.prototype.forEach.call(functionNames, function (functionName) { var text = functionName.firstChild.nodeValue; if (text !== "require") return; var next = functionName.nextElementSibling; var nextText = next && next.firstChild && next.firstChild.nodeValue; var hasParenthesis = nextText === "("; if (hasParenthesis) { next = next.nextElementSibling; nextText = next && next.firstChild && next.firstChild.nodeValue; } var classList = next.classList; if (!(classList.contains(classes.singleQuoteString) || classList.contains(classes.doubleQuoteString))) return; var string = next; var stringValue = nextText; if (!stringValue) return; next = next.nextElementSibling; nextText = next && next.firstChild && next.firstChild.nodeValue; if (hasParenthesis && nextText && nextText[0] !== ")") return; moduleNames.push(string); // FIXME!!! Tracking code has been moved to [[Module:debug/track]]. The following needs updating // to handle calls of the form require("Module:debug/track")("foo"). if (hasParenthesis ? nextText === ")." : nextText === "." && (/^["']mod(?:ule)?:(.+)["']$/i.exec(stringValue) || [])[1] === "debug") { next = next.nextElementSibling; nextText = next && next.firstChild && next.firstChild.nodeValue; if (nextText !== "track") return; next = next.nextElementSibling; if (!next) return; nextText = next && next.firstChild && next.firstChild.nodeValue; var trackWithParenthesis = false; if (nextText === "(") { next = next.nextElementSibling; trackWithParenthesis = true; } classList = next.classList; if (!(classList.contains(classes.singleQuoteString) || classList.contains(classes.doubleQuoteString))) return; nextText = next && next.firstChild && next.firstChild.nodeValue; if (!nextText) return; // If there was a parenthesis on one side – `track("...")` rather than // `track "..."` – make sure there's a matching parenthesis on the other side. if (trackWithParenthesis) { var after = next.nextElementSibling; var afterText = after && after.firstChild && after.firstChild.nodeValue; if (afterText !== ")") return; } trackingPageElements.push(next); } }); var strings = copyArray(document.getElementsByClassName(classes.singleQuoteString)) .concat(copyArray(document.getElementsByClassName(classes.doubleQuoteString))); Array.prototype.forEach.call(strings, function (string) { if (moduleNames.indexOf(string) !== -1 || trackingPageElements.indexOf(string) !== -1) return; var stringValue = string.firstChild.nodeValue; if (!/^["'](?:module|mod):/i.test(stringValue)) return; var prev = string.previousElementSibling; var prevText = prev && prev.firstChild && prev.firstChild.nodeValue; if (prevText === "(") { var next = string.nextElementSibling; var nextText = next && next.firstChild && next.firstChild.nodeValue; if (!(nextText && nextText[0] === ")")) return; prev = prev.previousElementSibling; prevText = prev && prev.firstChild && prev.firstChild.nodeValue; } if (prevText !== "loadData") return; prev = prev.previousElementSibling; prevText = prev && prev.firstChild && prev.firstChild.nodeValue; if (prevText !== ".") return; prev = prev.previousElementSibling; prevText = prev && prev.firstChild && prev.firstChild.nodeValue; if (prevText !== "mw") return; dataModuleNames.push(string); }); if (moduleNames.length > 0 || trackingPageElements.length > 0 || dataModuleNames.length > 0) { mw.loader.using("mediawiki.util").done(function () { function addLink(element, page) { if (!(element instanceof Element)) throw new TypeError("Expected Element object"); var link = document.createElement("a"); link.href = mw.util.getUrl(page); // put text node from element inside link var firstChild = element.firstChild; if (!(firstChild instanceof Text)) throw new TypeError("Expected Text object"); link.appendChild(firstChild); element.appendChild(link); // put link inside syntax-highlighted string } // Link module names to module pages, or to the section in the Scribunto // manual. moduleNames.concat(dataModuleNames).forEach(function (module) { var link = document.createElement("a"); var stringValue = module.firstChild.nodeValue; var moduleName = stringValue.substring(1, stringValue.length - 1); var linkPage = /^mod(?:ule)?:/i.test(moduleName) ? moduleName : "mw:Extension:Scribunto/Lua reference manual#" + moduleName; addLink(module, linkPage); }); // Link tracking pages to [[Special:WhatLinksHere]]. trackingPageElements.forEach(function (trackingPage) { var text = trackingPage.firstChild && trackingPage.firstChild.nodeValue; if (!text) return; var trackingCode = text.substring(1, text.length - 1); addLink(trackingPage, "Special:WhatLinksHere/Wiktionary:Tracking/" + trackingCode); }); }); } }); kk2zm78yge8mhuosdpjazje6aufzcye မဳဒဳယာဝဳကဳ:Gadget-CodeLinks.js/documentation 8 296820 399034 2026-07-17T14:12:10Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This gadget adds links to wikilink and template syntax, URLs, module names after <code>require</code> and <code>mw.loadData</code>{{,}} and tracking template names in comments in code formatted with [[mw:Extension:SyntaxHighlight|Extension:SyntaxHighlight]], for example in modules and in CSS and JavaScript pages. Wikilinks are linked to the Wiktionary page, and URLs are linked to the URL, of..." 399034 wikitext text/x-wiki {{documentation subpage}} This gadget adds links to wikilink and template syntax, URLs, module names after <code>require</code> and <code>mw.loadData</code>{{,}} and tracking template names in comments in code formatted with [[mw:Extension:SyntaxHighlight|Extension:SyntaxHighlight]], for example in modules and in CSS and JavaScript pages. Wikilinks are linked to the Wiktionary page, and URLs are linked to the URL, of course. Nothing special is done for interwiki links. Module invocations ({{temp|#invoke:}}) are linked to the module page. Templates are linked to the template page. Both module invocations and templates receive a tooltip showing the page that they link to, because it is different from the link text. Names of tracking templates are linked to [[Special:WhatLinksHere]] so that users can quickly find the list of the pages that transclude them. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်|CodeLinks]] </includeonly> cunxz4xeldfjb5szvryzq74xq2ru5tz မဳဒဳယာဝဳကဳ:Gadget-CommentsInLocalTime.js 8 296821 399035 2026-07-17T14:17:50Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "// {{documentation}} // _________________________________________________________________________________________ // | | // | === WARNING: GLOBAL GADGET FILE === | // | Changes to this page affect many users. | // | Please discuss c..." 399035 javascript text/javascript // {{documentation}} // _________________________________________________________________________________________ // | | // | === WARNING: GLOBAL GADGET FILE === | // | Changes to this page affect many users. | // | Please discuss changes on the [[Wiktionary:Grease Pit]] before editing. | // |_________________________________________________________________________________________| // // // The content below are copied from https://en.wikipedia.org/w/index.php?title=User:Gary/comments_in_local_time.js&oldid=1103519446 // See [[w:User:Gary/comments_in_local_time.js]], [[w:Wikipedia:Comments in Local Time]] // ********************************************************************************************************************************* /** * COMMENTS IN LOCAL TIME * * Description: * Changes [[Coordinated Universal Time|UTC]]-based times and dates, * such as those used in signatures, to be relative to local time. * * Documentation: * [[Wikipedia:Comments in Local Time]] */ $(() => { /** * Given a number, add a leading zero if necessary, so that the final number * has two characters. * * @param {number} number Number * @returns {string} The number with a leading zero, if necessary. */ function addLeadingZero(number) { const numberArg = number; if (numberArg < 10) { return `0${numberArg}`; } return numberArg; } function convertMonthToNumber(month) { return new Date(`${month} 1, 2001`).getMonth(); } function getDates(time) { const [, oldHour, oldMinute, oldDay, oldMonth, oldYear] = time; // Today const today = new Date(); // Yesterday const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1); // Tomorrow const tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1); // Set the date entered. const newTime = new Date(); newTime.setUTCFullYear(oldYear, convertMonthToNumber(oldMonth), oldDay); newTime.setUTCHours(oldHour); newTime.setUTCMinutes(oldMinute); return { time: newTime, today, tomorrow, yesterday }; } /** * Determine whether to use the singular or plural word, and use that. * * @param {string} term Original term * @param {number} count Count of items * @param {string} plural Pluralized term * @returns {string} The word to use */ function pluralize(term, count, plural = null) { let pluralArg = plural; // No unique pluralized word is found, so just use a general one. if (!pluralArg) { pluralArg = `${term}s`; } // There's only one item, so just use the singular word. if (count === 1) { return term; } // There are multiple items, so use the plural word. return pluralArg; } class CommentsInLocalTime { constructor() { this.language = ''; this.LocalComments = {}; /** * Settings */ this.settings(); this.language = this.setDefaultSetting( 'language', this.LocalComments.language ); // These values are also reflected in the documentation: // https://en.wikipedia.org/wiki/Wikipedia:Comments_in_Local_Time#Default_settings this.setDefaultSetting({ dateDifference: true, dateFormat: 'dmy', dayOfWeek: true, dropDays: 0, dropMonths: 0, timeFirst: true, twentyFourHours: false, }); } adjustTime(originalTimestamp, search) { const { time, today, tomorrow, yesterday } = getDates( originalTimestamp.match(search) ); // A string matching the date pattern was found, but it cannot be // converted to a Date object. Return it with no changes made. if (Number.isNaN(time)) { return [originalTimestamp, '']; } const date = this.determineDateText({ time, today, tomorrow, yesterday, }); const { ampm, hour } = this.getHour(time); const minute = addLeadingZero(time.getMinutes()); const finalTime = `${hour}:${minute}${ampm}`; // Determine the time offset. const utcValue = (-1 * time.getTimezoneOffset()) / 60; const utcOffset = utcValue >= 0 ? `+${utcValue}` : `−${Math.abs(utcValue.toFixed(1))}`; const utcPart = `(UTC${utcOffset})`; const returnDate = this.LocalComments.timeFirst ? `${finalTime}, ${date} ${utcPart}` : `${date}, ${finalTime} ${utcPart}`; return returnDate; } convertNumberToMonth(number) { return [ this.language.January, this.language.February, this.language.March, this.language.April, this.language.May, this.language.June, this.language.July, this.language.August, this.language.September, this.language.October, this.language.November, this.language.December, ][number]; } createDateText({ day, month, time, today, year }) { // Calculate day of week const dayNames = [ this.language.Sunday, this.language.Monday, this.language.Tuesday, this.language.Wednesday, this.language.Thursday, this.language.Friday, this.language.Saturday, ]; const dayOfTheWeek = dayNames[time.getDay()]; let descriptiveDifference = ''; let last = ''; // Create a relative descriptive difference if (this.LocalComments.dateDifference) { ({ descriptiveDifference, last } = this.createRelativeDate( today, time )); } const monthName = this.convertNumberToMonth(time.getMonth()); // Format the date according to user preferences let formattedDate = ''; switch (this.LocalComments.dateFormat.toLowerCase()) { case 'dmy': formattedDate = `${day} ${monthName} ${year}`; break; case 'mdy': formattedDate = `${monthName} ${day}, ${year}`; break; default: formattedDate = `${year}-${month}-${addLeadingZero(day)}`; } const formattedDayOfTheWeek = this.LocalComments.dayOfWeek ? `, ${last}${dayOfTheWeek}` : ''; return `${formattedDate}${formattedDayOfTheWeek}${descriptiveDifference}`; } /** * Create relative date data. * * @param {Date} today Today * @param {Date} time The timestamp from a comment * @returns {Object.<string, *>} Relative date data */ createRelativeDate(today, time) { /** * The time difference from today, in milliseconds. * * @type {number} */ const millisecondsAgo = today.getTime() - time.getTime(); /** * The number of days ago, that we will display. It's not necessarily the * total days ago. * * @type {number} */ let daysAgo = Math.abs(Math.round(millisecondsAgo / 1000 / 60 / 60 / 24)); const { differenceWord, last } = this.relativeText({ daysAgo, millisecondsAgo, }); // This method of computing the years and months is not exact. However, // it's better than the previous method that used 1 January + delta days. // That was usually quite off because it mapped the second delta month to // February, which has only 28 days. This method is usually not more than // one day off, except perhaps over very distant dates. /** * The number of months ago, that we will display. It's not necessarily * the total months ago. * * @type {number} */ let monthsAgo = Math.floor((daysAgo / 365) * 12); /** * The total amount of time ago, in months. * * @type {number} */ const totalMonthsAgo = monthsAgo; /** * The number of years ago that we will display. It's not necessarily the * total years ago. * * @type {number} */ let yearsAgo = Math.floor(totalMonthsAgo / 12); if (totalMonthsAgo < this.LocalComments.dropMonths) { yearsAgo = 0; } else if (this.LocalComments.dropMonths > 0) { monthsAgo = 0; } else { monthsAgo -= yearsAgo * 12; } if (daysAgo < this.LocalComments.dropDays) { monthsAgo = 0; yearsAgo = 0; } else if (this.LocalComments.dropDays > 0 && totalMonthsAgo >= 1) { daysAgo = 0; } else { daysAgo -= Math.floor((totalMonthsAgo * 365) / 12); } const descriptiveParts = []; // There is years text to add. if (yearsAgo > 0) { descriptiveParts.push( `${yearsAgo} ${pluralize( this.language.year, yearsAgo, this.language.years )}` ); } // There is months text to add. if (monthsAgo > 0) { descriptiveParts.push( `${monthsAgo} ${pluralize( this.language.month, monthsAgo, this.language.months )}` ); } // There is days text to add. if (daysAgo > 0) { descriptiveParts.push( `${daysAgo} ${pluralize( this.language.day, daysAgo, this.language.days )}` ); } return { descriptiveDifference: ` (${descriptiveParts.join( ', ' )} ${differenceWord})`, last, }; } determineDateText({ time, today, tomorrow, yesterday }) { // Set the date bits to output. const year = time.getFullYear(); const month = addLeadingZero(time.getMonth() + 1); const day = time.getDate(); // Return 'today' or 'yesterday' if that is the case if ( year === today.getFullYear() && month === addLeadingZero(today.getMonth() + 1) && day === today.getDate() ) { return this.language.Today; } if ( year === yesterday.getFullYear() && month === addLeadingZero(yesterday.getMonth() + 1) && day === yesterday.getDate() ) { return this.language.Yesterday; } if ( year === tomorrow.getFullYear() && month === addLeadingZero(tomorrow.getMonth() + 1) && day === tomorrow.getDate() ) { return this.language.Tomorrow; } return this.createDateText({ day, month, time, today, year }); } getHour(time) { let ampm; let hour = Number.parseInt(time.getHours(), 10); if (this.LocalComments.twentyFourHours) { ampm = ''; hour = addLeadingZero(hour); } else { // Output am or pm depending on the date. ampm = hour <= 11 ? ' am' : ' pm'; if (hour > 12) { hour -= 12; } else if (hour === 0) { hour = 12; } } return { ampm, hour }; } relativeText({ daysAgo, millisecondsAgo }) { let differenceWord = ''; let last = ''; // The date is in the past. if (millisecondsAgo >= 0) { differenceWord = this.language.ago; if (daysAgo <= 7) { last = `${this.language.last} `; } // The date is in the future. } else { differenceWord = this.language['from now']; if (daysAgo <= 7) { last = `${this.language.this} `; } } return { differenceWord, last }; } replaceText(node, search) { if (!node) { return; } // Check if this is a text node. if (node.nodeType === 3) { // Don't continue if this text node's parent tag is one of these. if (['CODE', 'PRE'].includes(node.parentNode.nodeName)) { return; } const value = node.nodeValue; const matches = value.match(search); if (matches) { // Only act on the first timestamp we found in this node. This is for // the rare occassion that there is more than one timestamp in the // same text node. const [match] = matches; const position = value.search(search); const stringLength = match.toString().length; // Grab the text content before and after the matching timestamp, // which we'll then wrap in their own SPAN nodes. const beforeMatch = value.slice(0, position); const afterMatch = value.slice(position + stringLength); const returnDate = this.adjustTime(match.toString(), search); // Create the code to display the new local comments content. const $span = $( `<span class="localcomments" style="font-size: 95%;" title="${match}">${returnDate}</span>` ); // Replace the existing text node in the page with our new local // comments node. $(node).replaceWith($span); // Replace the text content that appears before the timestamp. if (beforeMatch) { $span.before( `<span class="before-localcomments">${beforeMatch}</span>` ); } // Replace the text content that appears after the timestamp. if (afterMatch) { $span.after( `<span class="after-localcomments">${afterMatch}</span>` ); } } } else { const children = []; let child; [child] = node.childNodes; while (child) { children.push(child); child = child.nextSibling; } // Loop through children and run this func on it again, recursively. children.forEach((child2) => { this.replaceText(child2, search); }); } } run() { if ( ['', 'MediaWiki', 'Special'].includes( mw.config.get('wgCanonicalNamespace') ) ) { return; } // Check for disabled URLs. const isDisabledUrl = ['action=history'].some((disabledUrl) => document.location.href.includes(disabledUrl) ); if (isDisabledUrl) { return; } this.replaceText( document.querySelector('.mw-body-content .mw-parser-output'), /(\d{1,2}):(\d{2}), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/ ); } setDefaultSetting(...args) { // There are no arguments. if (args.length === 0) { return false; } // The first arg is an object, so just set that data directly onto the // settings object. like {setting 1: true, setting 2: false} if (typeof args[0] === 'object') { const [settings] = args; // Loop through each setting. Object.keys(settings).forEach((name) => { const value = settings[name]; if (typeof this.LocalComments[name] === 'undefined') { this.LocalComments[name] = value; } }); return settings; } // The first arg is a string, so use the first arg as the settings key, // and the second arg as the value to set it to. const [name, setting] = args; if (typeof this.LocalComments[name] === 'undefined') { this.LocalComments[name] = setting; } return this.LocalComments[name]; } /** * Set the script's settings. * * @returns {undefined} */ settings() { // The user has set custom settings, so use those. if (window.LocalComments) { this.LocalComments = window.LocalComments; } /** * Language * * LOCALIZING THIS SCRIPT * To localize this script, change the terms below, * to the RIGHT of the colons, to the correct term used in that language. * * For example, in the French language, * * 'Today' : 'Today', * * would be * * 'Today' : "Aujourd'hui", */ this.LocalComments.language = { // Relative terms Today: 'Today', Yesterday: 'Yesterday', Tomorrow: 'Tomorrow', last: 'last', this: 'this', // Days of the week Sunday: 'Sunday', Monday: 'Monday', Tuesday: 'Tuesday', Wednesday: 'Wednesday', Thursday: 'Thursday', Friday: 'Friday', Saturday: 'Saturday', // Months of the year January: 'January', February: 'February', March: 'March', April: 'April', May: 'May', June: 'June', July: 'July', August: 'August', September: 'September', October: 'October', November: 'November', December: 'December', // Difference words ago: 'ago', 'from now': 'from now', // Date phrases year: 'year', years: 'years', month: 'month', months: 'months', day: 'day', days: 'days', }; } } // Check if we've already ran this script. if (window.commentsInLocalTimeWasRun) { return; } window.commentsInLocalTimeWasRun = true; const commentsInLocalTime = new CommentsInLocalTime(); commentsInLocalTime.run(); }); 13houlikxdhnop5vg42wvznssty7q8h မဳဒဳယာဝဳကဳ:Gadget-CommentsInLocalTime.js/documentation 8 296822 399036 2026-07-17T14:18:32Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly>" 399036 wikitext text/x-wiki {{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly> nh2z4mxstdhoy5k1d14op93dv5v8194 မဳဒဳယာဝဳကဳ:Gadget-searchFocus.js 8 296823 399037 2026-07-17T14:19:20Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "if (mw.config.get("wgIsMainPage")) document.querySelector(".mw-searchInput").focus();" 399037 javascript text/javascript if (mw.config.get("wgIsMainPage")) document.querySelector(".mw-searchInput").focus(); tevyt1geg33xkr9fk0chzx33hp7t9t5 မဳဒဳယာဝဳကဳ:Gadget-searchFocus.js/documentation 8 296824 399038 2026-07-17T14:20:02Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly>" 399038 wikitext text/x-wiki {{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly> nh2z4mxstdhoy5k1d14op93dv5v8194 မဳဒဳယာဝဳကဳ:Gadget-FastRollback.js 8 296825 399039 2026-07-17T14:21:20Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "// {{documentation}} /*jshint undef:true, latedef:true, undef:true, shadow:true, scripturl:true */ /*global mw, jQuery */ (function () { var api = new mw.Api(); function processLink(link, title, token, user, markbot) { var wrapper = link.parentNode; var bracketed = (wrapper.textContent[0] === '['); link.addEventListener('click', function (ev) { ev.preventDefault(); var summary = prompt('About to rollback..." 399039 javascript text/javascript // {{documentation}} /*jshint undef:true, latedef:true, undef:true, shadow:true, scripturl:true */ /*global mw, jQuery */ (function () { var api = new mw.Api(); function processLink(link, title, token, user, markbot) { var wrapper = link.parentNode; var bracketed = (wrapper.textContent[0] === '['); link.addEventListener('click', function (ev) { ev.preventDefault(); var summary = prompt('About to rollback edits by [[User:' + user + ']] to [[' + title + ']].\n\nEdit summary (empty for default):', 'Reverted edits by [[Special:Contributions/' + user + '|' + user + ']]. If you think this rollback is in error, please leave a message on my [[User talk:' + mw.config.get('wgUserName') + '|talk page]].'); if (summary === null) return; wrapper.textContent = bracketed ? '[wait]' : 'wait'; api.post({ action: 'rollback', title: title, user: user, token: token, markbot: markbot ? '1' : void(0), summary: summary ? summary : void(0) }).then(function (result) { var diffLink = document.createElement('a'); diffLink.href = mw.config.get('wgScript') + '?diff=' + result.rollback.revid + '&diffonly=1'; diffLink.textContent = 'diff'; var reloadLink = document.createElement('a'); reloadLink.href = 'javascript:location.reload();'; reloadLink.textContent = 'reload'; wrapper.textContent = ''; if (bracketed) wrapper.appendChild(document.createTextNode('[')); wrapper.appendChild(document.createTextNode('done: ')); wrapper.appendChild(diffLink); wrapper.appendChild(document.createTextNode(' | ')); wrapper.appendChild(reloadLink); if (bracketed) wrapper.appendChild(document.createTextNode(']')); }, function (code, result, xhr) { link.textContent = 'retry'; var cnode = document.createElement('code'); cnode.style.borderBottom = '1px dotted black'; cnode.style.cursor = 'help'; cnode.textContent = code; switch (code) { case 'http': cnode.title = 'HTTP error: ' + result.textStatus; break; case 'ok-but-empty': cnode.title = 'Received empty response from the server'; break; default: cnode.title = result.error.info; } wrapper.textContent = ''; if (bracketed) wrapper.appendChild(document.createTextNode('[')); wrapper.appendChild(document.createTextNode('error: ')); wrapper.appendChild(cnode); wrapper.appendChild(document.createTextNode(' (')); wrapper.appendChild(link); wrapper.appendChild(document.createTextNode(')')); if (bracketed) wrapper.appendChild(document.createTextNode(']')); console.error(result); }); }, false); } jQuery(document).ready(function() { var rolllinks = document.getElementsByClassName('mw-rollback-link'); for (var i = 0; i < rolllinks.length; ++i) { var links = rolllinks[i].getElementsByTagName('a'); if (links.length !== 1) continue; var link = links[0]; try { var uri = new URL(link.href); if (uri.searchParams.get("action") === 'rollback') processLink(link, uri.searchParams.get("title"), uri.searchParams.get("token"), uri.searchParams.get("from"), uri.searchParams.get("bot") && true); } catch (e) { /* swallow */ } } function makeRestoreLink(oldid, uname) { var link = document.createElement('a'); var span = document.createElement('span'); link.href = mw.config.get('wgScript') + '?action=edit&oldid=' + oldid; function doRestore() { function showError(action, code, result) { var cnode = document.createElement('code'); cnode.textContent = code; switch (code) { case 'http': cnode.title = 'HTTP error: ' + result.textStatus; break; case 'ok-but-empty': cnode.title = 'Received empty response from the server'; break; case 'edit-failure': cnode.textContent = result.edit.code; cnode.title = 'Edit error: ' + result.edit.info; break; default: cnode.title = result.error.info; } var retryLink = document.createElement('a'); retryLink.href = link.href; retryLink.textContent = 'retry'; retryLink.addEventListener('click', function (ev) { ev.preventDefault(); doRestore(); }, false); span.textContent = ''; span.appendChild(document.createTextNode('error: ')); span.appendChild(cnode); span.appendChild(document.createTextNode(' (')); span.appendChild(retryLink); span.appendChild(document.createTextNode(')')); } var summary = prompt('Edit summary for this reversion:', 'Restored [[Special:Permalink/' + oldid + '|revision ' + oldid + ']] by [[User:' + uname + ']]'); if (summary === null) return; span.textContent = 'grabbing oldid'; if (link.parentNode) { link.parentNode.insertBefore(span, link); link.parentNode.removeChild(link); } api.get({ action: 'query', pageids: mw.config.get('wgArticleId'), prop: 'revisions', rvstartid: oldid, rvlimit: 1, rvprop: 'content' }).then(function (result, xhr) { console.info(result); var starttimestamp = (new Date(xhr.getResponseHeader('Date'))).toISOString(); // XXX: acceptable? var content = result.query.pages[mw.config.get('wgArticleId')].revisions[0]['*']; span.textContent = 'grabbing latest revision'; api.get({ action: 'query', pageids: mw.config.get('wgArticleId'), prop: 'revisions', rvlimit: 1, rvprop: 'ids|timestamp' }).then(function (result) { console.info(result); var basetimestamp = result.query.pages[mw.config.get('wgArticleId')].revisions[0].timestamp; if (result.query.pages[mw.config.get('wgArticleId')].revisions[0].revid === Number(oldid)) { span.textContent = 'this is already the latest revision'; return; } span.textContent = 'reverting'; api.post({ action: 'edit', pageid: mw.config.get('wgArticleId'), token: mw.user.tokens.get('csrfToken'), basetimestamp: basetimestamp, starttimestamp: starttimestamp, nocreate: '1', text: content, summary: summary }).then(function (result) { if (result.edit.result === 'Success') { span.textContent = 'done'; } else { showError('saving', 'edit-failure', result); } }, function (code, result) { showError('saving', code, result); }); }, function (code, result) { showError('grabbing latest revision data', code, result); }); }, function (code, result) { showError('grabbing old revision text', code, result); }); } link.addEventListener('click', function (ev) { ev.preventDefault(); doRestore(); }, false); return link; } // are we viewing an old revision? var revnav = document.getElementById('mw-revision-nav'); if (revnav) { var uname = document.getElementById('mw-revision-info').getElementsByClassName('mw-userlink')[0].textContent; var oldid = mw.config.get('wgRevisionId'); // XXX: suppress if this is the latest revid var link = makeRestoreLink(oldid, uname); link.textContent = 'restore this version'; revnav.appendChild(document.createTextNode(' (')); revnav.appendChild(link); revnav.appendChild(document.createTextNode(')')); return; } // intentionally not enabled on history pages; // I want the user to see to what version they are reverting // either directly or at least a diff // may be changed on request, though function addRestoreLink(titlenode) { if (!titlenode) return; var titlelinks = titlenode.getElementsByTagName('a'); var userlink = titlenode.parentNode.getElementsByClassName('mw-userlink')[0]; var uname = userlink.textContent; var uri = new URL(titlelinks[0].href); // XXX: suppress for latest revid var rlink = makeRestoreLink(uri.searchParams.get("oldid"), userlink.textContent); rlink.textContent = 'restore'; titlelinks[1].parentNode.insertBefore(rlink, titlelinks[1].nextSibling); titlelinks[1].parentNode.insertBefore(document.createTextNode(' | '), titlelinks[1].nextSibling); } // are we viewing a diff? var ot = document.getElementById('mw-diff-otitle1'); var nt = document.getElementById('mw-diff-ntitle1'); var ri = document.getElementById('mw-revision-info'); if ((nt || ot) && mw.config.get('wgArticleId')) { addRestoreLink(ot); addRestoreLink(nt); } else if (ri && (mw.config.get('wgRevisionId') !== mw.config.get('wgCurRevisionId'))) { var userlink = ri.getElementsByClassName('mw-userlink')[0]; var rlink = makeRestoreLink(mw.config.get('wgRevisionId'), userlink.textContent); rlink.textContent = 'restore'; var fh = document.getElementById('firstHeading'); var span = document.createElement('span'); span.className = 'mw-editsection'; span.appendChild(document.createTextNode('[')); span.appendChild(rlink); span.appendChild(document.createTextNode(']')); fh.appendChild(span); } }); })(); qf0oxyah5m8wbu56gcchqp2bu762ig5 မဳဒဳယာဝဳကဳ:Gadget-FastRollback.js/documentation 8 296826 399040 2026-07-17T14:21:58Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly>" 399040 wikitext text/x-wiki {{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly> nh2z4mxstdhoy5k1d14op93dv5v8194 မဳဒဳယာဝဳကဳ:Gadget-U2693.js 8 296827 399041 2026-07-17T14:23:54Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "/* jshint undef:true, latedef:true, shadow:true, boss:true, scripturl:true */ /* global mw, jQuery */ // <nowiki> "use strict"; mw.loader.using(["mediawiki.util"]).then(() => $(function() { var curRevisionId = mw.config.get("wgCurRevisionId"); function createAnchorLink(label, href, wikilink, title) { var span = document.createElement("span"); var link = document.createElement("a"); link.href = href;..." 399041 javascript text/javascript /* jshint undef:true, latedef:true, shadow:true, boss:true, scripturl:true */ /* global mw, jQuery */ // <nowiki> "use strict"; mw.loader.using(["mediawiki.util"]).then(() => $(function() { var curRevisionId = mw.config.get("wgCurRevisionId"); function createAnchorLink(label, href, wikilink, title) { var span = document.createElement("span"); var link = document.createElement("a"); link.href = href; link.addEventListener( "click", function(ev) { ev.preventDefault(); // IE if (window.clipboardData && window.clipboardData.setData) { window.clipboardData.setData("text", wikilink); mw.util.jsMessage("Wikitext copied to the clipboard."); return; } // XXX: there is a brand new shiny ClipboardEvent API, but I could not get it to work on my browser. // plus, there is no graceful fallback if it fails to work. going back to good ol' prompt(). prompt("Hit Ctrl-C to copy this to your clipboard", wikilink); }, false ); link.appendChild(document.createTextNode(label)); link.title = title; span.appendChild(document.createTextNode("[")); span.appendChild(link); span.appendChild(document.createTextNode("]")); span.className = "mw-editsection-like anchor-gadget-link"; return span; } // XXX: not ideal; it may over-unescape things, but it usually works as intended function unescapeAnchor(anchor) { anchor = anchor.replace(/_/g, " "); try { return decodeURIComponent( anchor.replace(/\.([0-9A-F][0-9A-F])/g, "%$1") ); } catch (e) { return anchor; } } function forEachHeader(callback) { var headers = document.querySelectorAll( ".mw-heading > h2, .mw-heading > h3, .mw-heading > h4, .mw-heading > h5, .mw-heading > h6, .mw-headline" ); for (var i = 0; i < headers.length; ++i) { var links = headers[i].parentNode.getElementsByTagName("a"); var title = null; for (var j = 0; j < links.length; ++j) { try { var u = new URL(links[j].href); if ( u.hostname === location.host && u.pathname === mw.config.get("wgScript") && u.searchParams.get("action") === "edit" && !u.searchParams.get("redlink") ) { title = new mw.Title(u.searchParams.get("title")); } } catch (e) { /* screw it */ } } if (!title) continue; callback(headers[i], title); } } function getRevInfo(oldid, callback) { // XXX: of course I have it right on the page, but I cannot rely on it being in any particular format. // hence wasting bandwidth on an API request. mw.loader.using(["mediawiki.api", "mediawiki.util"], function() { var api = new mw.Api(); api .get({ action: "query", pageids: mw.config.get("wgArticleId"), prop: "revisions", rvprop: "user|timestamp", rvstartid: oldid, rvlimit: 1, }) .then(function(result) { var revobj = result.query.pages[mw.config.get("wgArticleId")].revisions[0]; callback(revobj); }); }); } function createUnsignedLink(revobj) { var userpart = (mw.util.isIPv4Address(revobj.user) || mw.util.isIPv6Address(revobj.user) ? "{{unsigned-ip|" : "{{unsigned|") + revobj.user; var datepart = "}}"; var m; if ( (m = /^(\d+)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)Z$/.exec( revobj.timestamp )) ) { var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ]; datepart = "|" + m[4] + ":" + m[5] + ", " + m[3].replace(/^0+/, "") + " " + monthNames[parseInt(m[2], 10) - 1] + " " + m[1] + " (UTC)}}"; } return createAnchorLink( "✎", "javascript:void window.warranty", userpart + datepart, "{{unsigned}}" ); } if (mw.config.get("wgAction") !== "view") return; mw.util.addCSS( ".anchor-gadget-link { -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; }" ); if (mw.util.getParamValue("diff")) { // viewing a diff var oldid, newid; var ot = document.getElementById("mw-diff-otitle1"); var nt = document.getElementById("mw-diff-ntitle1"); if (ot) { ot = new URL(ot.getElementsByTagName("a")[0].href); oldid = ot.searchParams.get("oldid"); } if (nt) { nt = new URL(nt.getElementsByTagName("a")[0].href); newid = nt.searchParams.get("oldid"); } document .getElementById("firstHeading") .appendChild( createAnchorLink( "⚓", mw.config.get("wgScript") + "?oldid=" + oldid + "&diff=" + newid, "[[Special:Diff/" + oldid + "/" + newid + "]]", "Link to this diff" ) ); if ( document.getElementsByClassName("diffmulti").length === 0 && mw.config.get("wgArticleId") ) { getRevInfo(newid, function(revobj) { document .getElementById("firstHeading") .appendChild(createUnsignedLink(revobj)); }); } } else if (mw.util.getParamValue("oldid") || curRevisionId) { // viewing an old page revision var oldid = mw.util.getParamValue("oldid") || curRevisionId; document .getElementById("firstHeading") .appendChild( createAnchorLink( "⚓", mw.config.get("wgScript") + "?oldid=" + oldid, "[[Special:Permalink/" + oldid + "]]", "Link to this revision" ) ); getRevInfo(oldid, function(revobj) { document .getElementById("firstHeading") .appendChild(createUnsignedLink(revobj)); }); } if ( mw.config.get("wgRevisionId") === curRevisionId && // 100 = appendix, 114 = citations [0, 100, 114].indexOf(mw.config.get("wgNamespaceNumber")) === -1 ) { forEachHeader(function(header, title) { var anchorLink = createAnchorLink( "⚓", mw.util.getUrl(title.getPrefixedDb()) + "#" + header.id, "[[" + title.getPrefixedText() + "#" + unescapeAnchor(header.id) + "]]" ); var editSectionLink = header.parentNode.querySelector(".mw-editsection"); if (editSectionLink) { header.parentNode.insertBefore( anchorLink, editSectionLink.nextSibling ); } else { header.parentNode.appendChild(anchorLink); } }); } }) ); // </nowiki> 3r6xwafb4slilr2bjt7unh1dp2j1dru မဳဒဳယာဝဳကဳ:Gadget-U2693.js/documentation 8 296828 399042 2026-07-17T14:24:41Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> Explanation for the name: U+2693 is the code point for the anchor character, ⚓. See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly>" 399042 wikitext text/x-wiki {{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> Explanation for the name: U+2693 is the code point for the anchor character, ⚓. See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly> nwhdp16wb76zej0wti6yhzc6wf3qwt8 မဳဒဳယာဝဳကဳ:Gadget-nearby.js 8 296829 399043 2026-07-17T14:33:32Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> (async () => { // Do a preliminary check to avoid running the gadget unnecessarily. if ([...document.querySelectorAll("#catlinks li")].some(cat => cat.textContent.endsWith("ဝေါဟာအဓိက"))) { mw.util.addCSS(` .nearby-entries-box { padding: 6px; margin-top: 10px; background: var(--wikt-palette-palergreen); width: fit-content; max-width: 100%; border: 1.5px solid var(--wi..." 399043 javascript text/javascript // <nowiki> (async () => { // Do a preliminary check to avoid running the gadget unnecessarily. if ([...document.querySelectorAll("#catlinks li")].some(cat => cat.textContent.endsWith("ဝေါဟာအဓိက"))) { mw.util.addCSS(` .nearby-entries-box { padding: 6px; margin-top: 10px; background: var(--wikt-palette-palergreen); width: fit-content; max-width: 100%; border: 1.5px solid var(--wikt-palette-forestgreen); border-radius: 2px; overflow-wrap: break-word; } `); let actionAPI = new mw.Api({ajax: {headers: {"Api-User-Agent": "Gadget developed by [[User:Ioaxxere]]"}}}); let pageName = mw.config.values.wgPageName; const N_ENTRIES = 3; // the number of preview entries on each side of the current page // Given a page title (no underscores), return the prettified title. const makeDisplayTitle = rawTitle => { rawTitle = rawTitle.replaceAll("_", " ").replace(/\/languages [A-Z] to [A-Z]$/g, ""); if (rawTitle.startsWith("ဗီုပြၚ်သိုၚ်တၟိ:")) return `*${rawTitle.split("/").pop()}`; if (rawTitle.startsWith("အဆက်လက္ကရဴ:")) return rawTitle.split("/").pop(); if (rawTitle.startsWith("Unsupported titles/")) return convertUnsupportedTitle(rawTitle); // from [[MediaWiki:Gadget-UnsupportedTitles.js]] return rawTitle; }; // Build pageCategorySortkeys, a map from each page category to its associated sortkey. let pageCategorySortkeys = new Map(); let continueParam; while (true) { let params = { action: "query", format: "json", cllimit: "max", clprop: "sortkey", prop: "categories", titles: pageName }; if (continueParam) params.clcontinue = continueParam; let response = await actionAPI.get(params); for (let category of Object.values(response.query.pages)[0].categories) pageCategorySortkeys.set(category.title, category.sortkeyprefix); if (!response.continue) break; continueParam = response.continue.clcontinue; } document.querySelectorAll(".mw-heading2 h2").forEach(async h2 => { let language = h2.id.replaceAll("_", " "); let category = `ကဏ္ဍ:ဝေါဟာအဓိက${language}ဂမၠိုၚ်`; if (!pageCategorySortkeys.has(category)) return; // skip non-lemmas and malformed entries let params = { action: "query", cmlimit: 40, // arbitrary; we don't know how many we need ahead of time format: "json", list: "categorymembers", cmsort: "sortkey", cmtitle: category, cmstartsortkeyprefix: pageCategorySortkeys.get(category) }; let titles = (await actionAPI.get(params)).query.categorymembers .filter(page => page.ns !== 14) // Filter out namespace 14 (Category:) .map(page => page.title); // pageName is guaranteed to be in this list unless there are over `cmlimit` pages with the same sortkey. let currPagePosition = titles.indexOf(pageName.replaceAll("_", " ")); let entriesAhead = titles.slice(currPagePosition + 1, currPagePosition + N_ENTRIES + 1); let entriesBehind = titles.slice(Math.max(currPagePosition - N_ENTRIES, 0), currPagePosition); if (entriesBehind.length < N_ENTRIES) { // If entriesBehind isn't yet long enough, switch direction and get the entries coming before. // There are no duplicates between the first and second queries. params.cmdir = "desc"; entriesBehind = (await actionAPI.get(params)).query.categorymembers .filter(page => page.ns !== 14) .map(page => page.title) .slice(0, N_ENTRIES - entriesBehind.length) .reverse() .concat(entriesBehind); } // Display nearby entries on the page. let nearbyEntriesDiv = document.createElement("div"); nearbyEntriesDiv.className = "nearby-entries-box"; nearbyEntriesDiv.innerText = "» "; // Need to account for both HTML formats. if (h2.parentElement.nextElementSibling.tagName === "SECTION") h2.parentElement.nextElementSibling.prepend(nearbyEntriesDiv); else h2.parentElement.parentElement.insertBefore(nearbyEntriesDiv, h2.parentElement.nextElementSibling); for (let entry of entriesBehind) { let entryLink = document.createElement("a"); entryLink.href = `/wiki/${mw.util.wikiUrlencode(entry)}#${h2.id}`; entryLink.title = entry; entryLink.textContent = makeDisplayTitle(entry); nearbyEntriesDiv.append(entryLink, " • "); } let selflink = document.createElement("a"); selflink.className = "mw-selflink selflink"; selflink.textContent = makeDisplayTitle(pageName); nearbyEntriesDiv.append(selflink); for (let entry of entriesAhead) { let entryLink = document.createElement("a"); entryLink.href = `/wiki/${mw.util.wikiUrlencode(entry)}#${h2.id}`; entryLink.title = entry; entryLink.textContent = makeDisplayTitle(entry); nearbyEntriesDiv.append(" • ", entryLink); } }); } })(); // </nowiki> i0ca0600gmitp0ottkb2vhrq64h9ap4 မဳဒဳယာဝဳကဳ:Gadget-ReferenceTooltips.js 8 296830 399044 2026-07-17T14:36:23Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "if (document.querySelector(".reference") && mw.config.values.skin !== "minerva") { mw.loader.load('https://mnw.wikipedia.org/w/load.php?modules=ext.gadget.ReferenceTooltips&only=scripts'); mw.loader.load('https://mnw.wikipedia.org/w/load.php?modules=ext.gadget.ReferenceTooltips&only=styles', 'text/css'); }" 399044 javascript text/javascript if (document.querySelector(".reference") && mw.config.values.skin !== "minerva") { mw.loader.load('https://mnw.wikipedia.org/w/load.php?modules=ext.gadget.ReferenceTooltips&only=scripts'); mw.loader.load('https://mnw.wikipedia.org/w/load.php?modules=ext.gadget.ReferenceTooltips&only=styles', 'text/css'); } 5wa4cps7kgg1pxi5269pix2xvliylnh မဳဒဳယာဝဳကဳ:Gadget-Streamline.js 8 296831 399045 2026-07-17T14:56:02Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု ""use strict"; // {{documentation}} // <nowiki> /*jshint strict:true, undef:true, latedef:true, esversion:6 */ /* global mw, createNavToggle */ const STREAMLINE_SYMBOL = "⌰"; // [[MediaWiki:Gadget-WiktGadgetPrefs.js]] const preferences = mw.wiktGadgetPrefs.get( "streamline", { label: { mnw: "Streamline", }, }, { collapseElements: { "type": "strenum", "default": "aboveDefinitions", "label": {..." 399045 javascript text/javascript "use strict"; // {{documentation}} // <nowiki> /*jshint strict:true, undef:true, latedef:true, esversion:6 */ /* global mw, createNavToggle */ const STREAMLINE_SYMBOL = "⌰"; // [[MediaWiki:Gadget-WiktGadgetPrefs.js]] const preferences = mw.wiktGadgetPrefs.get( "streamline", { label: { mnw: "Streamline", }, }, { collapseElements: { "type": "strenum", "default": "aboveDefinitions", "label": { "mnw": "လက္ချဏ်ဝိသေသနကဵုမဒေါံလာ်စှ်ေ" }, "choices": [ "aboveDefinitions", "allExceptNotes" ], "choiceLabels": { "mnw": { "aboveDefinitions": "Sections before definitions", "allExceptNotes": "Sections before and after definitions" } } }, runInReconstructions: { "type": "boolean", "default": true, "label": { "mnw": "မဗေၚ်စုတ်နကဵုမုက်လိက်ဗီုပြၚ်သိုၚ်တၟိညိ" } } } ); function makeNavFrame(heading, editLinks, toggleCat, contents) { // now make a collapsible box const navHead = document.createElement("div"); navHead.className = "NavHead"; navHead.style.cursor = "pointer"; navHead.style.fontSize = "1.1em"; const navContent = document.createElement("div"); navContent.className = "NavContent boxcontent streamline-boxcontent"; navContent.style.textAlign = "left"; const navFrame = document.createElement("div"); navFrame.className = "NavFrame NavFrame-streamline"; if (toggleCat) navFrame.setAttribute("data-toggle-category", toggleCat); navFrame.style.display = "block"; navFrame.append(navHead, navContent); navHead.append(`${STREAMLINE_SYMBOL} ${heading}`); try { if (createNavToggle) createNavToggle(navFrame); } catch (e) { } if (editLinks) { navContent.append(editLinks); editLinks.style.float = "right"; // try displaying the edit links next to the show button editLinks.style.marginTop = "-1.5em"; editLinks.style.marginRight = "8ch"; } navContent.append(...contents); return navFrame; } function isNavFrameOpen(frame) { const content = frame.querySelector(".NavContent"); if (!content) return false; const computedStyle = window.getComputedStyle(content); if (!computedStyle) return false; return computedStyle.display !== "none"; } function openNavFrame(frame) { if (!isNavFrameOpen(frame)) { const navHead = frame.querySelector(".NavHead"); if (navHead) navHead.click(); } } function anchorInUrl(anchor) { if (window.location.hash) { return window.location.hash.replace(/^#/, "") === anchor; } return false; } function hasElementClass(element, className) { return element.classList.contains(className); } function shouldEndCollapsible(element) { return element.matches("h1, h2, h3, h4, h5, h6, hr") // end on heading or horizontal line || hasElementClass(element, "NavFrame-streamline") // no nested streamline navboxes || hasElementClass(element, "mw-heading") // section heading || element.matches("section") // Parsoid ; // this is on its own line so that it's easier to add new rules } function shouldExcludeFromCollapsible(element) { return hasElementClass(element, "thumb") // images || hasElementClass(element, "sister-project") // sister project box || hasElementClass(element, "kanji-table") // ja-kanjitab || hasElementClass(element, "floatright") // various tables || hasElementClass(element, "template-anchor") // anchor || hasElementClass(element, "t-thumbs-outer") // thumbs || hasElementClass(element, "interproject-box") // interwiki boxes || hasElementClass(element, "normalized-box") // {{normalized}} || hasElementClass(element, "chemical-element-box") // {{chemical element box}} || element.getAttribute("typeof") === "mw:File/Thumb" // new floating image boxes || hasElementClass(element, "mw-halign-right") // mw-halign-right, by new floating image boxes || element.getAttribute("align") === "right" // anything that (explicitly) aligns || element.style.float === "right" // anything that (explicitly) floats || element.matches("style") // TemplateStyles ; // this is on its own line so that it's easier to add new rules } // Applies only to numbered etymologies. function shouldDisplayBeforeCollapsible(element) { return hasElementClass(element, "normalized-box") // {{normalized}} ; // this is on its own line so that it's easier to add new rules } function shouldCollapseForTheSakeOf(element) { if (element.nodeType === 1) { // don't collapse for the sake of senseid or etymid alone if (element.matches(".senseid, .etymid")) return false; if (element.matches("p, div, span")) return Array.prototype.some.call(element.childNodes, shouldCollapseForTheSakeOf); return element.tagName !== "BR"; } else if (element.nodeType === 3) { return !!element.textContent.trim(); // only if not entirely whitespace } else { return false; } } function getHeadingQuery(onlyL3) { return (onlyL3 ? ["h2", "h3"] : ["h2", "h3", "h4", "h5"]) .map(heading => `#mw-content-text ${heading}`) .join(", "); } const navFramesById = {}; function collapseHeadingInNavbox(headingCandidate, heading, toggleCat, headingMatcher, addEditLinks) { let headingId; const hl = headingCandidate.querySelector(".mw-headline"); if (hl && headingMatcher(hl.textContent)) headingId = hl.id; // Parsoid if (hasElementClass(headingCandidate.parentElement, "mw-heading") && headingMatcher(headingCandidate.textContent)) { headingId = headingCandidate.id; headingCandidate = headingCandidate.parentElement; } if (!headingId) return [undefined, undefined]; // pick all elements until next heading const contents = []; let nx = headingCandidate.nextElementSibling; let collapse = false; while (nx) { if (shouldEndCollapsible(nx) || nx.querySelector(".NavFrame-streamline")) break; if (!shouldExcludeFromCollapsible(nx)) { contents.push(nx); collapse = collapse || shouldCollapseForTheSakeOf(nx); } nx = nx.nextElementSibling; } if (!collapse) return [undefined, undefined]; const navFrame = makeNavFrame(heading, addEditLinks ? headingCandidate.querySelector(".mw-editsection") : null, toggleCat, contents); navFrame.id = headingId; navFramesById[navFrame.id] = navFrame; return [navFrame, headingCandidate]; } function makeSingleCollapsible(heading, toggleCat, onlyL3) { document.querySelectorAll(getHeadingQuery(onlyL3)).forEach((e) => { const [navFrame, headingElement] = collapseHeadingInNavbox(e, heading, toggleCat, (headingText) => headingText === heading, true); if (navFrame) headingElement.parentNode.replaceChild(navFrame, headingElement); }); } function makeNumberedCollapsible(heading, toggleCat) { const re = new RegExp("^" + heading + " \\d+(?:\.\\d+)?$"); document.querySelectorAll(getHeadingQuery(false)).forEach((e) => { const [navFrame, headingElement] = collapseHeadingInNavbox(e, heading, toggleCat, (headingText) => headingText.match(re), false); if (navFrame) { let toInsertBefore = headingElement.nextElementSibling; while (toInsertBefore && shouldDisplayBeforeCollapsible(toInsertBefore)) toInsertBefore = toInsertBefore.nextElementSibling; headingElement.parentNode.insertBefore(navFrame, toInsertBefore); } }); } function moveAnagrams() { // move the Anagrams box above Further reading and References document.querySelectorAll(".NavFrame[data-toggle-category=\"anagrams\"]").forEach((e) => { let p = e.previousElementSibling; while (p) { if (p.tagName === "H2") { break; } if (p.tagName === "H3") { const hl = p.querySelector(".mw-headline"); if (hl && (hl.textContent === "နိဿဲမဍိုက်ပေၚ်" || hl.textContent === "နိဿဲ")) { e.parentElement.insertBefore(e, p); } } p = p.previousElementSibling; } }); } function addGaps() { // add gaps before streamline navboxes if preceded by certain elements document.querySelectorAll(".NavFrame-streamline").forEach((sl) => { const prev = sl.previousElementSibling; const next = sl.nextElementSibling; let tn; if (prev) { tn = prev.tagName; if (tn === "OL" || tn === "UL") { sl.style.marginTop = "1em"; } } if (next) { tn = next.tagName; if (tn === "HR") { sl.style.marginBottom = "1em"; } } }); } function defaultStreamline() { makeSingleCollapsible("ပွံၚ်အက္ခရ်နဲတၞဟ်", true); makeSingleCollapsible("ပွံၚ်နဲတၞဟ်", true); makeSingleCollapsible("နိရုတ်"); makeSingleCollapsible("Glyph origin", "etymology"); makeSingleCollapsible("ပွံၚ်အဓိပ္ပါဲ"); makeSingleCollapsible("ဗွဟ်ရမ္သာၚ်"); makeSingleCollapsible("Production", "productions"); makeNumberedCollapsible("နိရုတ်"); makeNumberedCollapsible("ဗွဟ်ရမ္သာၚ်"); makeNumberedCollapsible("Production", "productions"); addGaps(); } function superStreamline() { makeSingleCollapsible("ပွံၚ်အက္ခရ်နဲတၞဟ်", false); makeSingleCollapsible("ပွံၚ်နဲတၞဟ်", false); makeSingleCollapsible("ပရေၚ်ကၠောံ"); makeSingleCollapsible("လဟုတ်စှ်ေ", "inflection"); makeSingleCollapsible("သမ္ဗန္ဓ", "inflection"); makeSingleCollapsible("လဟီု"); makeSingleCollapsible("ဝေါဟာတၟုပ်"); makeSingleCollapsible("ဝေါဟာဒစး"); makeSingleCollapsible("ဝေါဟာလွာ"); makeSingleCollapsible("ဆက်လ္ၚတ်"); makeSingleCollapsible("Meronyms", "meronyms"); makeSingleCollapsible("Holonyms", "holonyms"); makeSingleCollapsible("Troponyms", "troponyms"); makeSingleCollapsible("Coordinate terms", "coordinate terms"); makeSingleCollapsible("Derived terms", "derived terms"); makeSingleCollapsible("Compounds", "derived terms"); makeSingleCollapsible("Related terms", "related terms"); makeSingleCollapsible("Collocations", "collocations"); makeSingleCollapsible("မဒုၚ်လွဳစ"); makeSingleCollapsible("Trivia", "trivia"); makeSingleCollapsible("ဗဵုရံၚ်တဏအ်ညိ", "related terms"); makeSingleCollapsible("နိဿဲ"); makeSingleCollapsible("နိဿဲမဍိုက်ပေၚ်"); makeSingleCollapsible("Anagrams", "anagrams"); moveAnagrams(); addGaps(); } function openNavFrameForElementWithId(targetId) { const navFrameTarget = navFramesById[targetId]; if (navFrameTarget) openNavFrame(navFrameTarget); // if what we targeted is inside a navframe, open it too const targetElement = document.getElementById(targetId); if (targetElement && targetElement.closest) { const navFrameContainingTarget = targetElement.closest(".NavFrame-streamline"); if (navFrameContainingTarget) openNavFrame(navFrameContainingTarget); } } const { collapseElements, runInReconstructions } = preferences; // only run in content namespaces. // this must also run on 4 in [[MediaWiki:Gadgets-definition]] so that [[WT:GPREFS]] works. if (mw.config.get("wgNamespaceNumber") === 0 || (runInReconstructions && mw.config.get("wgNamespaceNumber") === 118)) { mw.hook("wikipage.content").add(() => { try { defaultStreamline(); if (collapseElements !== "aboveDefinitions") superStreamline(); // refocus URL target in case the page layout changed, which it probably did // also open a navframe if targeted window.requestAnimationFrame(() => { if (window.location.hash && window.location.hash.match(/^#/)) { const targetId = window.location.hash.replace(/^#/, ""); const targetElement = document.getElementById(targetId); if (targetElement) targetElement.scrollIntoView(); openNavFrameForElementWithId(targetId); } }); // open a navframe if an internal link targets a section window.addEventListener("hashchange", () => { if (window.location.hash) { const targetId = window.location.hash.replace(/^#/, ""); openNavFrameForElementWithId(targetId); } }); } catch (e) { console.error(e); } }); } // </nowiki> e7kswdun8qxomnv4se7jr9k1dpgozch မဳဒဳယာဝဳကဳ:Gadget-Streamline.js/documentation 8 296832 399046 2026-07-17T14:57:27Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the gadget, and how to use it. --> <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] <!-- add a category of your choice --> </includeonly>" 399046 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the gadget, and how to use it. --> <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] <!-- add a category of your choice --> </includeonly> lt99gvov239xdbsxgyk20c9mzudh680 မဳဒဳယာဝဳကဳ:Gadget-minitoc.js 8 296833 399047 2026-07-17T15:49:52Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> // Initialize preferred languages from local storage. let preferredLanguages = new Set(JSON.parse(localStorage.getItem("minitocLangs"))); // Empty and filled-in bookmark icons. const unselectedIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="18" height="17" viewBox="0 0 20 20" aria-hidden="true" fill="currentColor"><g><path d="M5 1a2 2 0 00-2 2v16l7-5 7 5V3..." 399047 javascript text/javascript // <nowiki> // Initialize preferred languages from local storage. let preferredLanguages = new Set(JSON.parse(localStorage.getItem("minitocLangs"))); // Empty and filled-in bookmark icons. const unselectedIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="18" height="17" viewBox="0 0 20 20" aria-hidden="true" fill="currentColor"><g><path d="M5 1a2 2 0 00-2 2v16l7-5 7 5V3a2 2 0 00-2-2zm10 14.25-5-3.5-5 3.5V3h10z"></path></g></svg>`; const selectedIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="18" height="17" viewBox="0 0 20 20" aria-hidden="true" fill="currentColor"><g><path d="M5 1a2 2 0 00-2 2v16l7-5 7 5V3a2 2 0 00-2-2z"></path></g></svg>`; mw.util.addCSS(` .minitoc-icon-selected, .minitoc-icon-unselected { cursor: pointer; vertical-align: sub; } `); function displayLanguages() { // Clear out previously displayed languages. document.querySelectorAll(".minitoc-linked-languages").forEach(elem => elem.remove()); for (let minitoc of document.querySelectorAll(".minitoc")) { let linkedLanguages = document.createElement("span"); linkedLanguages.className = "minitoc-linked-languages"; for (let languageLink of minitoc.querySelectorAll(`.NavContent > a:not([href="#catlinks"]`)) { if (preferredLanguages.has(languageLink.textContent)) { let link = document.createElement("a"); link.textContent = `→ ${languageLink.textContent}`; link.href = languageLink.href; link.style.whiteSpace = "nowrap"; linkedLanguages.append(" ", link); } } if (linkedLanguages.childElementCount) minitoc.querySelector(".NavHead").append(linkedLanguages); } } // Setup. // Note: the code is generic and can handle multiple miniTOCs on one page, although this probably isn't necessary. for (let minitoc of document.querySelectorAll(".minitoc")) { minitoc.querySelector(".NavContent").insertAdjacentHTML("beforeend", `<span style="font-size: 85%" class="minitoc-button-container"> &#32; [<a class="minitoc-button-select" role="button"> Select preferred languages </a>] <span style="display: none"> &#32; [<a class="minitoc-button-clear" role="button"> Clear all </a>] </span> </span>` .replace(/[\n\t]/g, "") ); let selectButton = minitoc.querySelector(".minitoc-button-select"); let clearButton = minitoc.querySelector(".minitoc-button-clear"); selectButton.addEventListener("click", () => { // The button can be in two states: "select" and "save". if (selectButton.textContent === "မရုဲကေတ်အရေဝ်ဘာသာမနွံပၟိက်ဂမၠိုၚ်") { clearButton.parentElement.style.display = ""; // Make sure you can't have multiple miniTOCs in "select" mode simultaneously. for (let button of document.querySelectorAll(".minitoc-button-select")) { if (button.textContent === "မဂိုၚ်ထောံအရေဝ်ဘာသာမနွံပၟိက်ဂမၠိုၚ်") { // Trigger the saving procedure. button.click(); } } selectButton.textContent = "မဂိုၚ်ထောံအရေဝ်ဘာသာမနွံပၟိက်ဂမၠိုၚ်"; for (let languageLink of minitoc.querySelectorAll(`.NavContent > a:not([href="#catlinks"]`)) { let iconContainer = document.createElement("span"); iconContainer.role = "button"; languageLink.insertAdjacentElement("beforebegin", iconContainer); if (preferredLanguages.has(languageLink.textContent)) { iconContainer.className = "minitoc-icon-selected"; iconContainer.innerHTML = selectedIcon; } else { iconContainer.className = "minitoc-icon-unselected"; iconContainer.innerHTML = unselectedIcon; } iconContainer.addEventListener("click", () => { if (preferredLanguages.has(languageLink.textContent)) { preferredLanguages.delete(languageLink.textContent); iconContainer.className = "minitoc-icon-unselected"; iconContainer.innerHTML = unselectedIcon; } else { preferredLanguages.add(languageLink.textContent); iconContainer.className = "minitoc-icon-selected"; iconContainer.innerHTML = selectedIcon; } }); } } else { // Save to local storage. localStorage.setItem("minitocLangs", JSON.stringify(Array.from(preferredLanguages))); // Reset state. minitoc.querySelectorAll(".minitoc-icon-selected, .minitoc-icon-unselected").forEach(elem => elem.remove()); selectButton.textContent = "မရုဲကေတ်အရေဝ်ဘာသာမနွံပၟိက်ဂမၠိုၚ်"; clearButton.parentElement.style.display = "none"; displayLanguages(); } }); clearButton.addEventListener("click", () => { preferredLanguages.clear(); for (let iconContainer of minitoc.querySelectorAll(".minitoc-icon-selected")) { iconContainer.innerHTML = unselectedIcon; iconContainer.className = "minitoc-icon-unselected"; } }); } displayLanguages(); // </nowiki> s91mhnoc1by1jgygbq32gb2itv71nql မဳဒဳယာဝဳကဳ:Gadget-CategoryJumpTo.js 8 296834 399048 2026-07-17T15:56:03Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> /* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:6 */ /* global $, mw, OO */ /** * Adds a jump box to category pages. * * Author(s): Surjection * Last updated: 2024-12-19 */ const mwApi = new mw.Api({ ajax: { headers: { "Api-User-Agent": "CategoryJumpTo gadget by [[User:Surjection]]" } } }); const strings = { "en": { wiktLangCode: "mnw", jumpToPage: "Jump to page",..." 399048 javascript text/javascript // <nowiki> /* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:6 */ /* global $, mw, OO */ /** * Adds a jump box to category pages. * * Author(s): Surjection * Last updated: 2024-12-19 */ const mwApi = new mw.Api({ ajax: { headers: { "Api-User-Agent": "CategoryJumpTo gadget by [[User:Surjection]]" } } }); const strings = { "en": { wiktLangCode: "mnw", jumpToPage: "Jump to page", jump: "Jump", jumpError: "There was an error while jumping. If this reoccurs, please report it on $1.", greasePit: "the Grease Pit", } }; const NS_PROJECT = 4; const GREASE_PIT_NAME = "Grease pit"; const userLanguage = mw.config.get("wgUserLanguage"); const REQUIRE_TOC = false; const REQUIRE_CATEGORY_PAGING = true; const resolveString = (strings, stringKey, defaultValue) => { try { if (defaultValue == null && stringKey) defaultValue = stringKey; if (strings == null) return defaultValue; // try to use user language first if (strings[userLanguage] != null) { if (stringKey == null) return strings[userLanguage]; else if (strings[userLanguage][stringKey] != null) return strings[userLanguage][stringKey]; } // fall back to en if (strings.en != null) { if (stringKey == null) return strings.en; else if (strings.en[stringKey] != null) return strings.en[stringKey]; } return defaultValue; } catch (_) { // invalid strings object, etc. return defaultValue; } }; const createSearchBox = (jumpCallback) => { const outerDiv = $('<div>'); outerDiv.attr("style", "display: inline-block; margin-top: 0.5em; border: solid 1px var(--border-color-base, gray); border-collapse: collapse;"); const table = $('<table>'); outerDiv.append(table); const body = $('<div class="center"></div>'); table.append(body.wrap('<td></td>').parent().wrap('<tr></tr>').parent().wrap('<tbody></tbody>').parent()); const MAX_LENGTH = 256; const textInput = new OO.ui.TextInputWidget({ value: "", maxLength: MAX_LENGTH }); const jumpButton = new OO.ui.ButtonWidget({ label: resolveString(strings, "jumpToPage", "Jump to page") }); const submit = () => { textInput.setDisabled(true); jumpCallback(textInput.getValue().slice(0, MAX_LENGTH)).finally(() => { textInput.setDisabled(false); }); }; textInput.on("enter", () => submit()); jumpButton.on("click", () => submit()); const fieldset = new OO.ui.FieldsetLayout({ items: [ new OO.ui.ActionFieldLayout(textInput, jumpButton) ] }); body.append(fieldset.$element); return outerDiv; }; const htmlUnescape = (text) => new DOMParser().parseFromString(text, "text/html").body.textContent; const getSortKey = (languageCode, text) => new Promise((resolve, reject) => { const escapedText = text.replace(/[\x00-\x1F\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7F]/g, (m) => `&#${m.charCodeAt(0)};`); const wikitext = `{{sortkey|${languageCode}|${escapedText}}}`; const params = { action: "expandtemplates", format: "json", prop: "wikitext", text: wikitext }; mwApi.post(params).then(response => { resolve(htmlUnescape(response.expandtemplates.wikitext)); }).catch((e) => { reject(e); }); }); const addJumpBox = () => { const catfix = $(".catfix"); if (!catfix.length) return; let languageCode = catfix.find("span[lang]"); if (!languageCode.length) return; languageCode = languageCode.attr("lang"); // do not display if there are no pages if (!$("#mw-pages").length) return; const toc = $("#toc"); if (REQUIRE_TOC && !toc.length) return; if (REQUIRE_CATEGORY_PAGING && !$('#mw-pages a[href*="pagefrom="], #mw-pages a[href*="pageuntil="]').length) return; const searchBox = createSearchBox((string) => new Promise((resolve, reject) => { getSortKey(languageCode, string).then((sortKey) => { const url = new URL(window.location.href); url.searchParams.delete("pagefrom"); url.searchParams.set("from", sortKey); resolve(); window.location.href = url.href; }).catch(() => { const greasePitUrl = new mw.Title(GREASE_PIT_NAME, NS_PROJECT).getUrl(); const greasePitLink = $("<a>").attr("href", greasePitUrl).text(resolveString(strings, "greasePit")); const errorMessage = $("<span>").text(resolveString(strings, "jumpError")); errorMessage.html(errorMessage.html().replace('\$1', greasePitLink[0].outerHTML)); mw.notification.notify(errorMessage, { "type": "error" }); reject(); }); }) ); const target = toc.length ? toc : catfix; searchBox.wrap("<div>").parent().insertBefore(target.first()); }; addJumpBox(); // </nowiki> ffrxaykl2p48ht3vx3z61e9gzlsdg06 မဳဒဳယာဝဳကဳ:Gadget-Anchor.js 8 296835 399049 2026-07-17T16:01:06Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> // Preferences ([[MediaWiki:Gadget-WiktGadgetPrefs.js]]) const pref = mw.wiktGadgetPrefs.get("gadget-anchor", {"label": {"mnw": "Anchor"}}, { "linkType": { "type": "strenum", "default": "fullUrl", "label": {"mnw": "How the link should be copied"}, "choices": ["fullUrl", "wikilink", "ထာမ်ပလိက်"], "choiceLabels": { "mnw": { "fullUrl": "Full URL (e.g. https://mnw.w..." 399049 javascript text/javascript // <nowiki> // Preferences ([[MediaWiki:Gadget-WiktGadgetPrefs.js]]) const pref = mw.wiktGadgetPrefs.get("gadget-anchor", {"label": {"mnw": "Anchor"}}, { "linkType": { "type": "strenum", "default": "fullUrl", "label": {"mnw": "How the link should be copied"}, "choices": ["fullUrl", "wikilink", "ထာမ်ပလိက်"], "choiceLabels": { "mnw": { "fullUrl": "Full URL (e.g. https://mnw.wiktionary.org/wiki/သာဲ#မန်)", "wikilink": "Wikilink (e.g. [[သာဲ#မန်]])", "ထာမ်ပလိက်": "Using {{section link}} (e.g. {{section link|သာဲ#မန်}})" } } } } ); const linkType = pref.linkType; const linkIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="currentColor"><g><path d="M4.83 15h2.91a4.9 4.9 0 01-1.55-2H5a3 3 0 110-6h3a3 3 0 012.82 4h2.1a5 5 0 00.08-.83v-.34A4.83 4.83 0 008.17 5H4.83A4.83 4.83 0 000 9.83v.34A4.83 4.83 0 004.83 15"></path><path d="M15.17 5h-2.91a4.9 4.9 0 011.55 2H15a3 3 0 110 6h-3a3 3 0 01-2.82-4h-2.1a5 5 0 00-.08.83v.34A4.83 4.83 0 0011.83 15h3.34A4.83 4.83 0 0020 10.17v-.34A4.83 4.83 0 0015.17 5"></path></g></svg>`; mw.util.addCSS(` .wikt-header-anchor { color: var(--wikt-palette-darkgrey) !important; } body:not(.skin-minerva) .mw-heading { position: relative; } body:not(.skin-minerva) .wikt-header-anchor { position: absolute; right: 0; opacity: 0; transition: opacity 0.15s ease; } body:not(.skin-minerva) .mw-heading:hover > .wikt-header-anchor { opacity: 1; } body.skin-minerva .wikt-header-anchor > svg { vertical-align: middle; } `); const elem = s => document.createRange().createContextualFragment(s).firstChild; // helper for (let header of document.querySelectorAll(".mw-heading:not(.ext-discussiontools-init-section) > :is(h1, h2, h3, h4, h5, h6)")) { let linkElem = elem(`<a class="wikt-header-anchor" role="button">${linkIcon}</a>`); linkElem.addEventListener("click", event => { event.preventDefault(); let copied = `https://mnw.wiktionary.org/wiki/${mw.config.values.wgPageName}#${header.id}`; // fullUrl if (linkType === "wikilink") { copied = `[[${mw.config.values.wgPageName}#${header.id}]]`.replaceAll("_", " "); } else if (linkType === "ထာမ်ပလိက်") { copied = `{{section link|${mw.config.values.wgPageName}#${header.id}}}`.replaceAll("_", " "); } navigator.clipboard.writeText(copied) .then(() => mw.notify("Section link copied to clipboard.")) .catch(err => mw.notify("An error occurred while copying section link:\n", err.stack)); }); if (document.body.matches(".skin-minerva")) { // add classes to make it look the same as the edit button linkElem.classList.add("cdx-button", "cdx-button--size-large", "cdx-button--fake-button", "cdx-button--fake-button--enabled", "cdx-button--icon-only", "cdx-button--weight-quiet"); header.parentElement.querySelector(".mw-editsection").prepend(linkElem); } else { header.after(linkElem); } } // </nowiki> b9o1nmjg5od7r4dnu10bhmlz94zvlxm မဳဒဳယာဝဳကဳ:Gadget-VetVoters.js 8 296836 399050 2026-07-17T16:13:01Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "const EDIT_COUNT_AT_LEAST = 500; // note: above 500 would require multiple api requests const FIRST_EDIT_PREDATES_VOTE_BY = 30; // days const ELIGIBLE_NAMESPACES = "0|100|106|110|114|118"; const IPV4_REGEX = /^(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?$/; const IPV6_REGEX = /^[\da-f:]+(?:\/\d{1,3})?$/i; const TEMP_ACCT_REGEX = /^~[0-9]{4}(?:-[0-9]{1,5})+/; const USER_LINK_PATTERNS = { '.mw-body-content [href^="//mnw.wikti..." 399050 javascript text/javascript const EDIT_COUNT_AT_LEAST = 500; // note: above 500 would require multiple api requests const FIRST_EDIT_PREDATES_VOTE_BY = 30; // days const ELIGIBLE_NAMESPACES = "0|100|106|110|114|118"; const IPV4_REGEX = /^(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?$/; const IPV6_REGEX = /^[\da-f:]+(?:\/\d{1,3})?$/i; const TEMP_ACCT_REGEX = /^~[0-9]{4}(?:-[0-9]{1,5})+/; const USER_LINK_PATTERNS = { '.mw-body-content [href^="//mnw.wiktionary.org/wiki/ညးလွပ်:"]': (title) => title.replace(/^ညးလွပ်:/, ""), '.new[href^="//mnw.wiktionary.org/w/index.php?title=ညးလွပ်:"]': (title) => title.replace(/^ညးလွပ်:/, "").replace(/ \(page does not exist\)$/, ""), }; const API_HEADERS = { "Api-User-Agent": "Vet Voters (gadget developed by [[User:Ioaxxere]])", }; const actionAPI = new mw.Api({ ajax: { headers: API_HEADERS } }); const restAPI = new mw.Rest({ ajax: { headers: API_HEADERS } }); /** * Guesses when the vote started * @param {Document} doc the document * @returns {Date | null} */ function voteStart(doc) { let endDate = new Date(NaN); let dateMatch = doc .querySelector(".mw-parser-output") .textContent.match( /Vote start(?:s|ed):.*?([0-9]{2}:[0-9]{2}), ([0-9]+ \w+ [0-9]{4})/, ); if (dateMatch) { endDate = new Date(`${dateMatch[2]} ${dateMatch[1]} UTC`); if (!isNaN(endDate)) return endDate; } // If parsing fails here, just check the title. // Votes typically contain the date string in the title (e.g. 2026-04). // Conservatively assume the 1st of the month (catch false positives, avoid false negatives) let titleMatch = mw.config.values.wgTitle.match(/[0-9]{4}-[0-9]{2}/); if (titleMatch) { endDate = new Date(`${titleMatch[0]}-01`); if (!isNaN(endDate)) return endDate; } return null; } let alreadyAddedCss = false; /** * Adds a class to an HTML element for the user, which highlights them as being ineligible to vote * @param {HTMLAnchorElement} elem * @returns {void} */ function highlightIneligible(elem) { if (!alreadyAddedCss) { mw.util.addCSS(` .ineligible-voter { text-decoration: var(--wikt-palette-darkred) wavy underline 0.15em !important; } .ineligible-voter:hover::after { content: " User is ineligible to vote!"; font-size: 0.8em; color: var(--wikt-palette-darkred); text-decoration: none; font-family: sans-serif; } `); alreadyAddedCss = true; } elem.classList.add("ineligible-voter"); } /** * Finds a user's current username * @param {string} username * @returns {string} the current username */ async function resolveRenames(username) { while (true) { let resp = await actionAPI.post({ action: "query", format: "json", list: "logevents", letype: "renameuser", letitle: `ညးလွပ်:${username}`, lelimit: 1, }); let entries = resp.query.logevents; if (!entries.length) break; let newuser = entries[0].params.newuser; if (newuser.endsWith("(usurped)")) break; // hacky but ok username = newuser; } return username; } /** * Returns true if the given user can vote, otherwise false * @param {string} username a user or anon user * @param {Date} endDate when the vote ends * @returns boolean */ async function verifyUser(username, endDate) { if (userIsAnon(username)) return false; // anons can never vote username = await resolveRenames(username); const earliestEditPredates = new Date(endDate); earliestEditPredates.setDate( earliestEditPredates.getDate() - FIRST_EDIT_PREDATES_VOTE_BY, ); // This API call already excludes transwiki contributions. const resp1 = await actionAPI.post({ action: "query", format: "json", list: "usercontribs", ucuser: username, uclimit: EDIT_COUNT_AT_LEAST, ucnamespace: ELIGIBLE_NAMESPACES, ucdir: "newer", }); const contribs = resp1.query.usercontribs; let total = contribs.length; let oldest = contribs[0] ? new Date(contribs[0].timestamp) : null; if (total >= EDIT_COUNT_AT_LEAST && oldest <= earliestEditPredates) return true; const resp2 = await actionAPI.post({ action: "query", format: "json", list: "alldeletedrevisions", adrlimit: EDIT_COUNT_AT_LEAST, adruser: username, adrnamespace: ELIGIBLE_NAMESPACES, adrdir: "newer", }); const deleted = resp2.query.alldeletedrevisions; total += deleted.length; if (deleted[0]) { let deletedOldest = new Date(deleted[0].timestamp); oldest = oldest ? new Date(Math.min(oldest.getTime(), deletedOldest.getTime())) : deletedOldest; } return total >= EDIT_COUNT_AT_LEAST && oldest && oldest <= earliestEditPredates; } /** * Returns true if cidr is undefined or in range [0, maxBits]. * @param {string|undefined} cidr * @param {number} maxBits * @returns {boolean} */ function isValidCidr(cidr, maxBits) { if (cidr === undefined) return true; let cidrNum = Number(cidr); return Number.isInteger(cidrNum) && cidrNum >= 0 && cidrNum <= maxBits; } /** * Validates IPv4 with optional CIDR suffix. * @param {string} candidate * @returns {boolean} */ function isValidIPv4(candidate) { if (!IPV4_REGEX.test(candidate)) return false; let [addr, cidr] = candidate.split("/"); let octets = addr.split(".").map(Number); let ipv4Valid = octets.length === 4 && octets.every((n) => Number.isInteger(n) && n >= 0 && n <= 255); return ipv4Valid && isValidCidr(cidr, 32); } /** * Validates IPv6 (full or compressed) with optional CIDR suffix. * @param {string} candidate * @returns {boolean} */ function isValidIPv6(candidate) { if (!IPV6_REGEX.test(candidate) || !candidate.includes(":")) return false; let [addr, cidr] = candidate.split("/"); if (!isValidCidr(cidr, 128)) return false; if (addr.includes(":::")) return false; if (addr.includes("::")) { if ((addr.match(/::/g) || []).length > 1) return false; let [left, right] = addr.split("::"); let leftParts = left ? left.split(":").filter(Boolean) : []; let rightParts = right ? right.split(":").filter(Boolean) : []; let hextets = leftParts.length + rightParts.length; let validParts = [...leftParts, ...rightParts].every((part) => /^[\da-f]{1,4}$/i.test(part), ); return validParts && hextets < 8; } let parts = addr.split(":"); return parts.length === 8 && parts.every((part) => /^[\da-f]{1,4}$/i.test(part)); } /** * Checks if a user is an IP/anon user, returning true if they are * @param {string} user * @returns {bool} */ function userIsAnon(user) { const normalized = user.trim(); if (TEMP_ACCT_REGEX.test(normalized)) return true; return isValidIPv4(normalized) || isValidIPv6(normalized); } // only fire on votes pages let pageName = mw.config.values.wgPageName; if ( pageName.startsWith("ဝိက်ရှေန်နရဳ:ဆန္ဒမာဲဂမၠိုၚ်/") || pageName.startsWith("ဝိက်ရှေန်နရဳ_ဓရီုကျာ:ဆန္ဒမာဲဂမၠိုၚ်/") ) { (async () => { // Step 1: find out when the vote ends let endDate; if (pageName.startsWith("ဝိက်ရှေန်နရဳ_ဓရီုကျာ:")) { let mainTitle = pageName.replace(/^ဝိက်ရှေန်နရဳ_ဓရီုကျာ:/, "ဝိက်ရှေန်နရဳ:"); let mainPageResp = await restAPI.get( `/v1/page/${mnwcodeURIComponent(mainTitle)}/html`, ); let mainPageDoc = new DOMParser().parseFromString( mainPageResp, "text/html", ); endDate = voteStart(mainPageDoc); } else { endDate = voteStart(document); } if (!(endDate instanceof Date) || isNaN(endDate)) { console.warn( "[vetvoters] Could not parse vote start date; skipping eligibility checks.", ); return; } // Step 2: collect user elements, including anons let userlinks = new Map(); // linkElem [HTMLElement] -> acctName [string] Object.entries(USER_LINK_PATTERNS).forEach(([selector, normalize]) => { document .querySelectorAll(selector) .forEach((link) => userlinks.set(link, normalize(link.title))); }); for (let link of document.querySelectorAll( `.mw-body-content [href^="//mnw.wiktionary.org/wiki/Special:Contributions/"]`, )) { let acct = link.title.replace(/^Special:Contributions\//, ""); if (!userIsAnon(acct)) continue; userlinks.set(link, acct); } let usernames = [...new Set(userlinks.values())]; let queries = usernames.map(async (user) => { try { return [user, await verifyUser(user, endDate)]; } catch (err) { console.warn( `[vetvoters] Failed to verify ${user}; treating as eligible.`, err, ); return [user, true]; } }); let userIsEligible = new Map(await Promise.all(queries)); for (let [elem, user] of userlinks) { if (userIsEligible.get(user) === false) highlightIneligible(elem); } })(); } a576h679vddv1j8sc5sz21lcfzte31g မဳဒဳယာဝဳကဳ:Gadget-RhymesAdder.js 8 296837 399051 2026-07-17T16:27:27Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "/* {{documentation}}<nowiki> Dependencies: ext.gadget.Editor,ext.gadget.LanguageUtils,mediawiki.util,mediawiki.Uri To do: * Make less ugly * Ability to remove/edit rhymes * Put rhyme template at the bottom of pronunciation section? * Add qualifier button */ /*jshint maxerr:1048576, strict:true, undef:true, latedef:true, es5:true */ /*global mw, WikiXml, importScript, importScriptURI, $ */ var numberOfRhymesAdded..." 399051 javascript text/javascript /* {{documentation}}<nowiki> Dependencies: ext.gadget.Editor,ext.gadget.LanguageUtils,mediawiki.util,mediawiki.Uri To do: * Make less ugly * Ability to remove/edit rhymes * Put rhyme template at the bottom of pronunciation section? * Add qualifier button */ /*jshint maxerr:1048576, strict:true, undef:true, latedef:true, es5:true */ /*global mw, WikiXml, importScript, importScriptURI, $ */ var numberOfRhymesAdded = 0; // Derived from [[User:Erutuon/scripts/templateParser.js]]. function parseTemplate(templateText) { var parameters = new Object(null), parameterRegex = /\|(?:([^=|}]+)=([^|}]+)|([^|}]+))/g, template = new Object(null); template.parameters = parameters; var match, index = 1, name = templateText.match(/^{{([^|}]+)/); if (name === null) throw new Error("Invalid template: no name."); template.name = name[1]; while ((match = parameterRegex.exec(templateText)) !== null) { if (match[1]) { parameters[match[1]] = match[2]; } else { parameters[index++] = match[3]; } } return template; } var monCardinalNumerals = [null, 'မွဲ', 'ၜါ', 'ပိ', 'ပန်', 'မသုန်', 'တရဴ', 'ထပှ်', 'ဒ္စာံ', 'ဒ္စိတ်', 'စှ်', 'စှ်မွဲ', 'စှ်ၜါ', 'စှ်ပိ', 'စှ်ပန်', 'စှ်သုန်', 'စှ်စှ်တရဴ', 'စှ်ထပှ်', 'စှ်ဒ္စာံ', 'စှ်ဒ္စိတ်', 'ၜါစှော်' ]; function extractNumberOfSyllables(h3text) { var m = h3text.match(/(\S+) syllables?/); if (!m) return null; var word = m[1]; var index = monCardinalNumerals.indexOf(word.toLowerCase()); return index > 0 ? index : null; } function hasRhymeTemplate(wikitext, languageCode, rhyme) { // [[Template:rhyme]] redirects to [[Template:rhymes]]. // Simple regex is sufficient because there are no cases of {{rhymes}} with // nested templates in the dump. (FIXME: Could change in the future.) var match, rhymeTemplate = /{{rhymes?\|.+?}}/g; while ((match = rhymeTemplate.exec(wikitext)) !== null) { var template = parseTemplate(match[0]); var templateLanguageCode = template.parameters.lang || template.parameters[1]; if (templateLanguageCode == languageCode) { for (var i = template.parameters.lang ? 1 : 2; template.parameters[i]; ++i) { if (template.parameters[i].trim() === rhyme) return true; } } } return false; } function setUpRhymeAdderFor(h3, div) { var findNumberOfHeaders = parseInt(new URL(h3.find("a").get(0).href).searchParams.get("section")); var addNewRhymeForm; var syllableCount = extractNumberOfSyllables(h3.text()); var syllableArg = syllableCount ? "|s=" + syllableCount : ""; editor = new Editor(); new AdderWrapper(editor, { 'createForm': function() { return addNewRhymeForm = $('<form>') .append( $('<label>+ဗပေၚ်စုတ်ကာရန်တၟိ: </label>') .append($('<input>').attr("name", 'rhyme')) ) .append($('<input>').attr('type', 'submit').val('Add'))[0]; }, 'fields': { 'rhyme': function(txt, error) { return txt || error('Please specify a rhyme.'); } }, 'onsubmit': function(values, render) { var langname = mw.config.get("wgTitle").split('/')[0]; var lutils = new LanguageUtilsAsync(); lutils.GetWiktionaryCodeByCanonicalName(langname).then(function(langcode) { $(addNewRhymeForm).find('input')[0].value = ""; var newItem = '{{l|' + langcode + '|' + values.rhyme + '}}'; render(newItem, function(newhtml) { var addedRhymeNode = $("<li>").html(newhtml), collator = window.Intl && new Intl.Collator( langcode, { "case": false } ), sortFunction = collator ? collator.compare : function compare( a, b ) { return a.toUpperCase() < b.toUpperCase() ? -1 : 1; }; editor.addEdit({ 'edit': function(wikitext) { var wikixml = WikiXml.parseWikitext(wikitext); var hdr = $(wikixml.find("section").get(findNumberOfHeaders - 1)); var headerData = hdr.find("data").get(0).textContent; var rhymelistbegin_match = headerData.match(/{{(?:rhyme-top|rhyme list begin)\|?[0-9]?}}/); var rhymelistbegin_index = rhymelistbegin_match.index + rhymelistbegin_match[0].length; var rhymelistend_match = headerData.match(/{{(?:rhyme-bottom|rhyme list end)}}/); var rhymelistend_index = rhymelistend_match.index; var rhymesPrefix = headerData.substring(0, rhymelistbegin_index); var rhymes = headerData.substring(rhymelistbegin_index, rhymelistend_index).trim().split(/\r?\n/); var rhymesSuffix = headerData.substring(rhymelistend_index); rhymes.push("* " + newItem); var canRearrange = true; var sortableLines = rhymes.map(function(line) { var m; m = line.match(/^\* ?{{l\|[a-zA-Z]{2,3}\|(.+)$/); if (m && m[1]) return [m[1], line]; m = line.match(/^\* ?\[\[(.+)$/); if (m && m[1]) return [m[1], line]; canRearrange = false; return null; }); console.trace("canRearrange is " + canRearrange); if (canRearrange) { sortableLines.sort( function(a,b) { return sortFunction(a[0], b[0]);} ); rhymes = sortableLines.map(function(sortableLine) { var match = sortableLine[1].match(/^\* ?\[\[(.+)]\]$/); if (match && match[1]) return "* {{l|" + langcode + "|" + match[1] + "}}"; else return sortableLine[1]; }); } $(hdr.find("data").get(0)).text(rhymesPrefix + "\n" + rhymes.join("\n") + "\n" + rhymesSuffix); return WikiXml.toWikitext(wikixml); }, 'redo': function() { div.find("ul").append(addedRhymeNode); div.find("li").sort(function(a, b) { return sortFunction( $(a).text(), $(b).text() ); }).appendTo(div.find("ul")); }, 'undo': function() { addedRhymeNode.remove(); }, 'summary': "+rhyme [[" + values.rhyme + "]]", 'after_save': function() { numberOfRhymesAdded++; document.body.style.cursor = 'wait'; new mw.Api().edit(values.rhyme, function(text) { text = text.content; var rhymehome = mw.config.get("wgTitle").split("/")[1]; if (hasRhymeTemplate(text, langcode, rhymehome)) { document.body.style.cursor = --numberOfRhymesAdded ? 'wait' : ''; return $.Deferred().reject('rhyme already on page'); } if (text.match('==' + langname + '==') && !text.match("\\{\\{rhymes?(\\|" + langcode + "\\|" + mw.util.escapeRegExp(rhymehome) + "|\\|" + mw.util.escapeRegExp(rhymehome) + "\\|" + langcode + "|\\|" + mw.util.escapeRegExp(rhymehome) + ")\\}\\}")) { // If the current L2 section does not contain a pronunciation section, create the header. if (!String(text.match("==" + langname + "==[\\s\\S]*?(\n==[^=]|$)")).match("=ဗွဟ်ရမ္သာၚ်=")) { text = text.replace(RegExp("(==" + langname + "==[\\s\\S]*?(?=\n=+(?=[^=])(?!(Etymology=|Alternative))))"), "$1\n===ဗွဟ်ရမ္သာၚ်===\n"); } // Add the rhymes template under the pronunciation header. text = text.replace( RegExp('(==' + langname + '==[\\s\\S]*?=+ဗွဟ်ရမ္သာၚ်=+[\\s\\S]*?\n(?![\:\*]))'), '$1* {{rhymes|' + langcode + "|" + rhymehome + syllableArg + '}}\n' ); } if (text) return { text: text, summary: "+rhyme [[" + mw.config.get("wgPageName") + "|" + "-" + rhymehome + "]]" }; else { document.body.style.cursor = --numberOfRhymesAdded ? 'wait' : ''; return $.Deferred().reject('problem text is false'); } }).then(function() { document.body.style.cursor = --numberOfRhymesAdded ? 'wait' : ''; }); } }, addedRhymeNode[ 0 ]); }); }); } }, h3.parent()[0], div[0]); } function setUpRhymeAdder() { $(".rhymes-list-begin").each(function() { var div = $(this); if (div.prev().text().indexOf("syllable") != -1) { try { setUpRhymeAdderFor(div.prev(), $(this)); } catch (e) { console.log(e); } } }); } if (mw.config.get('wgNamespaceNumber') === 106 && mw.config.get("wgAction") == "view") $.getScript("//en.wiktionary.org/w/index.php?title=User:Dixtosa/XMLize.js&action=raw", function() { $(setUpRhymeAdder); }); // </nowiki> pg62s5lek1ch5wop03agn69njszm18y မဳဒဳယာဝဳကဳ:Gadget-PatrollingEnhancements.js 8 296838 399052 2026-07-17T16:29:20Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "// {{documentation}} // ******** imported from [[MediaWiki:Gadget-LegacyScriptsNewNode.js]] ******** var newNode = window.newNode = function newNode(tagname) { var node = document.createElement(tagname); for (var i = 1; i < arguments.length; i++) { var argument = arguments[i]; if (typeof argument == 'string') { //Text node.appendChild(document.createTextNode(argument)); } else if (typeof argument == 'obje..." 399052 javascript text/javascript // {{documentation}} // ******** imported from [[MediaWiki:Gadget-LegacyScriptsNewNode.js]] ******** var newNode = window.newNode = function newNode(tagname) { var node = document.createElement(tagname); for (var i = 1; i < arguments.length; i++) { var argument = arguments[i]; if (typeof argument == 'string') { //Text node.appendChild(document.createTextNode(argument)); } else if (typeof argument == 'object') { if (argument instanceof Node) { // If it is a DOM Node node.appendChild(argument); } else { // Attributes (hopefully) for (var j in argument) { if (j === 'class') { // Classname different because... node.className = argument[j]; } else if (j == 'style') { // Style is special node.style.cssText = argument[j]; } else if (typeof argument[j] == 'function') { // Basic event handlers node.addEventListener(j, argument[j], false); } else { node.setAttribute(j, argument[j]); //Normal attributes } } } } } return node; }; // **************************************************************************** (function PatrollingEnhancements_IIFE() { window.GPE = typeof window.GPE == 'object' ? window.GPE : {}; const GPE = window.GPE; /* </pre> ==Configuration options== <pre> */ // The initial value to put in the "deletion reason" text-field; you can // override this in your common.js (or vector.js or whatnot). GPE.initialDeleteReason = GPE.initialDeleteReason == undefined ? '' : GPE.initialDeleteReason; // The value to use as a deletion reason if you leave the text-field blank; you // can override it in your common.js (or vector.js or whatnot). If you *don't* // override this, then MediaWiki will generate an automatic deletion reason that // indicates the entry's last editor and the beginning of its content. GPE.deleteReasonIfBlank = GPE.deleteReasonIfBlank == undefined ? '' : GPE.deleteReasonIfBlank; // By DCDuring's request. If you set this to true, then Special:Watchlist will // show the deletion-reason text-input, but *not* the deletion-reason dropdown, // when there's an unpatrolled new-page-creation. GPE.hideDeleteReasonDropdownOnWatchlist = GPE.hideDeleteReasonDropdownOnWatchlist == undefined ? false : GPE.hideDeleteReasonDropdownOnWatchlist; /* </pre> ==Automated patrolling (whitelisting)== <pre> */ // set GPE.currMonth and GPE.lastMonth (in the form of, e.g., '2013/February') ( function () { var monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; var now = new Date(); var currYear = now.getFullYear(); var currMonthNum = now.getMonth(); GPE.currMonth = currYear + '/' + monthNames[currMonthNum]; var lastYear = (currMonthNum == 0 ? currYear - 1 : currYear); var lastMonthNum = (currMonthNum == 0 ? 11 : currMonthNum - 1); GPE.lastMonth = lastYear + '/' + monthNames[lastMonthNum]; } )(); GPE.individualWhiteListedPages = { "Wiktionary:Requests for cleanup": true, "Wiktionary:Requests for verification": true, "Wiktionary:Requests for deletion": true, "Wiktionary:Requests for deletion/Others": true, "Wiktionary:Requests for moves, mergers and splits": true, "Wiktionary:Information desk": true, "Wiktionary:Tea room": true, "Wiktionary:Etymology scriptorium": true, "Wiktionary:Requested entries (English)": true, "Wiktionary:Requested entries (Spanish)": true, "Wiktionary:List of protologisms": true, "Wiktionary:Translation requests": true, "Wiktionary:Feedback": true, "Wiktionary:Sandbox": true, "Wiktionary talk:Sandbox": true, "Wiktionary:Tutorial (Editing)/sandbox": true, "Wiktionary:Featured word candidates": true, "Wiktionary:Word of the day/Nominations": true }; GPE.individualWhiteListedPages["Wiktionary:Beer parlour/" + GPE.currMonth] = GPE.individualWhiteListedPages["Wiktionary:Beer parlour/" + GPE.lastMonth] = GPE.individualWhiteListedPages["Wiktionary:Grease pit/" + GPE.currMonth] = GPE.individualWhiteListedPages["Wiktionary:Grease pit/" + GPE.lastMonth] = true; // per-user white-listed sub-pages (for example, edits by user Foo // to User:Foo/vector.js should be autopatrolled): GPE.perUserWhiteListedSubPages = { "/Sandbox": true, "/sandbox": true, "/chick.js": true, "/chick.css": true, "/standard.js": true, "/standard.css": true, "/cologneblue.js": true, "/cologneblue.css": true, "/modern.js": true, "/modern.css": true, "/myskin.js": true, "/myskin.css": true, "/nostalgia.js": true, "/nostalgia.css": true, "/simple.js": true, "/simple.css": true, "/vector.js": true, "/vector.css": true, "/common.js": true, "/common.css": true }; GPE.individualWhiteListedContributors = { }; GPE.shouldAutoPatrol = function(link) { var pagename = link.title; if(pagename.indexOf('User talk:') == 0) return true; if(pagename in GPE.individualWhiteListedPages) return true; var contributor; if(mediaWiki.config.get('wgCanonicalSpecialPageName') === 'Contributions') { contributor = document.getElementById('t-contributions') .getElementsByTagName('a')[0].href.replace(/.*\//, ''); } else { var li = link.parentNode; if(li.tagName.toUpperCase() == 'SPAN') li = li.parentNode; var links = li.getElementsByTagName('a'); for(var i = 0; i < links.length; ++i) if(links[i].title.indexOf('Special:Contributions/') == 0) { contributor = links[i].title.substr('Special:Contributions/'.length); break; } } if(pagename.indexOf('User:' + contributor + '/') == 0) if(pagename.substr(contributor.length + 5) in GPE.perUserWhiteListedSubPages) return true; if(contributor in GPE.individualWhiteListedContributors) return true; return false; }; /* </pre> ==Utility functions== <pre> */ GPE.newButton = function(text, color, hoverText) { var button = newNode('button', text); button.style.background = color; button.style.color = '#FFF'; button.style.border = '0'; button.style.padding = '0'; button.style.cursor = 'pointer'; button.title = hoverText; return button; }; GPE.disableButton = function(button, text, hoverText) { button.onclick = null; button.title = (hoverText || ''); button.innerHTML = text; // clear out explicit styling and disable, so we can get appropriate // disabled-button styles: button.style.background = ''; button.style.color = ''; button.style.cursor = ''; button.disabled = 'disabled'; }; /* </pre> ==Individual patrol-buttons== <pre> */ GPE.addPatrolButton = function(link, rcid) { if(link.className.search(/(?:^|\s)gpe-hasPatrolButton(?:\s|$)/) > -1) return; link.className = (link.className + ' gpe-hasPatrolButton').trim(); var button = GPE.newButton('M', '#009', 'click to mark as patrolled'); link.parentNode.insertBefore(button, link.nextSibling); link.parentNode.insertBefore(document.createTextNode(' · '), button); button.onclick = function () { var token = mediaWiki.user.tokens.get('patrolToken'); $.post ( '/w/api.php?format=json&action=patrol&assert=user', { token: token, rcid: rcid }, function (data) { if(data.patrol) GPE.disableButton(button, 'm', 'marked as patrolled'); else if(data.error) { var msg = data.error.code + ': ' + data.error.info; if(data.error.code == 'badtoken') msg += ': "' + token + '"'; alert(msg); } }, 'json' ); }; if(GPE.shouldAutoPatrol(link)) button.click(); // remove the exclamation point: var tmp = link; while(tmp && tmp.nodeName.toUpperCase() !== 'LI') tmp = tmp.parentNode; if(tmp) tmp = tmp.getElementsByClassName('unpatrolled')[0]; if(tmp) tmp.parentNode.removeChild(tmp); }; /* </pre> ==Individual delete-buttons== <pre> */ GPE.addDeleteButton = function(link, title) { if(link.className.search(/(?:^|\s)gpe-hasDeleteButton(?:\s|$)/) > -1) return; link.className = (link.className + ' gpe-hasDeleteButton').trim(); var button = GPE.newButton('D', '#900', 'click to delete'); link.parentNode.insertBefore(button, link.nextSibling); link.parentNode.insertBefore(document.createTextNode(' · '), button); button.onclick = function () { var dropdownReason = document.getElementById('deleteReasonsDropdown') ? document.getElementById('deleteReasonsDropdown').value : ''; if(dropdownReason == 'other') dropdownReason = ''; var textInputReason = document.getElementById('deleteReasonTextInput').value; var reason; if(dropdownReason.length && textInputReason.length) reason = dropdownReason + ': ' + textInputReason; else if(dropdownReason.length || textInputReason.length) reason = dropdownReason + textInputReason; else reason = GPE.deleteReasonIfBlank; var token = mediaWiki.user.tokens.get('deleteToken'); $.post ( '/w/api.php?format=json&action=delete&assert=user', { title: title, token: token, reason: reason }, function (data) { if(data['delete']) GPE.disableButton(button, 'd', 'deleted'); else if(data.error) { var msg = data.error.code + ': ' + data.error.info; if(data.error.code == 'badtoken') msg += ': "' + token + '"'; alert(msg); } }, 'json' ); }; }; /* </pre> ==Delete-reasons== <pre> */ GPE.addDeleteReasonInput = function () { var deleteReasonDiv = ( newNode ( 'div', { style: 'background:#900; color:#FFF; ' + 'position:fixed; bottom:0; right:0; margin-bottom:0' }, '\u00A0Deletion reason:\u00A0' ) ); deleteReasonDiv.title = 'the deletion reason (message/summary) to use when you click "D"'; var deleteReasonTextInput = ( newNode ( 'input', { type: 'text', size: 80, id: 'deleteReasonTextInput', value: GPE.initialDeleteReason, style: 'position:fixed; right:0; margin-bottom:0' } ) ); deleteReasonDiv.appendChild(deleteReasonTextInput); document.getElementById('bodyContent').appendChild(deleteReasonDiv); if(GPE.hideDeleteReasonDropdownOnWatchlist) if(mediaWiki.config.get('wgPageName') == 'Special:Watchlist') return; // get canned messages from [[MediaWiki:Deletereason-dropdown]]: $.getJSON ( '/w/api.php?format=json&action=query&meta=allmessages&ammessages=Deletereason-dropdown', function (data) { var rawDeleteReasons = data.query.allmessages[0]['*']; var deleteReasonsDropdown = newNode('select', { id: 'deleteReasonsDropdown', style: 'vertical-align: bottom' }); deleteReasonsDropdown.appendChild (newNode('option', { value: 'other' }, 'Other reason')); var optGroup = deleteReasonsDropdown; rawDeleteReasons.replace ( /^(\*\*?) *(.+)$/gm, function (s, asterisks, text) { if(asterisks == '*') deleteReasonsDropdown.appendChild (optGroup = newNode('optgroup', { label: text })); else // '**' optGroup.appendChild(newNode('option', { value: text }, text)); } ); deleteReasonDiv.insertBefore(deleteReasonsDropdown, deleteReasonTextInput); deleteReasonDiv.insertBefore(newNode('br'), deleteReasonTextInput); deleteReasonDiv.insertBefore(document.createTextNode('\u00A0'), deleteReasonTextInput); } ); }; /* </pre> ==Namespaces== <pre> */ GPE.computeNamespaces = function (selected, includeAssociated, invertSelection) { var associated = Number(selected) + (selected % 2 === 0 ? 1 : -1); if(invertSelection) { var selector = document.getElementById('namespace'); if(! selector) return []; var ret = []; for(var option = selector.firstChild; option; option = option.nextSibling) if(option.nodeName.toUpperCase() === 'OPTION' && option.value) if(option.value != selected) if(! includeAssociated || option.value != associated) ret.push(option.value); return ret; } else { if(includeAssociated) return [selected, associated]; else return [selected]; } }; GPE.generateRcnamespace = function () { var currUrl = document.location.href; if(! /[?&]namespace=\d+(?:&|$)/.test(currUrl)) return; var selected = /[?&]namespace=(\d+)(?:&|$)/.exec(currUrl)[1]; var includeAssociated = mediaWiki.config.get('wgPageName') !== 'Special:NewPages' && /[?&]associated=(?!0?&|0?$)/.test(currUrl); var invertSelection = /[?&]invert=(?!0?&|0?$)/.test(currUrl); var namespaces = GPE.computeNamespaces(selected, includeAssociated, invertSelection); if(namespaces.length > 0) return namespaces.join('|'); }; /* </pre> ==Find and handle links== <pre> */ GPE.handleUnpatrolledEdits = function (rcidsByRevid) { var links = document.getElementById('bodyContent').getElementsByTagName('a'); for(var i = links.length - 1; i >= 0; --i) { var mapKey = /&diff=(prev&oldid=)?(\d+)(&|$)/.exec(links[i].href); if(mapKey && rcidsByRevid.hasOwnProperty(mapKey[2])) GPE.addPatrolButton(links[i], rcidsByRevid[mapKey[2]]); } }; GPE.findLinksToUnpatrolledNewPages = function (rcidsByTitle) { if(mediaWiki.config.get('wgPageName') === 'Special:NewPages') { var ret = []; $('li.not-patrolled a.mw-newpages-pagename').each(function () { if (this.title && rcidsByTitle.hasOwnProperty(this.title)) ret.push(this); }); return ret; } else { var ret = []; var abbrs = document.getElementById('bodyContent').getElementsByTagName('abbr'); for(var i = abbrs.length - 1; i >= 0; --i) { if(abbrs[i].className != 'newpage') continue; var link = abbrs[i]; while(link && link.nodeName.toUpperCase() != 'A') if(link.nodeName.toUpperCase() === 'SPAN' && link.className === 'mw-title') link = link.firstChild; else link = link.nextSibling; if(link && link.title && rcidsByTitle.hasOwnProperty(link.title)) ret.push(link); } return ret; } }; GPE.handleUnpatrolledNewPages = function (rcidsByTitle) { var userIsSysop = mediaWiki.config.get('wgUserGroups').indexOf('sysop') > -1; var links = GPE.findLinksToUnpatrolledNewPages(rcidsByTitle); for(var i = links.length - 1; i >= 0; --i) { var link = links[i]; // 2016-04: Equinox removing red D delete button because it hasn't worked for a year. // if(userIsSysop) // GPE.addDeleteButton(link, link.title); GPE.addPatrolButton(link, rcidsByTitle[link.title]); } // Remove the rest of the delete features as above // if(userIsSysop && links.length > 0) // { // GPE.getAndStoreDeleteToken(); // GPE.addDeleteReasonInput(); // } }; GPE.getAndStoreDeleteToken = function () { $.getJSON ( '/w/api.php?format=json&action=tokens&type=delete', function (data) { var token = data.tokens.deletetoken; if(! token || token.search(/^[0-9a-f]{32}\+\\$/) != 0) return; mediaWiki.user.tokens.set('deleteToken', token); } ); }; GPE.main = function (params) { var url = '/w/api.php?format=json&action=query&list=recentchanges' + '&rcprop=ids|title' + '&rcshow=!patrolled' + (params.hasOwnProperty('rcshow') ? '|' + params.rcshow : '') + '&rclimit=' + (params.hasOwnProperty('rclimit') ? params.rclimit : 500) + '&rctype=' + (params.hasOwnProperty('rctype') ? params.rctype : 'edit|new') + (params.hasOwnProperty('rcdir') ? '&rcdir=' + params.rcdir : '') + (params.hasOwnProperty('rcstart') ? '&rcstart=' + params.rcstart : '') + (params.hasOwnProperty('rcnamespace') ? '&rcnamespace=' + params.rcnamespace : '') + (params.hasOwnProperty('rcuser') ? '&rcuser=' + params.rcuser : ''); $.getJSON ( url, function (data) { data = data.query.recentchanges; var rcidsByRevid = {}; // for unpatrolled edits var rcidsByTitle = {}; // for unpatrolled new pages for(var i = 0; i < data.length; ++i) if(data[i].type == 'edit') rcidsByRevid[data[i].revid] = data[i].rcid; else rcidsByTitle[data[i].title] = data[i].rcid; GPE.handleUnpatrolledEdits(rcidsByRevid); GPE.handleUnpatrolledNewPages(rcidsByTitle); } ); }; /* </pre> ==Onload-hooks== <pre> */ $( document ).ready ( function () { if(mediaWiki.config.get('wgPageName') === 'Special:RecentChanges') { var currUrl = document.location.href; var params = {}; var rcshow = []; if(currUrl.search(/[?&]hideliu=(?!0?$|0?&)/) > -1) rcshow.push('anon'); else if(currUrl.search(/[?&]hideanons=(?!0?$|0?&)/) > -1) rcshow.push('!anon'); if(document.getElementsByClassName('minoredit').length === 0) rcshow.push('!minor'); if(rcshow.length > 0) params.rcshow = rcshow.join('|'); var rcnamespace = GPE.generateRcnamespace(); if(rcnamespace) params.rcnamespace = rcnamespace; GPE.main(params); } else if(mediaWiki.config.get('wgPageName') === 'Special:NewPages') { var currUrl = document.location.href; var params = { rctype: 'new' }; var rcshow = []; if(currUrl.search(/[?&]hideliu=(?!0?$|0?&)/) > -1) rcshow.push('anon'); if(currUrl.search(/[?&]hideredirs=0?(?:$|&)/) === -1) rcshow.push('!redirect'); if(rcshow.length > 0) params.rcshow = rcshow.join('|'); if(currUrl.search(/[?&]dir=prev(?=$|&)/) > -1) { params.rcdir = 'newer'; if(currUrl.search(/[?&]offset=\d+(?=$|&)/) > -1) params.rcstart = currUrl.match(/[?&]offset=(\d+)(?=$|&)/)[1]; } var rcnamespace = GPE.generateRcnamespace(); if(rcnamespace) params.rcnamespace = rcnamespace; GPE.main(params); } else if(mediaWiki.config.get('wgPageName') === 'Special:Watchlist') { var params = {}; var rcnamespace = GPE.generateRcnamespace(); if(rcnamespace) params.rcnamespace = rcnamespace; // TODO is this the best way to find what we need for the watchlist? GPE.main(params); } else if(mediaWiki.config.get('wgPageName').search(/^Special:Contributions(\/|$)/) === 0) GPE.main({ rcuser: document.getElementById('t-contributions').firstChild.href.replace(/^.*?\/Special:Contributions\//, '') }); else if(mediaWiki.config.get('wgAction') === 'markpatrolled' || mediaWiki.config.get('wgAction') === 'delete' || mediaWiki.config.get('wgAction') === 'rollback') GPE.main({ rclimit: 15 }); } ); })(); g9g0tszn8uzicki57h3lrynnuqr2imv မဳဒဳယာဝဳကဳ:Gadget-PatrollingEnhancements.js/documentation 8 296839 399053 2026-07-17T16:30:14Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly>" 399053 wikitext text/x-wiki {{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly> nh2z4mxstdhoy5k1d14op93dv5v8194 မဳဒဳယာဝဳကဳ:Gadget-Edittools.css 8 296840 399054 2026-07-17T16:33:42Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "/* CSS borrowed from Wikipedia's [[w:MediaWiki:Gadget-charinsert-styles.css]]. */ .charinserter { /*background-color: #f9f9f9;*/ /*border: 1px solid #ddd;*/ padding: 1px 4px; }" 399054 css text/css /* CSS borrowed from Wikipedia's [[w:MediaWiki:Gadget-charinsert-styles.css]]. */ .charinserter { /*background-color: #f9f9f9;*/ /*border: 1px solid #ddd;*/ padding: 1px 4px; } bksa5383zgxhkcuw7l53pphz0jvw3mm မဳဒဳယာဝဳကဳ:Gadget-UnsupportedTitles.js 8 296841 399055 2026-07-17T16:37:08Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "/* To get template for titleTag.textContent, process MediaWiki:pagetitle, open your browser's JavaScript console on a Wiktionary page and run this code: ((msg) => new mw.Api().getMessages(msg).then((messages) => { mw.messages.set(messages); const titleTemplate = new mw.Message(mw.messages, msg, ["$1"]).text(); const { before, after } = /^(?<before>.*)\$1(?<after>.*)/.exec(titleTemplate).groups; console.log(JS..." 399055 javascript text/javascript /* To get template for titleTag.textContent, process MediaWiki:pagetitle, open your browser's JavaScript console on a Wiktionary page and run this code: ((msg) => new mw.Api().getMessages(msg).then((messages) => { mw.messages.set(messages); const titleTemplate = new mw.Message(mw.messages, msg, ["$1"]).text(); const { before, after } = /^(?<before>.*)\$1(?<after>.*)/.exec(titleTemplate).groups; console.log(JSON.stringify(before), JSON.stringify(after)) }) .fail(console.error))("pagetitle") We can do this for action=edit and action=submit by replacing "pagetitle" with "editing" in this snippet. */ function setTitle(newTitle) { // Set title tag, which determines the title shown in the browser. var titleTag = document.getElementsByTagName('title')[0]; titleTag.textContent = newTitle + " - Wiktionary, the free dictionary"; // Set the text of the first heading above the page content. document.getElementById('firstHeading').textContent = newTitle; } var UnsupportedTitlesJson = require('./UnsupportedTitles.json'); var prettyPageName = mw.config.get('wgPageName').replace(/_/g, ' '); function generateCharacterToEscapeMap() { var map = {}; Object.entries(UnsupportedTitlesJson.UnsupportedCharacterEscapes).forEach(function(entry) { map[entry[1]] = entry[0]; }); return map; } // Helper function accessible from other scripts function convertUnsupportedTitle(originalTitle) { originalTitle = originalTitle.replaceAll("_", " "); var match = /^(?:Talk:)?Unsupported titles\/(.+)$/.exec(originalTitle); var newTitle; if (match) { var subpage = match && match[1]; newTitle = UnsupportedTitlesJson.UnsupportedTitles[subpage] || subpage.replace(/`([^`]+)`/g, function(wholeMatch, key) { const character = UnsupportedTitlesJson.UnsupportedCharacterEscapes[key]; return character != null ? character : key; }); } else { newTitle = UnsupportedTitlesJson.TitleDisplay[originalTitle]; } if (mw.config.get('wgCanonicalNamespace') == 'ဓရီုကျာ') newTitle = 'Talk:' + newTitle; return newTitle } window.convertUnsupportedTitle = convertUnsupportedTitle; /* * On subpages of Unsupported titles and Talk:Unsupported titles, show the * correct title in the header at the top of the page. For instance, on the page * [[Unsupported titles/Left curly bracket]], show the title {. * * This is not enabled in the mobile version of the site. * * For all such pages, see [[Special:PrefixIndex/Unsupported titles]]. */ if (mw.config.get('wgAction') === 'view' && (/^(?:Talk:)?Unsupported titles\//.test(prettyPageName) || UnsupportedTitlesJson.TitleDisplay.hasOwnProperty(prettyPageName))) { $(function() { try { setTitle(convertUnsupportedTitle(prettyPageName)); } catch (e) { console.log('Error while changing title: ' + e.message + '.'); } }); } /* * This redirects a user to the correct Unsupported titles page if they attempt * to access an invalid title. For instance, if you attempt to access the page * for < * https://en.wiktionary.org/wiki/%3C * you will be redirected to * https://en.wiktionary.org/wiki/Unsupported_titles/Less_than */ if (mw.config.get('wgCanonicalSpecialPageName') == 'Badtitle') { // Avoid redirecting twice or more. Set this parameter after redirecting // and don't redirect if it is already set. const alreadyRedirectedParam = "UnsupportedTitleRedirected"; /* * Generate the name of the page that the user attempted to access using * either the portion of the URL after "/wiki/" or the value of the "title" * parameter in the query. That is, the user is accessing the page using * either the path /wiki/<invalid title> or a path similar to * /w/index.php?title=<invalid title>. * * The actual page displayed if a user attempts to access an invalid title * is the special page with the canonical title [[Special:Badtitle]]. */ if (!mw.util.getParamValue(alreadyRedirectedParam)) { var rxArticlePath = new RegExp('^' + mw.config.get('wgArticlePath').replace('$1', '(.*)') + '$'); var m = rxArticlePath.exec(location.pathname); var title = m ? decodeURIComponent(m[1]) : mw.util.getParamValue('title'); const characterToEscapeMap = generateCharacterToEscapeMap(); var badTitleSubpage = title.replace(/./g, function (fullMatch) { var escapeName = characterToEscapeMap[fullMatch]; return escapeName != null ? '`' + escapeName + '`' : fullMatch; }); if (badTitleSubpage != title) { const url = new URL(location.href); const newTitle = 'Unsupported titles/' + badTitleSubpage; if (url.searchParams.get("title")) { url.searchParams.set("title", newTitle); } else { url.pathname = mw.util.getUrl(newTitle); } url.searchParams.set(alreadyRedirectedParam, "1"); location.href = url; } } } 2vh54g4hyqculiwti4tr4b56uuslw38 မဳဒဳယာဝဳကဳ:Gadget-UnsupportedTitles.json 8 296842 399056 2026-07-17T16:38:21Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{ "UnsupportedCharacterEscapes": { "grave": "`", "num": "#", "repl": "�", "percnt": "%", "tilde": "~", "rcub": "}", "amp": "\u0026", "vert": "|", "lcub": "{", "lsqb": "[", "gt": "\u003E", "rsqb": "]", "lt": "\u003C", "lowbar": "_", "period": "." }, "UnsupportedTitles": { "": "", "Space": "[space]", "Cifrão": "[Cifrão]", "Ogham space": "[Ogham space]", "Old Israeli shekel"..." 399056 json application/json { "UnsupportedCharacterEscapes": { "grave": "`", "num": "#", "repl": "�", "percnt": "%", "tilde": "~", "rcub": "}", "amp": "\u0026", "vert": "|", "lcub": "{", "lsqb": "[", "gt": "\u003E", "rsqb": "]", "lt": "\u003C", "lowbar": "_", "period": "." }, "UnsupportedTitles": { "": "", "Space": "[space]", "Cifrão": "[Cifrão]", "Ogham space": "[Ogham space]", "Old Israeli shekel": "[Old Israeli shekel]", "Ancient Greek dish": "λοπαδο­τεμαχο­σελαχο­γαλεο­κρανιο­λειψανο­δριμυ­ποτριμματο­σιλφιο­καραβο­μελιτο­κατακεχυμενο­κιχλε­πικοσσυφο­φαττο­περιστερα­λεκτρυο­νοπτο­κεφαλλιο­κιγκλο­πελειο­λαγῳο­σιραιο­βαφητραγανοπτερύγων", "Thai name of Bangkok": "กรุงเทพมหานคร อมรรัตนโกสินทร์ มหินทรายุธยา มหาดิลกภพ นพรัตนราชธานีบูรีรมย์ อุดมราชนิเวศน์มหาสถาน อมรพิมานอวตารสถิต สักกะทัตติยวิษณุกรรมประสิทธิ์" }, "TitleDisplay": { "⌛": "⌛︎", "⏩": "⏩︎", "⏪": "⏪︎", "☕": "☕︎", "♀": "♀︎", "♂": "♂︎", "♈": "♈︎", "♉": "♉︎", "♊": "♊︎", "♋": "♋︎", "♌": "♌︎", "♍": "♍︎", "♎": "♎︎", "♏": "♏︎", "♐": "♐︎", "♑": "♑︎", "♒": "♒︎", "♓": "♓︎", "♿": "♿︎", "⚓": "⚓︎", "⚡": "⚡︎", "⚪": "⚪︎", "⚫": "⚫︎", "⚽": "⚽︎", "⛎": "⛎︎", "⛔": "⛔︎", "⛳": "⛳︎", "⛺": "⛺︎", "⛽": "⛽︎", "✊": "✊︎", "✋": "✋︎", "✍": "✍︎", "✨": "✨︎", "➿": "➿︎", "🆎": "🆎︎", "🆑": "🆑︎", "🆒": "🆒︎", "🆓": "🆓︎", "🆔": "🆔︎", "🆕": "🆕︎", "🆖": "🆖︎", "🆗": "🆗︎", "🆘": "🆘︎", "🆙": "🆙︎", "🈁": "🈁︎", "🈚": "🈚︎", "🈯": "🈯︎", "🈲": "🈲︎", "🈳": "🈳︎", "🈴": "🈴︎", "🈵": "🈵︎", "🈶": "🈶︎", "🉐": "🉐︎", "🌀": "🌀︎", "🌈": "🌈︎", "🌐": "🌐︎", "🌑": "🌑︎", "🌒": "🌒︎", "🌓": "🌓︎", "🌔": "🌔︎", "🌕": "🌕︎", "🌖": "🌖︎", "🌗": "🌗︎", "🌘": "🌘︎", "🌙": "🌙︎", "🌞": "🌞︎", "🌠": "🌠︎", "🌮": "🌮︎", "🌲": "🌲︎", "🌹": "🌹︎", "🌽": "🌽︎", "🍀": "🍀︎", "🍁": "🍁︎", "🍅": "🍅︎", "🍆": "🍆︎", "🍇": "🍇︎", "🍉": "🍉︎", "🍋": "🍋︎", "🍌": "🍌︎", "🍑": "🍑︎", "🍒": "🍒︎", "🍔": "🍔︎", "🍟": "🍟︎", "🍤": "🍤︎", "🍪": "🍪︎", "🍴": "🍴︎", "🍼": "🍼︎", "🍿": "🍿︎", "🎂": "🎂︎", "🎃": "🎃︎", "🎄": "🎄︎", "🎅": "🎅︎", "🎉": "🎉︎", "🎓": "🎓︎", "🎠": "🎠︎", "🎡": "🎡︎", "🎢": "🎢︎", "🎤": "🎤︎", "🎥": "🎥︎", "🎨": "🎨︎", "🎩": "🎩︎", "🎭": "🎭︎", "🎲": "🎲︎", "🎵": "🎵︎", "🏁": "🏁︎", "🏠": "🏠︎", "🐀": "🐀︎", "🐁": "🐁︎", "🐎": "🐎︎", "🐐": "🐐︎", "🐘": "🐘︎", "🐙": "🐙︎", "🐦": "🐦︎", "🐱": "🐱︎", "🐾": "🐾︎", "👀": "👀︎", "👂": "👂︎", "👃": "👃︎", "👆": "👆︎", "👇": "👇︎", "👊": "👊︎", "👋": "👋︎", "👌": "👌︎", "👍": "👍︎", "👎": "👎︎", "👏": "👏︎", "👑": "👑︎", "👤": "👤︎", "👥": "👥︎", "👴": "👴︎", "👵": "👵︎", "👹": "👹︎", "👼": "👼︎", "👽": "👽︎", "👾": "👾︎︎", "👿": "👿︎︎", "💀": "💀︎", "💅": "💅︎", "💉": "💉︎", "💊": "💊︎", "💍": "💍︎", "💎": "💎︎", "💓": "💓︎", "💔": "💔︎", "💕": "💕︎", "💖": "💖︎", "💙": "💙︎", "💚": "💚︎", "💛": "💛︎", "💜": "💜︎", "💝": "💝︎", "💞": "💞︎", "💠": "💠︎", "💡": "💡︎", "💢": "💢︎", "💣": "💣︎", "💤": "💤︎", "💥": "💥︎", "💦": "💦︎", "💧": "💧︎", "💨": "💨︎", "💩": "💩︎", "💪": "💪︎", "💫": "💫︎", "💬": "💬︎", "💭": "💭︎", "💮": "💮︎", "💯": "💯︎", "💱": "💱︎", "💳": "💳︎", "💸": "💸︎", "💼": "💼︎", "💾": "💾︎", "📅": "📅︎", "📈": "📈︎", "📉": "📉︎", "📋": "📋︎", "📌": "📌︎", "📍": "📍︎", "📎": "📎︎", "📖": "📖︎", "📚": "📚︎", "📝": "📝︎", "📞": "📞︎", "📠": "📠︎", "📢": "📢︎", "📣": "📣︎", "📰": "📰︎", "📲": "📲︎", "🔀": "🔀︎", "🔁": "🔁︎", "🔂": "🔂︎", "🔃": "🔃︎", "🔄": "🔄︎", "🔅": "🔅︎", "🔆": "🔆︎", "🔇": "🔇︎", "🔈": "🔈︎", "🔋": "🔋︎", "🔍": "🔍︎", "🔎": "🔎︎", "🔑": "🔑︎", "🔒": "🔒︎", "🔓": "🔓︎", "🔔": "🔔︎", "🔕": "🔕︎", "🔗": "🔗︎", "🔘": "🔘︎", "🔙": "🔙︎", "🔚": "🔚︎", "🔛": "🔛︎", "🔜": "🔜︎", "🔝": "🔝︎", "🔞": "🔞︎", "🔥": "🔥︎", "🔧": "🔧︎", "🔪": "🔪︎", "🔫": "🔫︎", "🔬": "🔬︎", "🔭": "🔭︎", "🔰": "🔰︎", "🔴": "🔴︎", "🔵": "🔵︎", "🔻": "🔻︎", "🕎": "🕎︎", "🖕": "🖕︎", "🖤": "🖤︎", "🗽": "🗽︎", "🗿": "🗿︎", "😀": "😀︎", "😁": "😁︎", "😂": "😂︎", "😃": "😃︎", "😄": "😄︎", "😅": "😅︎", "😆": "😆︎", "😇": "😇︎", "😈": "😈︎", "😉": "😉︎", "😊": "😊︎", "😋": "😋︎", "😌": "😌︎", "😍": "😍︎", "😎": "😎︎", "😏": "😏︎", "😐": "😐︎", "😔": "😔︎", "😕": "😕︎", "😗": "😗︎", "😙": "😙︎", "😚": "😚︎", "😛": "😛︎", "😜": "😜︎", "😝": "😝︎", "😠": "😠︎", "😡": "😡︎", "😤": "😤︎", "😩": "😩︎", "😫": "😫︎", "😬": "😬︎", "😭": "😭︎", "😮": "😮︎", "😱": "😱︎", "😳": "😳︎", "😶": "😶︎", "😸": "😸︎", "😺": "😺︎", "🙃": "🙃︎", "🙄": "🙄︎", "🙈🙉🙊": "🙈︎🙉︎🙊︎", "🙌": "🙌︎", "🙏": "🙏︎", "🚀": "🚀︎", "🚂": "🚂︎", "🚥": "🚥︎", "🚦": "🚦︎", "🚧": "🚧︎", "🚨": "🚨︎", "🚩": "🚩︎", "🚬": "🚬︎", "🚮": "🚮︎", "🚰": "🚰︎", "🚲": "🚲︎", "🚴": "🚴︎", "🚶": "🚶︎", "🚹": "🚹︎", "🚺": "🚺︎", "🚻": "🚻︎", "🚼": "🚼︎", "🚽": "🚽︎", "🚾": "🚾︎", "🚿": "🚿︎", "🛂": "🛂︎", "🛃": "🛃︎", "🛄": "🛄︎", "🛅": "🛅︎", "🛌": "🛌︎", "🛑": "🛑︎", "🛒": "🛒︎", "🛗": "🛗︎", "🛜": "🛜︎", "🛝": "🛝︎", "🛫": "🛫︎", "🛬": "🛬︎", "🟠": "🟠︎", "🟡": "🟡︎", "🟢": "🟢︎", "🟣": "🟣︎", "🟤": "🟤︎", "🤏": "🤏︎", "🤑": "🤑︎", "🤒": "🤒︎", "🤓": "🤓︎", "🤔": "🤔︎", "🤕": "🤕︎", "🤖": "🤖︎", "🤗": "🤗︎", "🤝": "🤝︎", "🤟": "🤟︎", "🤡": "🤡︎", "🤢": "🤢︎", "🤣": "🤣︎", "🤦": "🤦︎", "🤧": "🤧︎", "🤩": "🤩︎", "🤫": "🤫︎", "🤬": "🤬︎", "🤮": "🤮︎", "🤯": "🤯︎", "🥀": "🥀︎", "🥇": "🥇︎", "🥚": "🥚︎", "🥛": "🥛︎", "🥜": "🥜︎", "🥱": "🥱︎", "🥲": "🥲︎", "🥴": "🥴︎", "🥵": "🥵︎", "🥶": "🥶︎", "🥷": "🥷︎", "🥹": "🥹︎", "🥺": "🥺︎", "🥽": "🥽︎", "🦀": "🦀︎", "🦅": "🦅︎", "🦎": "🦎︎", "🦴": "🦴︎", "🦽": "🦽︎", "🧏": "🧏︎", "🧠": "🧠︎", "🧢": "🧢︎", "🧩": "🧩︎", "🧵": "🧵︎", "🧷": "🧷︎", "🧸": "🧸︎", "🧹": "🧹︎", "🩵": "🩵︎", "🩶": "🩶︎", "🩸": "🩸︎", "🪐": "🪐︎", "🪑": "🪑︎", "🪢": "🪢︎", "🪦": "🪦︎", "🪩": "🪩︎", "🪫": "🪫︎", "🪾": "🪾︎", "🫂": "🫂︎", "🫡": "🫡︎", "🫣": "🫣︎", "🫰": "🫰︎", "🫵": "🫵︎", "🫶": "🫶︎" } } aqsryl8nqgv36ixkm84l85nnsl1j9sy မဳဒဳယာဝဳကဳ:Gadget-Site.js 8 296843 399057 2026-07-17T16:41:53Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "// This gadget contains code that will run unconditionally for everyone - both on mobile and desktop. // Consider instead adding your code to [[MediaWiki:Common.js]], [[MediaWiki:Mobile.js]], or a gadget. // <nowiki> const pageName = mw.config.get("wgPageName"); const ns = mw.config.get("wgNamespaceNumber"); /* ***** Page-specific code ***** */ switch (pageName) { case "ဝိက်ရှေန်နရဳ:မု..." 399057 javascript text/javascript // This gadget contains code that will run unconditionally for everyone - both on mobile and desktop. // Consider instead adding your code to [[MediaWiki:Common.js]], [[MediaWiki:Mobile.js]], or a gadget. // <nowiki> const pageName = mw.config.get("wgPageName"); const ns = mw.config.get("wgNamespaceNumber"); /* ***** Page-specific code ***** */ switch (pageName) { case "ဝိက်ရှေန်နရဳ:မုက်လိက်တမ်": // [[Wiktionary:Main_Page]] // Workaround for [[phab:T335552]]. document.querySelector(".mw-searchInput").autocapitalize = "off"; break; case "Wiktionary:Gadget_preferences": // [[Wiktionary:Gadget_preferences]] if (mw.config.get("wgAction") === "view") importScript("MediaWiki:WiktGadgetPrefsPage.js"); // [[MediaWiki:WiktGadgetPrefsPage.js]] break; case "MediaWiki:Gadgets-definition": // [[MediaWiki:Gadgets-definition]] importScript("MediaWiki:BetterGadgetsDefinition.js"); // [[MediaWiki:BetterGadgetsDefinition.js]] break; case "Special:Search": // [[Special:Search]] importScript("MediaWiki:FindTrans.js"); // [[MediaWiki:FindTrans.js]] break; case "Wiktionary:Fonts/list": // [[Wiktionary:Fonts/list]] if (mw.config.get("wgAction") === "view") importScript("MediaWiki:InteractiveFontList.js"); // [[MediaWiki:InteractiveFontList.js]] break; case "Wiktionary:Tracking": importScript("MediaWiki:BrowseTrackingCats.js"); // [[MediaWiki:BrowseTrackingCats.js]] } if ( document.querySelector(".mw-parser-output p:first-of-type") && [ "Module:languages/code_to_canonical_name", "Module:languages/canonical_names", "Module:etymology_languages/code_to_canonical_name", "Module:etymology_languages/canonical_names", "Module:families/code_to_canonical_name", "Module:families/canonical_names", "Module:scripts/code_to_canonical_name", "Module:scripts/canonical_names", "Module:Hani-sortkey/data/serialized", ].some(title => pageName.startsWith(title)) ) importScript("MediaWiki:UpdateLanguageNameAndCode.js"); // [[MediaWiki:UpdateLanguageNameAndCode.js]] /* ***** Append #English to all links in definition sense lines ***** */ // Run this code in the main or Reconstruction namespaces, // and on the Main Page (for WOTD and FWOTD), // and in the Appendix namespace when there is a lemma or non-lemma form category. if (!window.noDefinitionLineFragmentAddition && (ns === 0 || ns === 118 || pageName === "ဝိက်ရှေန်နရဳ:မုက်လိက်တမ်" || (ns === 100 && document.querySelector("#catlinks [href$=lemmas], #catlinks [href$=non-lemma_forms]")) ) ) { // Look for links inside a numbered list (<ol> tag). // Must use [lang|=en] rather than :lang(en) because, at least in Firefox, // :lang(en) always matches wherever it is put in a selector // because all text is within <html lang="en">. for (const elem of document.querySelectorAll(".mw-parser-output ol a:not(.mw-parser-output [lang] a), .mw-parser-output ol [lang|=en] a")) { // Only append to local existing main-namespace links without an existing anchor const href = elem.getAttribute("href"); if (href && !/[#?:]/.test(href) && href[1] !== "/") elem.href += "#English"; } } /* ***** New entry wizard ***** */ if (document.getElementById("necplaceholder")) importScript("MediaWiki:NewEntryWizard.js"); // [[MediaWiki:NewEntryWizard.js]] /* ***** Hide certain parts of the page from Google snippets ***** */ // Not sure whether this is working... for (const elem of document.querySelectorAll(".mw-editsection, #toc, #catlinks")) { elem.setAttribute("data-nosnippet", ""); if (navigator.userAgent.toLowerCase().includes("googlebot")) elem.style.display = "none"; } /* ***** Clean up category pages showing "0 c" or "0 e", e.g. [[Category:Pages with entries]] ***** */ for (const elem of document.querySelectorAll(".CategoryTreeItem bdi + span")) elem.textContent = elem.textContent .replace(/\b0 c, /, "") .replace(/, 0 e\b/, "") .replace(/\(0 c\)/, "(0 e)"); /* ***** Template gadget for [[Module:UnitTests]]: e.g. [[Module:vi/testcases]] ***** */ for (const corner of document.querySelectorAll(".unit-tests .unit-tests-img-corner")) corner.addEventListener("click", () => corner.closest(".unit-tests").classList.toggle("unit-tests-hide-passing")); /* ***** WikiHiero kludge: see [[phab:T210695]] ***** */ if (document.querySelector(".mw-hiero-outer")) importScript("MediaWiki:WikiHieroTempFix.js"); // [[MediaWiki:WikiHieroTempFix.js]] /* ***** `#new-section-redirect` changes the URL for "Add topic" (e.g. for [[Wiktionary:Beer parlour]]) ***** */ const newSectionRedirect = document.querySelector("#new-section-redirect a"); const newSectionButton = document.querySelector("#ca-addsection:is(a), #ca-addsection a"); if (newSectionRedirect && newSectionButton) newSectionButton.href = newSectionRedirect.href; // </nowiki> 9lhz0vylo18kr3f57rt7wwkfultwity 399058 399057 2026-07-17T16:43:51Z 咽頭べさ 33 399058 javascript text/javascript // This gadget contains code that will run unconditionally for everyone - both on mobile and desktop. // Consider instead adding your code to [[MediaWiki:Common.js]], [[MediaWiki:Mobile.js]], or a gadget. // <nowiki> const pageName = mw.config.get("wgPageName"); const ns = mw.config.get("wgNamespaceNumber"); /* ***** Page-specific code ***** */ switch (pageName) { case "ဝိက်ရှေန်နရဳ:မုက်လိက်တမ်": // [[Wiktionary:Main_Page]] // Workaround for [[phab:T335552]]. document.querySelector(".mw-searchInput").autocapitalize = "off"; break; case "Wiktionary:Gadget_preferences": // [[Wiktionary:Gadget_preferences]] if (mw.config.get("wgAction") === "view") importScript("MediaWiki:WiktGadgetPrefsPage.js"); // [[MediaWiki:WiktGadgetPrefsPage.js]] break; case "MediaWiki:Gadgets-definition": // [[MediaWiki:Gadgets-definition]] importScript("MediaWiki:BetterGadgetsDefinition.js"); // [[MediaWiki:BetterGadgetsDefinition.js]] break; case "Special:Search": // [[Special:Search]] importScript("MediaWiki:FindTrans.js"); // [[MediaWiki:FindTrans.js]] break; case "Wiktionary:Fonts/list": // [[Wiktionary:Fonts/list]] if (mw.config.get("wgAction") === "view") importScript("MediaWiki:InteractiveFontList.js"); // [[MediaWiki:InteractiveFontList.js]] break; case "Wiktionary:Tracking": importScript("MediaWiki:BrowseTrackingCats.js"); // [[MediaWiki:BrowseTrackingCats.js]] } if ( document.querySelector(".mw-parser-output p:first-of-type") && [ "Module:languages/code_to_canonical_name", "Module:languages/canonical_names", "Module:etymology_languages/code_to_canonical_name", "Module:etymology_languages/canonical_names", "Module:families/code_to_canonical_name", "Module:families/canonical_names", "Module:scripts/code_to_canonical_name", "Module:scripts/canonical_names", "Module:Hani-sortkey/data/serialized", ].some(title => pageName.startsWith(title)) ) importScript("MediaWiki:UpdateLanguageNameAndCode.js"); // [[MediaWiki:UpdateLanguageNameAndCode.js]] /* ***** Append #English to all links in definition sense lines ***** */ // Run this code in the main or Reconstruction namespaces, // and on the Main Page (for WOTD and FWOTD), // and in the Appendix namespace when there is a lemma or non-lemma form category. if (!window.noDefinitionLineFragmentAddition && (ns === 0 || ns === 118 || pageName === "ဝိက်ရှေန်နရဳ:မုက်လိက်တမ်" || (ns === 100 && document.querySelector("#catlinks [href$=ဝေါဟာအဓိက], #catlinks [href$=ဗီုပြၚ်အပြံၚ်အလှာဲ]")) ) ) { // Look for links inside a numbered list (<ol> tag). // Must use [lang|=en] rather than :lang(en) because, at least in Firefox, // :lang(en) always matches wherever it is put in a selector // because all text is within <html lang="en">. for (const elem of document.querySelectorAll(".mw-parser-output ol a:not(.mw-parser-output [lang] a), .mw-parser-output ol [lang|=en] a")) { // Only append to local existing main-namespace links without an existing anchor const href = elem.getAttribute("href"); if (href && !/[#?:]/.test(href) && href[1] !== "/") elem.href += "#English"; } } /* ***** New entry wizard ***** */ if (document.getElementById("necplaceholder")) importScript("MediaWiki:NewEntryWizard.js"); // [[MediaWiki:NewEntryWizard.js]] /* ***** Hide certain parts of the page from Google snippets ***** */ // Not sure whether this is working... for (const elem of document.querySelectorAll(".mw-editsection, #toc, #catlinks")) { elem.setAttribute("data-nosnippet", ""); if (navigator.userAgent.toLowerCase().includes("googlebot")) elem.style.display = "none"; } /* ***** Clean up category pages showing "0 c" or "0 e", e.g. [[Category:Pages with entries]] ***** */ for (const elem of document.querySelectorAll(".CategoryTreeItem bdi + span")) elem.textContent = elem.textContent .replace(/\b0 c, /, "") .replace(/, 0 e\b/, "") .replace(/\(0 c\)/, "(0 e)"); /* ***** Template gadget for [[Module:UnitTests]]: e.g. [[Module:vi/testcases]] ***** */ for (const corner of document.querySelectorAll(".unit-tests .unit-tests-img-corner")) corner.addEventListener("click", () => corner.closest(".unit-tests").classList.toggle("unit-tests-hide-passing")); /* ***** WikiHiero kludge: see [[phab:T210695]] ***** */ if (document.querySelector(".mw-hiero-outer")) importScript("MediaWiki:WikiHieroTempFix.js"); // [[MediaWiki:WikiHieroTempFix.js]] /* ***** `#new-section-redirect` changes the URL for "Add topic" (e.g. for [[Wiktionary:Beer parlour]]) ***** */ const newSectionRedirect = document.querySelector("#new-section-redirect a"); const newSectionButton = document.querySelector("#ca-addsection:is(a), #ca-addsection a"); if (newSectionRedirect && newSectionButton) newSectionButton.href = newSectionRedirect.href; // </nowiki> nrtygedo2vuqmf57qf00pwbv8mweqjf မဳဒဳယာဝဳကဳ:Gadget-ShowIDs-pagestyles.css 8 296844 399059 2026-07-17T16:44:51Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု ".senseid, .etymid, .senseid-displayed, .etymid-displayed { --id-border: var(--wikt-palette-blue-6); --id-background: var(--wikt-palette-blue-1); --id-background-target: var(--wikt-palette-blue-4); } .etymonid, .etymonid-displayed { --id-border: var(--wikt-palette-red-6); --id-background: var(--wikt-palette-red-1); --id-background-target: var(--wikt-palette-red-4); } .etymid, .etymonid { margin-left: 0; paddi..." 399059 css text/css .senseid, .etymid, .senseid-displayed, .etymid-displayed { --id-border: var(--wikt-palette-blue-6); --id-background: var(--wikt-palette-blue-1); --id-background-target: var(--wikt-palette-blue-4); } .etymonid, .etymonid-displayed { --id-border: var(--wikt-palette-red-6); --id-background: var(--wikt-palette-red-1); --id-background-target: var(--wikt-palette-red-4); } .etymid, .etymonid { margin-left: 0; padding: 0 !important; display: inline; } .senseid-displayed, .etymid-displayed, .etymonid-displayed, .senseid::before, .etymid::before, .etymonid::before { border: 1px solid var(--id-border); background: var(--id-background); color: var(--wikt-palette-black); border-radius: 5px; font-size: 90%; margin-right: 0.1em; padding: 0.2em !important; content: attr(data-id); } .senseid-displayed:target, .etymid-displayed:target, .etymonid-displayed:target, .senseid:target .senseid-displayed, .etymid:target .etymid-displayed, .etymonid:target .etymonid-displayed, .senseid:target::before, .etymid:target::before, .etymonid:target::before { background: var(--id-background-target); font-weight: 600; } .senseid:not([data-id])::before, .etymid:not([data-id])::before, .etymonid:not([data-id])::before, .senseid[data-id=""]::before, .etymid[data-id=""]::before, .etymonid[data-id=""]::before { content: none !important; display: none !important; } 9c32gfnz5l4kzwwbspg704ebxwivhou ထာမ်ပလိက်:shortcut/documentation 10 296845 399061 2026-07-17T16:49:56Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{uses lua|Module:shortcut box}} This template displays the list of shortcuts for a page. To use this template, pass the page names of the shortcuts as numbered parameters. Multiple comma-separated shortcuts can be included in a single numbered parameter as long as there isn't a space after the comma. Shortcuts in the template space can omit the {{cd|Template:}} prefix. Template shortcuts are..." 399061 wikitext text/x-wiki {{documentation subpage}} {{uses lua|Module:shortcut box}} This template displays the list of shortcuts for a page. To use this template, pass the page names of the shortcuts as numbered parameters. Multiple comma-separated shortcuts can be included in a single numbered parameter as long as there isn't a space after the comma. Shortcuts in the template space can omit the {{cd|Template:}} prefix. Template shortcuts are rendered with the double-brace syntax, as shown: {| | {{temp|shortcut|l}} || &rarr; || {{shortcut|l|demo=1}} |} {| | {{temp|shortcut|altsp,alt sp,alt sp of,alt spell,alt spelling of}} || &rarr; || {{shortcut|altsp,alt sp,alt sp of,alt spell,alt spelling of|demo=1}} |} {| | {{temp|shortcut|CAT:E|CAT:ERR|CAT:ERROR}} || &rarr; || {{shortcut|CAT:E|CAT:ERR|CAT:ERROR|demo=1}} |} The template checks whether the shortcuts exist and point back to the transcluding page. If they do not, the page is placed in [[:Category:Shortcut boxes needing attention]]. <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်စရၚ်မချူသမ္တီလဝ်ဂမၠိုၚ်]] [[ကဏ္ဍ:မုက်လိက်ဝိက်ရှေန်နရဳနွံဂၠံၚ်ကရတ်ဂမၠိုၚ်|*]] </includeonly> kfh3kary1p1k78mnz54w3w3tk2lstdm ထာမ်ပလိက်:el-nN-ι-ια-2b 10 296846 399062 2026-07-17T16:54:06Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "<includeonly>{{el-decl-noun |1={{{1}}}ι |2={{{1}}}ια |3={{{2}}}ιού |4={{{2}}}ιών |5={{{1}}}ι |6={{{1}}}ια |7={{{1}}}ι |8={{{1}}}ια |note={{{note|}}} }}{{#if:{{NAMESPACE}}|| }}</includeonly><noinclude> The inflection-table template for Greek nouns declining like '''{{m|el|κορίτσι}}'''. Other examples may be found in the [[:Category:Greek nouns declining like 'κορίτσι']]. The syntax <code><..." 399062 wikitext text/x-wiki <includeonly>{{el-decl-noun |1={{{1}}}ι |2={{{1}}}ια |3={{{2}}}ιού |4={{{2}}}ιών |5={{{1}}}ι |6={{{1}}}ια |7={{{1}}}ι |8={{{1}}}ια |note={{{note|}}} }}{{#if:{{NAMESPACE}}|| }}</includeonly><noinclude> The inflection-table template for Greek nouns declining like '''{{m|el|κορίτσι}}'''. Other examples may be found in the [[:Category:Greek nouns declining like 'κορίτσι']]. The syntax <code><nowiki>{{el-nN-ι-ια-2b|κορίτσ|κοριτσ}}</nowiki></code> produces the table: {{el-nN-ι-ια-2b|κορίτσ|κοριτσ}} A full list of other declension-table templates with a brief indication of use can be found at '''[[Wiktionary:Greek noun inflection-table templates]]'''. {{tcat|ndecl}} </noinclude> r3jzdrraltd08ld0tj9f047fqqvyj9q κραββάτιον 0 296847 399063 2026-07-17T16:56:04Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ဂရေတ်တြေံ== ===နာမ်=== {{head|grc|နာမ်}} # {{alt form|grc|κράββατος}}" 399063 wikitext text/x-wiki ==ဂရေတ်တြေံ== ===နာမ်=== {{head|grc|နာမ်}} # {{alt form|grc|κράββατος}} pvnjnpdip6rorvwjc2jjp5fd5975krz κρεβάτιον 0 296848 399064 2026-07-17T16:56:27Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ဂရေတ်တြေံ== ===နာမ်=== {{head|grc|နာမ်}} # {{alt form|grc|κράββατος}}" 399064 wikitext text/x-wiki ==ဂရေတ်တြေံ== ===နာမ်=== {{head|grc|နာမ်}} # {{alt form|grc|κράββατος}} pvnjnpdip6rorvwjc2jjp5fd5975krz κρεβάτια 0 296849 399065 2026-07-17T16:57:58Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ဂရေတ်== ===နာမ်=== {{head|el|nounf|g=f}} # {{inflection of|el|κρεβάτι||nom|p}} # {{inflection of|el|κρεβάτι||acc|p}} # {{inflection of|el|κρεβάτι||voc|p}}" 399065 wikitext text/x-wiki ==ဂရေတ်== ===နာမ်=== {{head|el|nounf|g=f}} # {{inflection of|el|κρεβάτι||nom|p}} # {{inflection of|el|κρεβάτι||acc|p}} # {{inflection of|el|κρεβάτι||voc|p}} hfnm5a7ma1g463tluep2vd3p214lclu κρεββάτι 0 296850 399066 2026-07-17T16:59:34Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ဂရေတ်== ===နာမ်=== {{head|el|နာမ်}} # {{alt form|el|κρεβάτι}}" 399066 wikitext text/x-wiki ==ဂရေတ်== ===နာမ်=== {{head|el|နာမ်}} # {{alt form|el|κρεβάτι}} oyisaus2zb2oeukcfq6jfhix94ocryg кревети 0 296851 399067 2026-07-17T17:02:05Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==မက်သဳဒဝ်နဳယျာ== ===ဗွဟ်ရမ္သာၚ်=== * {{mk-IPA}} ===နာမ်=== {{head|mk|noun form}} # {{infl of|mk|кревет||indf|pl}}" 399067 wikitext text/x-wiki ==မက်သဳဒဝ်နဳယျာ== ===ဗွဟ်ရမ္သာၚ်=== * {{mk-IPA}} ===နာမ်=== {{head|mk|noun form}} # {{infl of|mk|кревет||indf|pl}} i116i7gy8ymvavjg0xwt9vftxtfpxdp креветен 0 296852 399068 2026-07-17T17:04:49Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==မက်သဳဒဝ်နဳယျာ== ===ဗွဟ်ရမ္သာၚ်=== * {{mk-IPA}} ===နာမဝိသေသန=== {{mk-adj|-}} # မဆေၚ်စပ်ကဵုဖုန်သ္ကိက်။ ====လဟုတ်စှ်ေ==== {{mk-decl-adj|креветн|fe=1}}" 399068 wikitext text/x-wiki ==မက်သဳဒဝ်နဳယျာ== ===ဗွဟ်ရမ္သာၚ်=== * {{mk-IPA}} ===နာမဝိသေသန=== {{mk-adj|-}} # မဆေၚ်စပ်ကဵုဖုန်သ္ကိက်။ ====လဟုတ်စှ်ေ==== {{mk-decl-adj|креветн|fe=1}} re0htwpz0stnl3e2aj6kbq1mm4xdnet ထာမ်ပလိက်:mk-decl-adj 10 296853 399069 2026-07-17T17:06:02Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{mk-decl-adj-table{{#if:{{{c|}}}|-full}}<!-- -->|ind_m={{pagename}}<!-- -->|def_unsp_m={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иот<!-- -->|def_prox_m={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иов<!-- -->|def_dist_m={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ион<!-- -->|ind_f={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}а<!-- -->|def_unsp_f={{#if:{{{1|}}}|{{{1}}}|..." 399069 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{mk-decl-adj-table{{#if:{{{c|}}}|-full}}<!-- -->|ind_m={{pagename}}<!-- -->|def_unsp_m={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иот<!-- -->|def_prox_m={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иов<!-- -->|def_dist_m={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ион<!-- -->|ind_f={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}а<!-- -->|def_unsp_f={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ата<!-- -->|def_prox_f={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ава<!-- -->|def_dist_f={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ана<!-- -->|ind_n={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}о<!-- -->|def_unsp_n={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ото<!-- -->|def_prox_n={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ово<!-- -->|def_dist_n={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}оно<!-- -->|ind_pl={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}и<!-- -->|def_unsp_pl={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ите<!-- -->|def_prox_pl={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иве<!-- -->|def_dist_pl={{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ине<!-- -->|c_ind_m={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{pagename}}|}}}}<!-- -->|c_def_unsp_m={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иот|}}}}<!-- -->|c_def_prox_m={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иов|}}}}<!-- -->|c_def_dist_m={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ион|}}}}<!-- -->|c_ind_f={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}а|}}}}<!-- -->|c_def_unsp_f={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ата|}}}}<!-- -->|c_def_prox_f={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ава|}}}}<!-- -->|c_def_dist_f={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ана|}}}}<!-- -->|c_ind_n={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}о|}}}}<!-- -->|c_def_unsp_n={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ото|}}}}<!-- -->|c_def_prox_n={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ово|}}}}<!-- -->|c_def_dist_n={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}оно|}}}}<!-- -->|c_ind_pl={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}и|}}}}<!-- -->|c_def_unsp_pl={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ите|}}}}<!-- -->|c_def_prox_pl={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иве|}}}}<!-- -->|c_def_dist_pl={{#if:{{{nocomp|}}}||{{#if:{{{c|}}}|по{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ине|}}}}<!-- -->|s_ind_m={{#if:{{{c|}}}|нај{{pagename}}|}}<!-- -->|s_def_unsp_m={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иот|}}<!-- -->|s_def_prox_m={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иов|}}<!-- -->|s_def_dist_m={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ион|}}<!-- -->|s_ind_f={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}а|}}<!-- -->|s_def_unsp_f={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ата|}}<!-- -->|s_def_prox_f={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ава|}}<!-- -->|s_def_dist_f={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ана|}}<!-- -->|s_ind_n={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}о|}}<!-- -->|s_def_unsp_n={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ото|}}<!-- -->|s_def_prox_n={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ово|}}<!-- -->|s_def_dist_n={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}оно|}}<!-- -->|s_ind_pl={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}и|}}<!-- -->|s_def_unsp_pl={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ите|}}<!-- -->|s_def_prox_pl={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}иве|}}<!-- -->|s_def_dist_pl={{#if:{{{c|}}}|нај{{#if:{{{1|}}}|{{{1}}}|{{pagename}}}}ине|}}<!-- -->}}<!-- -->{{#if:{{{fa|}}}| |}}<!-- -->{{#if:{{{fe|}}}| |}}<!-- -->{{#if:{{{fo|}}}| |}}<!-- -->{{#if:{{{ft|}}}| |}}<!-- --><noinclude>{{documentation}}</noinclude> jdgg5icwmm3k1cg07k15pvp0sjzijcg ထာမ်ပလိက်:mk-decl-adj/documentation 10 296854 399070 2026-07-17T17:08:30Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template provides the inflection of most Macedonian adjectives, including most irregular ones. ==Parameters== ; <code>1=</code> : The stem. If there is a fleeting vowel, one should indicate the contracted stem as used before vowel-initial endings, e.g. "добр" for "{{m|mk|добар|tr=-}}". If there is no fleeting vowel, nothing needs to be indicated, as for "{{m|mk|зрел|tr=-}}"..." 399070 wikitext text/x-wiki {{documentation subpage}} This template provides the inflection of most Macedonian adjectives, including most irregular ones. ==Parameters== ; <code>1=</code> : The stem. If there is a fleeting vowel, one should indicate the contracted stem as used before vowel-initial endings, e.g. "добр" for "{{m|mk|добар|tr=-}}". If there is no fleeting vowel, nothing needs to be indicated, as for "{{m|mk|зрел|tr=-}}". If the masculine singular indefinite ends in -и, as in "{{m|mk|градски|tr=-}}", the stem without the -и needs to be indicated. ; <code>c=1</code> : Used to generate comparative and superlative forms for adjectives which have them. It should not be used for most relational adjectives, which are not comparable due to the nature of their meaning. In the absence of this parameter, only positive forms will be generated. ; <code>nocomp=1</code> : Used in conjunction with <code>c=1</code> to generate superlative forms without comparative ones, as needed for adjectives such as "{{m|mk|заден|tr=-}}" and "{{m|mk|последен|tr=-}}". ; <code>fa=1</code> : Places the adjective in [[:Category:Macedonian adjectives with a fleeting а]]. ; <code>fe=1</code> : Places the adjective in [[:Category:Macedonian adjectives with a fleeting е]]. ; <code>fo=1</code> : Places the adjective in [[:Category:Macedonian adjectives with a fleeting о]]. ; <code>ft=1</code> : Places the adjective in [[:Category:Macedonian adjectives with a fleeting т]]. <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမဝိသေသနဂမၠိုၚ်|*]] </includeonly> 1qsmuewlvydtermwwugkqqsm38mgix1 ထာမ်ပလိက်:mk-decl-adj-table 10 296855 399071 2026-07-17T17:14:22Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{inflection-table-top|palette=amber|title={{#if:{{{title|}}}|{{{title}}}|{{#if:{{NAMESPACE}}||မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{m|mk||{{pagename}}|tr=-}}}}}}|tall=yes}} ! ! ပုလ္လိၚ် ! ဣတ္တိလိၚ် ! နပုလ္လိၚ် ! ကိုန်ဗဟုဝစ် |- ! ဟွံချိုတ်ပၠိုတ် | {{#if:{{{ind_m|}}}|{{l-self|mk|{{{ind_m}}}}}..." 399071 wikitext text/x-wiki {{inflection-table-top|palette=amber|title={{#if:{{{title|}}}|{{{title}}}|{{#if:{{NAMESPACE}}||မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{m|mk||{{pagename}}|tr=-}}}}}}|tall=yes}} ! ! ပုလ္လိၚ် ! ဣတ္တိလိၚ် ! နပုလ္လိၚ် ! ကိုန်ဗဟုဝစ် |- ! ဟွံချိုတ်ပၠိုတ် | {{#if:{{{ind_m|}}}|{{l-self|mk|{{{ind_m}}}}}|&mdash;}} | {{#if:{{{ind_f|}}}|{{l-self|mk|{{{ind_f}}}|accel-form=indef{{!}}f{{!}}sg}}|&mdash;}} | {{#if:{{{ind_n|}}}|{{l-self|mk|{{{ind_n}}}|accel-form=indef{{!}}n{{!}}sg}}|&mdash;}} | {{#if:{{{ind_pl|}}}|{{l-self|mk|{{{ind_pl}}}|accel-form=indef{{!}}pl}}|&mdash;}} |- ! ပရေၚ်ဟွံစၟတ်သမ္တီမချိုတ်ပၠိုတ် | {{#if:{{{def_unsp_m|}}}|{{l-self|mk|{{{def_unsp_m}}}|accel-form=unspecified{{!}}def{{!}}m{{!}}sg}}|&mdash;}} | {{#if:{{{def_unsp_f|}}}|{{l-self|mk|{{{def_unsp_f}}}|accel-form=unspecified{{!}}def{{!}}f{{!}}sg}}|&mdash;}} | {{#if:{{{def_unsp_n|}}}|{{l-self|mk|{{{def_unsp_n}}}|accel-form=unspecified{{!}}def{{!}}n{{!}}sg}}|&mdash;}} | {{#if:{{{def_unsp_pl|}}}|{{l-self|mk|{{{def_unsp_pl}}}|accel-form=unspecified{{!}}def{{!}}pl}}|&mdash;}} |- ! ပရေၚ်ကြပ်မချိုတ်ပၠိုတ် | {{#if:{{{def_prox_m|}}}|{{l-self|mk|{{{def_prox_m}}}|accel-form=prox{{!}}def{{!}}m{{!}}sg}}|&mdash;}} | {{#if:{{{def_prox_f|}}}|{{l-self|mk|{{{def_prox_f}}}|accel-form=prox{{!}}def{{!}}f{{!}}sg}}|&mdash;}} | {{#if:{{{def_prox_n|}}}|{{l-self|mk|{{{def_prox_n}}}|accel-form=prox{{!}}def{{!}}n{{!}}sg}}|&mdash;}} | {{#if:{{{def_prox_pl|}}}|{{l-self|mk|{{{def_prox_pl}}}|accel-form=prox{{!}}def{{!}}pl}}|&mdash;}} |- ! ကြပ်သ္ၚောဲမချိုတ်ပၠိုတ် | {{#if:{{{def_dist_m|}}}|{{l-self|mk|{{{def_dist_m}}}|accel-form=distal{{!}}def{{!}}m{{!}}sg}}|&mdash;}} | {{#if:{{{def_dist_f|}}}|{{l-self|mk|{{{def_dist_f}}}|accel-form=distal{{!}}def{{!}}f{{!}}sg}}|&mdash;}} | {{#if:{{{def_dist_n|}}}|{{l-self|mk|{{{def_dist_n}}}|accel-form=distal{{!}}def{{!}}n{{!}}sg}}|&mdash;}} | {{#if:{{{def_dist_pl|}}}|{{l-self|mk|{{{def_dist_pl}}}|accel-form=distal{{!}}def{{!}}pl}}|&mdash;}} {{inflection-table-bottom}}<!-- --><noinclude>{{documentation}}</noinclude> al6v70t5scpga8i98xvcv7vorq0z4ed ထာမ်ပလိက်:mk-decl-adj-table/documentation 10 296856 399072 2026-07-17T17:15:38Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{isAccelerated}} This template is used as a helper to create declension templates for Macedonian adjectives. It should only be used by other templates, not in entries directly. <includeonly> ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမဝိသေသနဂမၠိုၚ်|..." 399072 wikitext text/x-wiki {{documentation subpage}} {{isAccelerated}} This template is used as a helper to create declension templates for Macedonian adjectives. It should only be used by other templates, not in entries directly. <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမဝိသေသနဂမၠိုၚ်| ]] </includeonly> lxnped65nrb5x41yqkhicizqt8r4tra ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမဝိသေသနဂမၠိုၚ် 14 296857 399073 2026-07-17T17:17:14Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမဝိသေသနဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|မ]]" 399073 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမဝိသေသနဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|မ]] 4rnr10dvfqsxkvl9f84tlujplus50a8 креветче 0 296858 399074 2026-07-17T17:20:44Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==မက်သဳဒဝ်နဳယျာ== ===ဗွဟ်ရမ္သာၚ်=== * {{mk-IPA}} ===နာမ်=== {{mk-noun|n}} # {{diminutive of|mk|кревет}} ====လဟုတ်စှ်ေ==== {{mk-decl-noun-n-е-иња|креветч}}" 399074 wikitext text/x-wiki ==မက်သဳဒဝ်နဳယျာ== ===ဗွဟ်ရမ္သာၚ်=== * {{mk-IPA}} ===နာမ်=== {{mk-noun|n}} # {{diminutive of|mk|кревет}} ====လဟုတ်စှ်ေ==== {{mk-decl-noun-n-е-иња|креветч}} qe8kyh92rejap33j2etcz75rm14eeaa ထာမ်ပလိက်:mk-decl-noun-n-е-иња 10 296859 399075 2026-07-17T17:21:33Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{mk-decl-noun-table{{#if:{{{n|}}}|-single}}<!-- -->|n={{{n|}}}<!-- -->|ind_sg={{#if:{{{1|}}}|{{{1}}}е|{{pagename}}}}<!-- -->|def_unsp_sg={{#if:{{{1|}}}|{{{1}}}ето|{{pagename}}то}}<!-- -->|def_prox_sg={{#if:{{{1|}}}|{{{1}}}ево|{{pagename}}во}}<!-- -->|def_dist_sg={{#if:{{{1|}}}|{{{1}}}ено|{{pagename}}но}}<!-- -->|voc_sg={{#if:{{{1|}}}|{{{1}}}е|{{pagename}}}}<!-- -->|ind_pl={{#if:{{{1|}}}|{{{1}}}ињ..." 399075 wikitext text/x-wiki {{mk-decl-noun-table{{#if:{{{n|}}}|-single}}<!-- -->|n={{{n|}}}<!-- -->|ind_sg={{#if:{{{1|}}}|{{{1}}}е|{{pagename}}}}<!-- -->|def_unsp_sg={{#if:{{{1|}}}|{{{1}}}ето|{{pagename}}то}}<!-- -->|def_prox_sg={{#if:{{{1|}}}|{{{1}}}ево|{{pagename}}во}}<!-- -->|def_dist_sg={{#if:{{{1|}}}|{{{1}}}ено|{{pagename}}но}}<!-- -->|voc_sg={{#if:{{{1|}}}|{{{1}}}е|{{pagename}}}}<!-- -->|ind_pl={{#if:{{{1|}}}|{{{1}}}иња|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}иња}}<!-- -->|def_unsp_pl={{#if:{{{1|}}}|{{{1}}}ињата|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}ињата}}<!-- -->|def_prox_pl={{#if:{{{1|}}}|{{{1}}}ињава|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}ињава}}<!-- -->|def_dist_pl={{#if:{{{1|}}}|{{{1}}}ињана|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}ињана}}<!-- -->|voc_pl={{#if:{{{1|}}}|{{{1}}}иња|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}иња}}<!-- -->}}<!-- -->{{#ifeq:{{{n}}}|sg|| }}<!-- -->{{#ifeq:{{{n|}}}|sg| |}}<!-- --><noinclude>{{documentation}}</noinclude> ixiilwfs9tv3y6lcp944232yrkkf8qe ထာမ်ပလိက်:mk-decl-noun-n-е-иња/documentation 10 296860 399076 2026-07-17T17:22:53Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template provides the inflection of Macedonian neuter nouns that end in {{m|mk||-е|tr=-}} and form the plural with {{m|mk||-иња|tr=-}}. Unless the parameter <code>n=</code> is set, it places the noun in [[:Category:Macedonian neuter nouns ending in -е with plurals in -иња]]. ==Parameters== ; <code>1=</code> : The stem, which is the singular form without the final {{m|mk||-е|tr=..." 399076 wikitext text/x-wiki {{documentation subpage}} This template provides the inflection of Macedonian neuter nouns that end in {{m|mk||-е|tr=-}} and form the plural with {{m|mk||-иња|tr=-}}. Unless the parameter <code>n=</code> is set, it places the noun in [[:Category:Macedonian neuter nouns ending in -е with plurals in -иња]]. ==Parameters== ; <code>1=</code> : The stem, which is the singular form without the final {{m|mk||-е|tr=-}}. ; <code>n=</code> : The number of the noun. Leave this empty for normal countable nouns. For singular-only nouns, use <code>n=sg</code>, and for plural-only nouns, use <code>n=pl</code>. <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|n-е-иња]] </includeonly> m4a3kk85un1gy8g4dpccnftsx4h2eep ကဏ္ဍ:နာမ်နပုလ္လိၚ်မက်သဳဒဝ်နဳယျာဂမၠိုၚ် 14 296861 399077 2026-07-17T17:24:37Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာမက်သဳဒဝ်နဳယျာ]]" 399077 wikitext text/x-wiki [[ကဏ္ဍ:ဘာသာမက်သဳဒဝ်နဳယျာ]] pn8i4qxbw2vc0y25bi3bs2tgytwo1yw crevette 0 296862 399078 2026-07-17T19:15:44Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|Crevette}} =={{=en=}}== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{bor|en|fr|crevette}} ===နာမ်=== {{en-noun}} # ၚုဲမွဲ။။ ==ပြၚ်သေတ်== ===နိရုတ်=== {{bor+|fr|nrf|crevette}} ===ဗွဟ်ရမ္သာၚ်=== * {{fr-IPA}} * {{audio|fr|Fr-crevette.ogg}} * {{audio|fr|LL-Q150 (fra)-Benoît Prieur-crevette.wav|a=<<France>> (<<Saint-M..." 399078 wikitext text/x-wiki {{also|Crevette}} =={{=en=}}== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{bor|en|fr|crevette}} ===နာမ်=== {{en-noun}} # ၚုဲမွဲ။။ ==ပြၚ်သေတ်== ===နိရုတ်=== {{bor+|fr|nrf|crevette}} ===ဗွဟ်ရမ္သာၚ်=== * {{fr-IPA}} * {{audio|fr|Fr-crevette.ogg}} * {{audio|fr|LL-Q150 (fra)-Benoît Prieur-crevette.wav|a=<<France>> (<<Saint-Maurice-de-Beynost>>)}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-crevette.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-Mecanautes-crevette.wav|a=France}} * {{audio|fr|LL-Q150 (fra)-Poslovitch-crevette.wav|a=<<France>> (<<Vosges>>)}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-crevette.wav|a=<<France>> (<<Lyon>>)}} ===နာမ်=== {{fr-noun|f}} # ၚုဲ။ #: {{syn|fr|chevrette<g:f>}} ===မဒုၚ်လွဳစ=== {{top2}} * {{desc|mfe|krevet}} * {{desc|bor=1|be|крэветка|крэвэтка}} * {{desc|cs|bor=1|kreveta}} * {{desc|en|bor=1|crevette}} * {{desc|et|bor=1|krevett}} * {{desc|de|bor=1|Krevette}} * {{desc|lv|bor=1|krevete}} * {{desc|lt|bor=1|krevetė}} * {{desc|pl|bor=1|krewetka}} * {{desc|ro|bor=1|crevetă}} * {{desctree|ru|bor=1|креве́тка}} * {{desc|sh|bor=1|кревѐта}} * {{desc|sk|bor=1|kreveta}} * {{desc|uk|bor=1|креве́тка}} * {{desc|ro|bor=1|crevetă}} {{bottom}} eu9adzfns5w2pxswm0dtdless1d4sn9 ကဏ္ဍ:ဝေါဟာပြၚ်သေတ်ကၠုၚ်နူဝေါဟာနဝ်မေံဂမၠိုၚ် 14 296863 399079 2026-07-17T19:17:25Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာပြၚ်သေတ်]]" 399079 wikitext text/x-wiki [[ကဏ္ဍ:ဘာသာပြၚ်သေတ်]] ds75vqpwilqfsuqsl1tskc7lbv7vtrp ကဏ္ဍ:ဝေါဟာပြၚ်သေတ်လွဳလဝ် နူဝေါဟာနဝ်မေံဂမၠိုၚ် 14 296864 399080 2026-07-17T19:18:50Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာပြၚ်သေတ်]]" 399080 wikitext text/x-wiki [[ကဏ္ဍ:ဘာသာပြၚ်သေတ်]] ds75vqpwilqfsuqsl1tskc7lbv7vtrp crevettes 0 296865 399081 2026-07-17T19:21:15Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=en=}}== ===နာမ်=== {{head|en|noun form}} # {{plural of|en|crevette}} ==ပြၚ်သေတ်== ===နာမ်=== {{head|fr|noun form|g=f}} # {{plural of|fr|crevette}}" 399081 wikitext text/x-wiki =={{=en=}}== ===နာမ်=== {{head|en|noun form}} # {{plural of|en|crevette}} ==ပြၚ်သေတ်== ===နာမ်=== {{head|fr|noun form|g=f}} # {{plural of|fr|crevette}} asiidrv5scnz61mjnn812wsrgstjpvi Crevette 0 296866 399082 2026-07-17T19:27:55Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|crevette}} =={{=de=}}== ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|de|/kʁəˈvɛt/}} * {{audio|de|De-Crevette.ogg|a=<<Germany>> (<<Berlin>>)}} ===နာမ်=== {{de-noun|f}} # {{alternative form of|de|Krevette}} ====လဟုတ်စှ်ေ==== {{de-ndecl|f}}" 399082 wikitext text/x-wiki {{also|crevette}} =={{=de=}}== ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|de|/kʁəˈvɛt/}} * {{audio|de|De-Crevette.ogg|a=<<Germany>> (<<Berlin>>)}} ===နာမ်=== {{de-noun|f}} # {{alternative form of|de|Krevette}} ====လဟုတ်စှ်ေ==== {{de-ndecl|f}} tqnvol1hb02zlm39f3osjenw9lemyg5 Crevetten 0 296867 399083 2026-07-17T19:29:08Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=de=}}== ===ဗွဟ်ရမ္သာၚ်=== * {{audio|de|De-Crevetten.ogg|a=<<Germany>> (<<Berlin>>)}} ===နာမ်=== {{head|de|noun form}} # {{plural of|de|Crevette}}" 399083 wikitext text/x-wiki =={{=de=}}== ===ဗွဟ်ရမ္သာၚ်=== * {{audio|de|De-Crevetten.ogg|a=<<Germany>> (<<Berlin>>)}} ===နာမ်=== {{head|de|noun form}} # {{plural of|de|Crevette}} ffeg40rel19ncqblmjoidieaujajv0w Krevette 0 296868 399084 2026-07-17T19:31:08Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=de=}}== ===ပွံၚ်နဲတၞဟ်=== * {{alter|de|Crevette}} ===နိရုတ်=== {{bor+|de|fr|crevette}} ===နာမ်=== {{de-noun|f}} # ၚုဲ။ ====လဟုတ်စှ်ေ==== {{de-ndecl|f}}" 399084 wikitext text/x-wiki =={{=de=}}== ===ပွံၚ်နဲတၞဟ်=== * {{alter|de|Crevette}} ===နိရုတ်=== {{bor+|de|fr|crevette}} ===နာမ်=== {{de-noun|f}} # ၚုဲ။ ====လဟုတ်စှ်ေ==== {{de-ndecl|f}} 5ch5p99rjvpvptwr95ik88jcyj7rfjo Krevetten 0 296869 399085 2026-07-17T19:31:49Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "=={{=de=}}== ===နာမ်=== {{head|de|noun form}} # {{plural of|de|Krevette}}" 399085 wikitext text/x-wiki =={{=de=}}== ===နာမ်=== {{head|de|noun form}} # {{plural of|de|Krevette}} et1k63n1arg56dfsckppcde673qka5p krevde 0 296870 399087 2026-07-17T19:40:57Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==နဝ်ဝေ ဗော်ခ်မဝ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|nb|krevet}} ===ကြိယာ=== {{head|nb|verb form}} # {{inflection of|nb|kreve||simple past}}" 399087 wikitext text/x-wiki ==နဝ်ဝေ ဗော်ခ်မဝ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|nb|krevet}} ===ကြိယာ=== {{head|nb|verb form}} # {{inflection of|nb|kreve||simple past}} m6bta4j08xyjsng8nvthjf271mdvfgp kreve 0 296871 399088 2026-07-18T00:44:48Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==နဝ်ဝေ ဗော်ခ်မဝ်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|nb|non|krefja}} ===ကြိယာ=== {{head|nb|verb|မနွံကဵုပၟိက်အကာဲအရာ|krev|ကာလပစ္စုပ္ပန်|krever|ဟွံတဝ်စၞေဟ်|kreves|အတိက်မတပ်တး|krevde|ဝါ|krevet|မကၠောန်စွံလဝ်န..." 399088 wikitext text/x-wiki ==နဝ်ဝေ ဗော်ခ်မဝ်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|nb|non|krefja}} ===ကြိယာ=== {{head|nb|verb|မနွံကဵုပၟိက်အကာဲအရာ|krev|ကာလပစ္စုပ္ပန်|krever|ဟွံတဝ်စၞေဟ်|kreves|အတိက်မတပ်တး|krevde|ဝါ|krevet|မကၠောန်စွံလဝ်နကဵုအတိက်|krevd|ဝါ|krevet|မကၠောန်စွံလဝ်နကဵုပစ္စုပ္ပန်|krevende}} # သကဵုအာတ်မိက်။ # သကဵုနွံပၟိက်။ # သကဵုပၟိက်နွံအခေါၚ်အဝဵုဇကု (ဥပမာ ဘဝမွဲသာ်)။ 0bh2tf04jc3exjcyk6ilahexoqk4xcd krever 0 296872 399089 2026-07-18T00:45:45Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==နဝ်ဝေ ဗော်ခ်မဝ်== ===ကြိယာ=== {{head|nb|verbf}} # {{infl of|nb|kreve||pres|tense}}" 399089 wikitext text/x-wiki ==နဝ်ဝေ ဗော်ခ်မဝ်== ===ကြိယာ=== {{head|nb|verbf}} # {{infl of|nb|kreve||pres|tense}} bnt8f9ywfes8b12gc0fqztq1i38ketj kreves 0 296873 399090 2026-07-18T00:53:37Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==မဝ်ရေတ်ဃှေန် ခရဳအဝ်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|mfe|fr|crevette}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|mfe|/kɰevet/}} ===နာမ်=== {{head|mfe|noun}} # ၚုဲ၊ ၚုဲဒဂေါၚ်။ ==နဝ်ဝေ ဗော်ခ်မဝ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|nb|krevde||simple past|}}..." 399090 wikitext text/x-wiki ==မဝ်ရေတ်ဃှေန် ခရဳအဝ်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|mfe|fr|crevette}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|mfe|/kɰevet/}} ===နာမ်=== {{head|mfe|noun}} # ၚုဲ၊ ၚုဲဒဂေါၚ်။ ==နဝ်ဝေ ဗော်ခ်မဝ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|nb|krevde||simple past|}} * {{alt|nn|krevd||past participle|}} ===ကြိယာ=== {{head|nb|verb form}} # {{inflection of|nb|kreve||simple past|;|past|part}} ==သာဗ်ခြဝ်ဨရှဳယာန်== ===နိရုတ်=== {{bor+|sh|ota|كروت|tr=kerevet}}၊ နကဵုအဆက်နူ {{der|sh|el|κρεβάτι}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ{{der|sh|grc|κράββατος}}၊ နူအဆက်နကဵု {{der|sh|xmk|*γράβος}} ===ဗွဟ်ရမ္သာၚ်=== * {{sh-IPA|krèvet}} * {{hyphenation|sh|kre|vet}} ===နာမ်=== {{sh-noun|krèvet|m-in}} # ဖုန်။ #: {{syn|sh|pȍstelja}} ====လဟုတ်စှ်ေ==== {{sh-decl-noun |krèvet|kreveti |kreveta|krȅvētā |krevetu|krevetima |krevet|krevete |krevete|kreveti |krevetu|krevetima |krevetom|krevetima }} ==သေသျှလွာ ခရဳအဝ်လ်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|crs|fr|crevette}} ===နာမ်=== {{head|crs|noun}} # ၚုဲ၊ ၚုဲဒဂေါၚ်။ 5lei2em7aqogostrx5mvcwmmblodp80 krevd 0 296874 399091 2026-07-18T00:56:19Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==နဝ်ဝေ ဗော်ခ်မဝ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|nb|krevet}} ===ကြိယာ=== {{head|nb|verb form}} # {{inflection of|nb|kreve||past|part}}" 399091 wikitext text/x-wiki ==နဝ်ဝေ ဗော်ခ်မဝ်== ===ပွံၚ်နဲတၞဟ်=== * {{alt|nb|krevet}} ===ကြိယာ=== {{head|nb|verb form}} # {{inflection of|nb|kreve||past|part}} ks17zi99fco365wyu21g7tfy2r8y7az krevende 0 296875 399092 2026-07-18T01:00:24Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==နဝ်ဝေ ဗော်ခ်မဝ်== ====နာမဝိသေသန==== {{head|nb|adjective}} # ပွမအာတ်မိက်။ ===ကြိယာ=== {{head|nb|verb form}} # {{inflection of|nb|kreve||pres|part}}" 399092 wikitext text/x-wiki ==နဝ်ဝေ ဗော်ခ်မဝ်== ====နာမဝိသေသန==== {{head|nb|adjective}} # ပွမအာတ်မိက်။ ===ကြိယာ=== {{head|nb|verb form}} # {{inflection of|nb|kreve||pres|part}} hfdtevjj8jqgr7sx5jnwvuv92fz3mib krêft 0 296876 399093 2026-07-18T01:05:56Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|kreft}} ==ဖရေဝ်သဳယာန်လက္ကရဴ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|fy|ofs|creft}}၊ နူကဵုဝေါဟာ {{inh|fy|gmw-pro|*kraftu}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|fy|gem-pro|*kraftuz}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|fy|/krɛːft/}} ===နာမ်=== {{fy-noun|c|krêften}} # ဇြဟ..." 399093 wikitext text/x-wiki {{also|kreft}} ==ဖရေဝ်သဳယာန်လက္ကရဴ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|fy|ofs|creft}}၊ နူကဵုဝေါဟာ {{inh|fy|gmw-pro|*kraftu}}၊ နကဵုမဆေၚ်စပ်ကဵုနူ {{inh|fy|gem-pro|*kraftuz}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|fy|/krɛːft/}} ===နာမ်=== {{fy-noun|c|krêften}} # ဇြဟတ်ဇၟူ။ # ဇြဟတ်၊ အစောံဇြဟတ်။ jennigdhsoptmtv0bwnd0qhxvfqx8og krêften 0 296877 399094 2026-07-18T01:07:00Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ဖရေဝ်သဳယာန်လက္ကရဴ== ===နာမ်=== {{head|fy|noun form}} # {{plural of|fy|krêft}}" 399094 wikitext text/x-wiki ==ဖရေဝ်သဳယာန်လက္ကရဴ== ===နာမ်=== {{head|fy|noun form}} # {{plural of|fy|krêft}} g846ubfh4ymptzdz5z77phikr9th7t7 creft 0 296878 399095 2026-07-18T01:08:25Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==ဖရေဝ်သဳယာန်တြေံ== ===နာမ်=== {{head|ofs|နာမ်}} # ဇြဟတ်၊ အစောံဇြဟတ်။" 399095 wikitext text/x-wiki ==ဖရေဝ်သဳယာန်တြေံ== ===နာမ်=== {{head|ofs|နာမ်}} # ဇြဟတ်၊ အစောံဇြဟတ်။ 1y68hd1isn5xhngcxx3yn93y9oc4or0 kraft 0 296879 399096 2026-07-18T01:43:38Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|Kraft}} =={{=en=}}== ===နိရုတ်=== {{bor+|en|sv|kraft||strength}} ===နာမ်=== {{en-noun|-}} # ဗဳဇဂကူမဆေၚ်စပ်ကဵုမသ္ကာတ်၊ စက္ခူပွမဓုပ်ဂွဳအရံၚ်ဒမျိုၚ်မတၠိတ်။ ==ဒိန်နေတ်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|da|non|kraptr}}, {{m|..." 399096 wikitext text/x-wiki {{also|Kraft}} =={{=en=}}== ===နိရုတ်=== {{bor+|en|sv|kraft||strength}} ===နာမ်=== {{en-noun|-}} # ဗဳဇဂကူမဆေၚ်စပ်ကဵုမသ္ကာတ်၊ စက္ခူပွမဓုပ်ဂွဳအရံၚ်ဒမျိုၚ်မတၠိတ်။ ==ဒိန်နေတ်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|da|non|kraptr}}, {{m|non|krǫptr}}၊ နူကဵုဝေါဟာ {{inh|da|gem-pro|*kraftuz}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|da|[ˈkʰʁ̥ɑfd̥]}} * {{homophones|da|kræft}} (except in some older speakers) ===နာမ်=== {{da-noun|en|kræfter}} # ဇြဟတ်ဇၟူ။ # အစောံဇြဟတ်။ # ဇြဟတ်၊ မပ္တိတ်ဇြဟတ်ပရေၚ်ဟွံပိုတ်ဟွံသ္ကုတ်။ ====ပရေၚ်ကၠောံ==== {{da-noun-infl|en|kræfter|kræfterne|||kræfters|kræfternes}} ==ဒါတ်== ===နာမ်=== {{nl-noun|f|-en|-}} # {{obsolete form of|nl|kracht}} ==ဖာရဝ်သဳ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|fo|non|kraptr}}, {{m|non|krǫptr}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|fo|/kɹaft/}} ===နာမ်=== {{fo-noun|f|kraftar|kreftir}} # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ ====လဟုတ်စှ်ေ==== {{fo-decl-noun-f34|kr|a|ft|e}} ==ဂျာမာန်== {{was wotd|၂၀၂၆|ဂျူလာင်|၁၈}} ===ဗွဟ်ရမ္သာၚ်=== * {{audio|de|De-kraft.ogg|a=<<Germany>> (<<Berlin>>)}} ===ဝိဘတ်=== {{head|de|preposition}} # လ္တူမဆေၚ်စပ်ကဵုသ္ဇိုၚ်နကဵု၊ နူအၚ်္ဂဂုန်နကဵု၊ နူထ္ၜးစၞောန်တၚ်နကဵု၊ မွဲဒမြိပ်။ ==နဝ်ဝေ ဗော်ခ်မဝ်== {{wp|no:}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|nb|non|kraptr}} ===နာမ်=== {{head|nb|noun|g=m|g2=f|ကိုန်ဨကဝုစ်မချိုတ်ပၠိုတ်|krafta|ဝါ|kraften|ကိုန်ဗဟုဝစ်ဟွံချိုတ်ပၠိုတ်|krefter|ကိုန်ဗဟုဝစ်မချိုတ်ပၠိုတ်|kreftene}} # အစောံဇြဟတ်။ # ဇြဟတ်။ # ဟၚ်၊ သွဖျုန်။ ==နဝ်ဝေ နဳနိုတ်== {{wp|nn:}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|nn|non|kraptr}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|no|/krɑft/}} ===နာမ်=== {{head|nn|noun|g=f|ကိုန်ဨကဝုစ်မချိုတ်ပၠိုတ်|krafta|ကိုန်ဗဟုဝစ်ဟွံချိုတ်ပၠိုတ်|krefter|ကိုန်ဗဟုဝစ်မချိုတ်ပၠိုတ်|kreftene}} # အစောံဇြဟတ်။ # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ # ဟၚ်၊ သွဖျုန်။ ==သာတ်သိုန်တြေံ== ===ပွံၚ်နဲတၞဟ်=== * {{alter|osx|kraht}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|osx|gmw-pro|*kraftu}}၊ နူကဵုဝေါဟာ {{inh|osx|gem-pro|*kraftuz}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|osx|/krɑft/}} ===နာမ်=== {{head|osx|noun|g=f}} # ဇြဟတ်ဇၟူ၊ ဇြဟတ်၊ ပရေၚ်စိုန်သ္ကီု။ # ဗျူဟမွဲသာ်၊ အပ္ဍဲဗျာပရ။ ====လဟုတ်စှ်ေ==== {{osx-decl-noun-i-f|kraft|kreft}} ===မဒုၚ်လွဳစ=== * {{desc|gml|kraft|kracht|alts=1}} ** {{desc|nds|Kracht}} *** {{desc|nds-de|Kraft|Kracht}} ** {{desc|pdt|Krauft|Kroft}} ==သွဳဒေန်== {{wp|sv:}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|sv|gmq-osw|krapter}}၊ နူကဵုဝေါဟာ {{der|sv|non|kraptr}}, {{m|non|krǫptr}}၊ နကဵုအဆက်ဝေါဟာ {{der|sv|gem-pro|*kraftuz}} ===ဗွဟ်ရမ္သာၚ်=== * {{audio|sv|Sv-kraft.ogg}} ===နာမ်=== {{sv-noun|c}} # အစောံဇြဟတ်။ ## အစောံစရာဲ။ # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ ====လဟုတ်စှ်ေ==== {{sv-infl-noun-c-er}} kor4qjzmeiqfihlo942676w491uk67p 399097 399096 2026-07-18T01:44:04Z 咽頭べさ 33 399097 wikitext text/x-wiki {{also|Kraft}} =={{=en=}}== ===နိရုတ်=== {{bor+|en|sv|kraft}} ===နာမ်=== {{en-noun|-}} # ဗဳဇဂကူမဆေၚ်စပ်ကဵုမသ္ကာတ်၊ စက္ခူပွမဓုပ်ဂွဳအရံၚ်ဒမျိုၚ်မတၠိတ်။ ==ဒိန်နေတ်== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|da|non|kraptr}}, {{m|non|krǫptr}}၊ နူကဵုဝေါဟာ {{inh|da|gem-pro|*kraftuz}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|da|[ˈkʰʁ̥ɑfd̥]}} * {{homophones|da|kræft}} (except in some older speakers) ===နာမ်=== {{da-noun|en|kræfter}} # ဇြဟတ်ဇၟူ။ # အစောံဇြဟတ်။ # ဇြဟတ်၊ မပ္တိတ်ဇြဟတ်ပရေၚ်ဟွံပိုတ်ဟွံသ္ကုတ်။ ====ပရေၚ်ကၠောံ==== {{da-noun-infl|en|kræfter|kræfterne|||kræfters|kræfternes}} ==ဒါတ်== ===နာမ်=== {{nl-noun|f|-en|-}} # {{obsolete form of|nl|kracht}} ==ဖာရဝ်သဳ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|fo|non|kraptr}}, {{m|non|krǫptr}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|fo|/kɹaft/}} ===နာမ်=== {{fo-noun|f|kraftar|kreftir}} # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ ====လဟုတ်စှ်ေ==== {{fo-decl-noun-f34|kr|a|ft|e}} ==ဂျာမာန်== {{was wotd|၂၀၂၆|ဂျူလာင်|၁၈}} ===ဗွဟ်ရမ္သာၚ်=== * {{audio|de|De-kraft.ogg|a=<<Germany>> (<<Berlin>>)}} ===ဝိဘတ်=== {{head|de|preposition}} # လ္တူမဆေၚ်စပ်ကဵုသ္ဇိုၚ်နကဵု၊ နူအၚ်္ဂဂုန်နကဵု၊ နူထ္ၜးစၞောန်တၚ်နကဵု၊ မွဲဒမြိပ်။ ==နဝ်ဝေ ဗော်ခ်မဝ်== {{wp|no:}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|nb|non|kraptr}} ===နာမ်=== {{head|nb|noun|g=m|g2=f|ကိုန်ဨကဝုစ်မချိုတ်ပၠိုတ်|krafta|ဝါ|kraften|ကိုန်ဗဟုဝစ်ဟွံချိုတ်ပၠိုတ်|krefter|ကိုန်ဗဟုဝစ်မချိုတ်ပၠိုတ်|kreftene}} # အစောံဇြဟတ်။ # ဇြဟတ်။ # ဟၚ်၊ သွဖျုန်။ ==နဝ်ဝေ နဳနိုတ်== {{wp|nn:}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|nn|non|kraptr}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|no|/krɑft/}} ===နာမ်=== {{head|nn|noun|g=f|ကိုန်ဨကဝုစ်မချိုတ်ပၠိုတ်|krafta|ကိုန်ဗဟုဝစ်ဟွံချိုတ်ပၠိုတ်|krefter|ကိုန်ဗဟုဝစ်မချိုတ်ပၠိုတ်|kreftene}} # အစောံဇြဟတ်။ # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ # ဟၚ်၊ သွဖျုန်။ ==သာတ်သိုန်တြေံ== ===ပွံၚ်နဲတၞဟ်=== * {{alter|osx|kraht}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{inh|osx|gmw-pro|*kraftu}}၊ နူကဵုဝေါဟာ {{inh|osx|gem-pro|*kraftuz}} ===ဗွဟ်ရမ္သာၚ်=== * {{IPA|osx|/krɑft/}} ===နာမ်=== {{head|osx|noun|g=f}} # ဇြဟတ်ဇၟူ၊ ဇြဟတ်၊ ပရေၚ်စိုန်သ္ကီု။ # ဗျူဟမွဲသာ်၊ အပ္ဍဲဗျာပရ။ ====လဟုတ်စှ်ေ==== {{osx-decl-noun-i-f|kraft|kreft}} ===မဒုၚ်လွဳစ=== * {{desc|gml|kraft|kracht|alts=1}} ** {{desc|nds|Kracht}} *** {{desc|nds-de|Kraft|Kracht}} ** {{desc|pdt|Krauft|Kroft}} ==သွဳဒေန်== {{wp|sv:}} ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ {{der|sv|gmq-osw|krapter}}၊ နူကဵုဝေါဟာ {{der|sv|non|kraptr}}, {{m|non|krǫptr}}၊ နကဵုအဆက်ဝေါဟာ {{der|sv|gem-pro|*kraftuz}} ===ဗွဟ်ရမ္သာၚ်=== * {{audio|sv|Sv-kraft.ogg}} ===နာမ်=== {{sv-noun|c}} # အစောံဇြဟတ်။ ## အစောံစရာဲ။ # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ ====လဟုတ်စှ်ေ==== {{sv-infl-noun-c-er}} bhttx1lovb45mcn4zq5f5qew5kttion ဝိက်ရှေန်နရဳ:မအရေဝ်သွက်တ္ၚဲဏအ်/၂၀၂၆/ဂျူလာင် ၁၈ 4 296880 399098 2026-07-18T01:46:03Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{WOTD|kraft|ဝိဘတ်| လ္တူမဆေၚ်စပ်ကဵုသ္ဇိုၚ်နကဵု၊ နူအၚ်္ဂဂုန်နကဵု၊ နူထ္ၜးစၞောန်တၚ်နကဵု၊ မွဲဒမြိပ်။|audio=De-kraft.ogg|ဂျူလာင်|၁၈}}" 399098 wikitext text/x-wiki {{WOTD|kraft|ဝိဘတ်| လ္တူမဆေၚ်စပ်ကဵုသ္ဇိုၚ်နကဵု၊ နူအၚ်္ဂဂုန်နကဵု၊ နူထ္ၜးစၞောန်တၚ်နကဵု၊ မွဲဒမြိပ်။|audio=De-kraft.ogg|ဂျူလာင်|၁၈}} n65ra2u16p8nyizfy2t35m0qdl3eo8a ထာမ်ပလိက်:fo-decl-noun-f34 10 296881 399099 2026-07-18T01:47:16Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:fo-noun|show|decl=f34}}<!-- --><noinclude>{{documentation}}</noinclude>" 399099 wikitext text/x-wiki {{#invoke:fo-noun|show|decl=f34}}<!-- --><noinclude>{{documentation}}</noinclude> pxs3gwwhtdmdzx5b1jmonhoxz8av26f မဝ်ဂျူ:fo-noun/data-f 828 296882 399100 2026-07-18T01:49:20Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "local decl = {} decl["f1"] = { params = { [1] = {}, }, singular = function(args, data) data.forms["nom_sg"] = {args[1] .. "a"} data.forms["nom_sg_def"] = {args[1] .. "an"} data.forms["acc_sg"] = {args[1] .. "u"} data.forms["acc_sg_def"] = {args[1] .. "una"} data.forms["dat_sg"] = {args[1] .. "u"} data.forms["dat_sg_def"] = {args[1] .. "uni"} data.forms["gen_sg"] = {args[1] .. "u"} data.forms[..." 399100 Scribunto text/plain local decl = {} decl["f1"] = { params = { [1] = {}, }, singular = function(args, data) data.forms["nom_sg"] = {args[1] .. "a"} data.forms["nom_sg_def"] = {args[1] .. "an"} data.forms["acc_sg"] = {args[1] .. "u"} data.forms["acc_sg_def"] = {args[1] .. "una"} data.forms["dat_sg"] = {args[1] .. "u"} data.forms["dat_sg_def"] = {args[1] .. "uni"} data.forms["gen_sg"] = {args[1] .. "u"} data.forms["gen_sg_def"] = {args[1] .. "unnar"} end, plural = function(args, data) data.forms["nom_pl"] = {args[1] .. "ur"} data.forms["nom_pl_def"] = {args[1] .. "urnar"} data.forms["acc_pl"] = {args[1] .. "ur"} data.forms["acc_pl_def"] = {args[1] .. "urnar"} data.forms["dat_pl"] = {args[1] .. "um"} data.forms["dat_pl_def"] = {args[1] .. "unum"} data.forms["gen_pl"] = {args[1] .. "a"} data.forms["gen_pl_def"] = {args[1] .. "anna"} end } setmetatable(decl["f1"], {__call = function(self, args, data) data.decl_type = "f1" self.singular(args, data) self.plural(args, data) end }) decl["f1-p"] = { params = { [1] = {}, }, } setmetatable(decl["f1-p"], {__call = function(self, args, data) decl["f1"].plural(args, data) data.info = " (plural only)" data.decl_type = "f1p" data.defective = "p" end }) decl["f1-s"] = { params = { [1] = {}, }, } setmetatable(decl["f1-s"], {__call = function(self, args, data) decl["f1"].singular(args, data) data.info = " (singular only)" data.decl_type = "f1s" data.defective = "s" end }) decl["f1-s-def"] = { params = { [1] = {}, }, } setmetatable(decl["f1-s-def"], {__call = function(self, args, data) decl["f1"].singular(args, data) data.info = " (singular definite only)" data.decl_type = "f1s def" data.defective = "s_def" end }) decl["f1-s-f6-p"] = { params = { [1] = {}, }, } setmetatable(decl["f1-s-f6-p"], {__call = function(self, args, data) decl["f1"].singular(args, data) decl["f2"].plural(args, data) data.decl_type = "f1s/f6p" data.forms["nom_pl"] = {args[1] .. "ar"} data.forms["nom_pl_def"] = {args[1] .. "arnar"} data.forms["acc_pl"] = {args[1] .. "ar"} data.forms["acc_pl_def"] = {args[1] .. "arnar"} end }) decl["f1-s-indef"] = { params = { [1] = {}, }, } setmetatable(decl["f1-s-indef"], {__call = function(self, args, data) decl["f1"].singular(args, data) data.info = " (singular indefinite only)" data.decl_type = "f1s indef" data.defective = "s_indef" end }) decl["f2"] = { params = { [1] = {}, }, singular = function(args, data) data.forms["nom_sg"] = {args[1]} data.forms["nom_sg_def"] = {args[1] .. "in"} data.forms["acc_sg"] = {args[1]} data.forms["acc_sg_def"] = {args[1] .. "ina"} data.forms["dat_sg"] = {args[1]} data.forms["dat_sg_def"] = {args[1] .. "ini"} data.forms["gen_sg"] = {args[1] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. "arinnar"} end, plural = function(args, data) data.forms["nom_pl"] = {args[1] .. "ir"} data.forms["nom_pl_def"] = {args[1] .. "irnar"} data.forms["acc_pl"] = {args[1] .. "ir"} data.forms["acc_pl_def"] = {args[1] .. "irnar"} data.forms["dat_pl"] = {args[1] .. "um"} data.forms["dat_pl_def"] = {args[1] .. "unum"} data.forms["gen_pl"] = {args[1] .. "a"} data.forms["gen_pl_def"] = {args[1] .. "anna"} end } setmetatable(decl["f2"], {__call = function(self, args, data) data.info = "" data.decl_type = "f2" self.singular(args, data) self.plural(args, data) end }) decl["f2 (á)"] = { params = { [1] = {}, }, } setmetatable(decl["f2 (á)"], {__call = function(self, args, data) decl["f2"](args, data) data.decl_type = "f2 (á)" data.forms["acc_sg_def"] = {args[1] .. "nna"} data.forms["dat_sg_def"] = {args[1] .. "nni"} end }) decl["f2-p"] = { params = { [1] = {}, }, } setmetatable(decl["f2-p"], {__call = function(self, args, data) decl["f2"].plural(args, data) data.info = " (plural only)" data.decl_type = "f2p" data.defective = "p" end }) decl["f2-s"] = { params = { [1] = {}, }, } setmetatable(decl["f2-s"], {__call = function(self, args, data) decl["f2"].singular(args, data) data.info = " (singular only)" data.decl_type = "f2s" data.defective = "s" end }) decl["f2-skrá"] = { params = { [1] = {}, }, } setmetatable(decl["f2-skrá"], {__call = function(self, args, data) decl["f2"](args, data) data.decl_type = "f2 (skrá)" data.forms["dat_sg_def"] = {args[1] .. "nni"} end }) decl["f3"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, singular = function(args, data) if args[1] == '-' then -- e.g. øksl (f3), ørn (f5 which ultimately calls f3) args[1] = '' end data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "ina"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "ini"} data.forms["gen_sg"] = {args[1] .. args[4] .. args[3] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[4] .. args[3] .. "arinnar"} end, plural = function(args, data) data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ir"} data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "irnar"} data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ir"} data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "irnar"} data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um", args[1] .. args[4] .. args[3] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum", args[1] .. args[4] .. args[3] .. "unum"} data.forms["gen_pl"] = {args[1] .. args[4] .. args[3] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[4] .. args[3] .. "anna"} end } setmetatable(decl["f3"], {__call = function(self, args, data) data.decl_type = "f3" self.singular(args, data) self.plural(args, data) end }) decl["f3-s"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f3-s"], {__call = function(self, args, data) decl["f3"].singular(args, data) data.info = " (singular only)" data.decl_type = "f3s" data.defective = "s" end }) decl["f4"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f4"], {__call = function(self, args, data) decl["f3"](args, data) data.decl_type = "f4" data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum"} end }) decl["f5"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f5"], {__call = function(self, args, data) decl["f4"](args, data) data.decl_type = "f5" data.forms["nom_pl"] = {args[1] .. args[2] .. args[3] .. "ir"} data.forms["nom_pl_def"] = {args[1] .. args[2] .. args[3] .. "irnar"} data.forms["acc_pl"] = {args[1] .. args[2] .. args[3] .. "ir"} data.forms["acc_pl_def"] = {args[1] .. args[2] .. args[3] .. "irnar"} end }) -- This pattern seems to be completely superfluous decl["f5-s"] = { params = { [1] = {}, [2] = {}, [3] = {}, }, } setmetatable(decl["f5-s"], {__call = function(self, args, data) decl["f3-s"](args, data) data.decl_type = "f5s" end }) decl["f6"] = { params = { [1] = {}, }, } setmetatable(decl["f6"], {__call = function(self, args, data) decl["f2"](args, data) data.decl_type = "f6" data.forms["nom_pl"] = {args[1] .. "ar"} data.forms["nom_pl_def"] = {args[1] .. "arnar"} data.forms["acc_pl"] = {args[1] .. "ar"} data.forms["acc_pl_def"] = {args[1] .. "arnar"} end }) decl["f6-oyggj"] = { params = { [1] = {}, }, } setmetatable(decl["f6-oyggj"], {__call = function(self, args, data) data.decl_type = "f6-oyygj" data.forms["nom_sg"] = {args[1] .. "ggj"} data.forms["nom_sg_def"] = {args[1] .. "ggin"} data.forms["nom_pl"] = {args[1] .. "ggjar"} data.forms["nom_pl_def"] = {args[1] .. "ggjarnar"} data.forms["acc_sg"] = {args[1] .. "ggj"} data.forms["acc_sg_def"] = {args[1] .. "nna"} data.forms["acc_pl"] = {args[1] .. "ggjar"} data.forms["acc_pl_def"] = {args[1] .. "ggjarnar"} data.forms["dat_sg"] = {args[1] .. "ggj"} data.forms["dat_sg_def"] = {args[1] .. "nni"} data.forms["dat_pl"] = {args[1] .. "ggjum"} data.forms["dat_pl_def"] = {args[1] .. "ggjunum"} data.forms["gen_sg"] = {args[1] .. "ggjar"} data.forms["gen_sg_def"] = {args[1] .. "ggjarinnar"} data.forms["gen_pl"] = {args[1] .. "ggja"} data.forms["gen_pl_def"] = {args[1] .. "ggjanna"} end }) -- This pattern seems to be completely superfluous decl["f6-s"] = { params = { [1] = {}, [2] = {}, [3] = {}, }, } setmetatable(decl["f6-s"], {__call = function(self, args, data) decl["f2-s"](args, data) data.decl_type = "f6s" end }) decl["f7"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f7"], {__call = function(self, args, data) decl["f3"](args, data) data.decl_type = "f7" data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ar"} data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "arnar"} data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ar"} data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "arnar"} end }) decl["f8"] = { params = { [1] = {}, }, } setmetatable(decl["f8"], {__call = function(self, args, data) data.decl_type = "f8" data.forms["nom_sg"] = {args[1]} data.forms["nom_sg_def"] = {args[1] .. "in"} data.forms["nom_pl"] = {args[1] .. "jar"} data.forms["nom_pl_def"] = {args[1] .. "jarnar"} data.forms["acc_sg"] = {args[1]} data.forms["acc_sg_def"] = {args[1] .. "ina"} data.forms["acc_pl"] = {args[1] .. "jar"} data.forms["acc_pl_def"] = {args[1] .. "jarnar"} data.forms["dat_sg"] = {args[1]} data.forms["dat_sg_def"] = {args[1] .. "ini"} data.forms["dat_pl"] = {args[1] .. "jum"} data.forms["dat_pl_def"] = {args[1] .. "junum"} data.forms["gen_sg"] = {args[1] .. "jar"} data.forms["gen_sg_def"] = {args[1] .. "jarinnar"} data.forms["gen_pl"] = {args[1] .. "ja"} data.forms["gen_pl_def"] = {args[1] .. "janna"} end }) decl["f9"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl["f9"], {__call = function(self, args, data) data.decl_type = "f9" if args[1] == '-' then -- e.g. ont (f9) args[1] = '' end data.forms["nom_sg"] = {args[1] .. "o" .. args[2]} data.forms["nom_sg_def"] = {args[1] .. "o" .. args[2] .. "in"} data.forms["nom_pl"] = {args[1] .. "e" .. args[2] .. "ur"} data.forms["nom_pl_def"] = {args[1] .. "e" .. args[2] .. "urnar"} data.forms["acc_sg"] = {args[1] .. "o" .. args[2]} data.forms["acc_sg_def"] = {args[1] .. "o" .. args[2] .. "ina"} data.forms["acc_pl"] = {args[1] .. "e" .. args[2] .. "ur"} data.forms["acc_pl_def"] = {args[1] .. "e" .. args[2] .. "urnar"} data.forms["dat_sg"] = {args[1] .. "o" .. args[2]} data.forms["dat_sg_def"] = {args[1] .. "o" .. args[2] .. "ini"} data.forms["dat_pl"] = {args[1] .. "o" .. args[2] .. "um"} data.forms["dat_pl_def"] = {args[1] .. "o" .. args[2] .. "unum"} data.forms["gen_sg"] = {args[1] .. "a" .. args[2] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. "a" .. args[2] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. "a" .. args[2] .. "a"} data.forms["gen_pl_def"] = {args[1] .. "a" .. args[2] .. "anna"} end }) decl["f10"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl["f10"], {__call = function(self, args, data) decl["f9"](args, data) data.decl_type = "f10" data.forms["gen_sg"] = {args[1] .. "o" .. args[2] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. "o" .. args[2] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. "o" .. args[2] .. "a"} data.forms["gen_pl_def"] = {args[1] .. "o" .. args[2] .. "anna"} end }) decl["f11"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, }, } setmetatable(decl["f11"], {__call = function(self, args, data) data.decl_type = "f11" if args[1] == '-' then -- e.g. ong args[1] = '' end data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"} data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ir", args[1] .. args[5] .. args[3] .. "ur"} data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "irnar", args[1] .. args[5] .. args[3] .. "urnar"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "ina"} data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ir", args[1] .. args[5] .. args[3] .. "ur"} data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "irnar", args[1] .. args[5] .. args[3] .. "urnar"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "ini"} data.forms["dat_pl"] = {args[1] .. args[4] .. args[3] .. "jum"} data.forms["dat_pl_def"] = {args[1] .. args[4] .. args[3] .. "junum"} data.forms["gen_sg"] = {args[1] .. args[4] .. args[3] .. "jar" , args[1] .. args[2] .. args[3] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[4] .. args[3] .. "jarrinar" , args[1] .. args[2] .. args[3] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[4] .. args[3] .. "ja"} data.forms["gen_pl_def"] = {args[1] .. args[4] .. args[3] .. "janna"} end }) decl["f12"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, singular = function(args, data) data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "ina"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "ini"} data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "arinnar"} end, plural = function(args, data) data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ur"} data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"} data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ur"} data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"} data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum"} data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"} end } setmetatable(decl["f12"], {__call = function(self, args, data) data.decl_type = "f12" self.singular(args, data) self.plural(args, data) end }) decl["f12-s"] = { params = { [1] = {}, [2] = {}, [3] = {}, }, } setmetatable(decl["f12-s"], {__call = function(self, args, data) decl["f12"].singular(args, data) data.info = " (singular only)" data.decl_type = "f12s" data.defective = "s" end }) decl["f13"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, }, } setmetatable(decl["f13"], {__call = function(self, args, data) decl["f12"](args, data) data.decl_type = "f13" data.forms["gen_sg"] = {args[1] .. args[5] .. args[3] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[5] .. args[3] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[5] .. args[3] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[5] .. args[3] .. "anna"} end }) decl["f14"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f14"], {__call = function(self, args, data) data.decl_type = "f14" data.forms["nom_sg"] = {args[1] .. args[2] .. args[3] .. args[3]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "in"} data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ur"} data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3] .. args[3]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ina"} data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ur"} data.forms["acc_pl_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "urnar"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3] .. args[3]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ini"} data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. args[3] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "unum"} data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. args[3] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "anna"} end }) decl["f15"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, }, } setmetatable(decl["f15"], {__call = function(self, args, data) decl["f13"](args, data) data.decl_type = "f15" data.forms["nom_pl"] = {args[1] .. args[4] .. args[3]} data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "inar"} data.forms["acc_pl"] = {args[1] .. args[4] .. args[3]} data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "inar"} end }) decl["f16"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f16"], {__call = function(self, args, data) data.decl_type = "f16" data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"} data.forms["nom_pl"] = {args[1] .. args[4] .. args[3]} data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "nar"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "ina"} data.forms["acc_pl"] = {args[1] .. args[4] .. args[3]} data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "nar"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "ini"} data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum", args[1] .. args[4] .. args[3] .. "num"} data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"} end }) decl["f17"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl["f17"], {__call = function(self, args, data) data.decl_type = "f17" data.forms["nom_sg"] = {args[1] .. "u" .. args[2]} data.forms["nom_sg_def"] = {args[1] .. "u" .. args[2] .. "in"} data.forms["nom_pl"] = {args[1] .. args[2] .. "ar"} data.forms["nom_pl_def"] = {args[1] .. args[2] .. "arnar"} data.forms["acc_sg"] = {args[1] .. "u" .. args[2]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. "ina"} data.forms["acc_pl"] = {args[1] .. args[2] .. "ar"} data.forms["acc_pl_def"] = {args[1] .. args[2] .. "arnar"} data.forms["dat_sg"] = {args[1] .. "u" .. args[2]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. "ini"} data.forms["dat_pl"] = {args[1] .. args[2] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. "unum"} data.forms["gen_sg"] = {args[1] .. args[2] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[2] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[2] .. "anna"} end }) decl["f18"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl["f18"], {__call = function(self, args, data) decl["f17"](args, data) data.decl_type = "f18" data.forms["gen_sg"] = {args[1] .. "a" .. args[2]} data.forms["gen_sg_def"] = {args[1] .. "a" .. args[2] .. "innar"} end }) decl["f19"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, }, } setmetatable(decl["f19"], {__call = function(self, args, data) data.decl_type = "f19" data.forms["nom_sg"] = {args[1] .. args[2] .. args[3] .. "u" .. args[4]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "u" .. args[4] .. "in"} data.forms["nom_pl"] = {args[1] .. args[5] .. args[3] .. args[4] .. "ar"} data.forms["nom_pl_def"] = {args[1] .. args[5] .. args[3] .. args[4] .. "arnar"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3] .. "u" .. args[4]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. args[4] .. "ina"} data.forms["acc_pl"] = {args[1] .. args[5] .. args[3] .. args[4] .. "ar"} data.forms["acc_pl_def"] = {args[1] .. args[5] .. args[3] .. args[4] .. "arnar"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3] .. "u" .. args[4]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. args[4] .. "ini"} data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. args[4] .. "um", args[1] .. args[5] .. args[3] .. args[4] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. args[4] .. "unum", args[1] .. args[5] .. args[3] .. args[4] .. "unum"} data.forms["gen_sg"] = {args[1] .. args[5] .. args[3] .. args[4] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[5] .. args[3] .. args[4] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[5] .. args[3] .. args[4] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[5] .. args[3] .. args[4] .. "anna"} end }) --Special case pattern: ær decl["f20"] = { params = { [1] = {}, [2] = {}, [3] = {}, }, } setmetatable(decl["f20"], {__call = function(self, args, data) data.decl_type = "f20" data.forms["nom_sg"] = {args[1]} data.forms["nom_sg_def"] = {args[1] .. "in"} data.forms["nom_pl"] = {args[1]} data.forms["nom_pl_def"] = {args[1] .. "nar"} data.forms["acc_sg"] = {args[1]} data.forms["acc_sg_def"] = {args[1] .. "ina"} data.forms["acc_pl"] = {args[1]} data.forms["acc_pl_def"] = {args[1] .. "nar"} data.forms["dat_sg"] = {args[1]} data.forms["dat_sg_def"] = {args[1] .. "ini"} data.forms["dat_pl"] = {args[2] .. "m"} data.forms["dat_pl_def"] = {args[2] .. "num"} data.forms["gen_sg"] = {args[1]} data.forms["gen_sg_def"] = {args[1] .. "innar"} data.forms["gen_pl"] = {args[3] .. "a"} data.forms["gen_pl_def"] = {args[3] .. "anna"} end }) decl["f21"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f21"], {__call = function(self, args, data) data.decl_type = "f21" data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"} data.forms["nom_pl"] = {args[1] .. args[4] .. "ir"} data.forms["nom_pl_def"] = {args[1] .. args[4] .. "irnar"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. "nna"} data.forms["acc_pl"] = {args[1] .. args[4] .. "ir"} data.forms["acc_pl_def"] = {args[1] .. args[4] .. "irnar"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. "nni"} data.forms["dat_pl"] = {args[1] .. args[4] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[4] .. "unum"} data.forms["gen_sg"] = {args[1] .. args[4] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[4] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[4] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[4] .. "anna"} end }) decl["f22"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f22"], {__call = function(self, args, data) decl["f21"](args, data) data.decl_type = "f22" data.forms["nom_pl"] = {args[1] .. args[4] .. "ur"} data.forms["nom_pl_def"] = {args[1] .. args[4] .. "rnar"} data.forms["acc_pl"] = {args[1] .. args[4] .. "ur"} data.forms["acc_pl_def"] = {args[1] .. args[4] .. "rnar"} data.forms["dat_pl"] = {args[1] .. args[2] .. "m"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. "num"} data.forms["gen_sg"] = {args[1] .. args[2] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"} end }) decl["f23"] = { params = { [1] = {}, [2] = {}, [3] = {}, }, } setmetatable(decl["f23"], {__call = function(self, args, data) data.decl_type = "f23" data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"} data.forms["nom_pl"] = {args[1] .. args[2] .. args[3] .. "ir"} data.forms["nom_pl_def"] = {args[1] .. args[2] .. args[3] .. "irnar"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. "nna"} data.forms["acc_pl"] = {args[1] .. args[2] .. args[3] .. "ir"} data.forms["acc_pl_def"] = {args[1] .. args[2] .. args[3] .. "irnar"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. "nni"} data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum"} data.forms["gen_sg"] = {args[1] .. args[2] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"} end }) decl["f24"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f24"], {__call = function(self, args, data) for i = 1, 4 do if not args[i] then args[i] = "" end end data.decl_type = "f24" data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"} data.forms["nom_pl"] = {args[1] .. args[4] .. "r"} data.forms["nom_pl_def"] = {args[1] .. args[4] .. "rnar"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. "nna"} data.forms["acc_pl"] = {args[1] .. args[4] .. "r"} data.forms["acc_pl_def"] = {args[1] .. args[4] .. "rnar"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. "nni"} data.forms["dat_pl"] = {args[1] .. args[2] .. "m"} data.forms["dat_pl_def"] = {args[1] .. args[2] .. "num"} data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"} end }) decl["f24-s"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f24-s"], {__call = function(self, args, data) decl["f24"](args, data) data.info = " (singular only)" data.decl_type = "f24s" data.defective = "s" end }) -- This pattern appears to be completely superfluous decl["f25"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f25"], {__call = function(self, args, data) decl["f16"](args, data) data.decl_type = "f25" end }) decl["f26"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f26"], {__call = function(self, args, data) data.decl_type = "f26" data.forms["nom_sg"] = {args[1] .. args[2]} data.forms["nom_sg_def"] = {args[1] .. args[2] .. "in"} data.forms["nom_pl"] = {args[1] .. args[3] .. "r"} data.forms["nom_pl_def"] = {args[1] .. args[3] .. "rnar"} data.forms["acc_sg"] = {args[1] .. args[2]} data.forms["acc_sg_def"] = {args[1] .. args[2] .. "nna"} data.forms["acc_pl"] = {args[1] .. args[3] .. "r"} data.forms["acc_pl_def"] = {args[1] .. args[3] .. "rnar"} data.forms["dat_sg"] = {args[1] .. args[2]} data.forms["dat_sg_def"] = {args[1] .. args[2] .. "nni"} data.forms["dat_pl"] = {args[1] .. args[4] .. "m"} data.forms["dat_pl_def"] = {args[1] .. args[4] .. "num"} data.forms["gen_sg"] = {args[1] .. args[2] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. "arinnar"} data.forms["gen_pl"] = {args[1] .. args[2] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[2] .. "anna"} end }) -- This pattern appears to be completely superfluous decl["f27"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f27"], {__call = function(self, args, data) decl["f12"](args, data) data.decl_type = "f27" end }) decl["f28"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f28"], {__call = function(self, args, data) data.decl_type = "f28" data.info = " (plural only)" data.defective = "p" data.forms["nom_pl"] = {args[1] .. args[2] .. args[3]} data.forms["nom_pl_def"] = {args[1] .. args[2] .. args[3] .. "nar"} data.forms["acc_pl"] = {args[1] .. args[2] .. args[3]} data.forms["acc_pl_def"] = {args[1] .. args[2] .. args[3] .. "nar"} data.forms["dat_pl"] = {args[1] .. args[4] .. args[3] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[4] .. args[3] .. "unum"} data.forms["gen_pl"] = {args[1] .. args[4] .. args[3] .. "a"} data.forms["gen_pl_def"] = {args[1] .. args[4] .. args[3] .. "anna"} end }) --Special case pattern: móðir and derivatives decl["f29"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, singular = function(args, data) data.forms["nom_sg"] = {args[1] .. args[2] .. args[3] .. "ir"} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "irin"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3] .. "ur"} data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "urina"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3] .. "ur"} data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "urini"} data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ur"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "urinnar"} end, plural = function(args, data) data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ur"} data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"} data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ur"} data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"} data.forms["dat_pl"] = {args[1] .. args[4] .. args[3] .. "rum"} data.forms["dat_pl_def"] = {args[1] .. args[4] .. args[3].. "rnum"} data.forms["gen_pl"] = {args[1] .. args[4] .. args[3] .. "ra"} data.forms["gen_pl_def"] = {args[1] .. args[4] .. args[3] .. "ranna"} end } setmetatable(decl["f29"], {__call = function(self, args, data) data.decl_type = "f29" self.singular(args, data) self.plural(args, data) end }) -- Special case pattern: dóttir and derivatives decl["f30"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f30"], {__call = function(self, args, data) data.decl_type = "f30" data.forms["nom_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ir"} data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "irin"} data.forms["acc_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ur"} data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "rina"} data.forms["dat_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ur"} data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "rini"} data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ur"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "urinnar"} decl["f29"].plural(args, data) end }) -- Special case pattern: systir and derivatives decl["f31"] = { params = { [1] = {}, }, } setmetatable(decl["f31"], {__call = function(self, args, data) data.decl_type = "f31" data.forms["nom_sg"] = {args[1] .. "ir"} data.forms["nom_sg_def"] = {args[1] .. "irin"} data.forms["nom_pl"] = {args[1] .. "rar"} data.forms["nom_pl_def"] = {args[1] .. "rarnar"} data.forms["acc_sg"] = {args[1] .. "ur"} data.forms["acc_sg_def"] = {args[1] .. "rina"} data.forms["acc_pl"] = {args[1] .. "rar"} data.forms["acc_pl_def"] = {args[1] .. "rarnar"} data.forms["dat_sg"] = {args[1] .. "ur"} data.forms["dat_sg_def"] = {args[1] .. "rini"} data.forms["dat_pl"] = {args[1] .. "rum"} data.forms["dat_pl_def"] = {args[1] .. "runum"} data.forms["gen_sg"] = {args[1] .. "ur"} data.forms["gen_sg_def"] = {args[1] .. "urinnar"} data.forms["gen_pl"] = {args[1] .. "ra"} data.forms["gen_pl_def"] = {args[1] .. "ranna"} end }) decl["f32"] = { params = { [1] = {}, }, singular = function(args, data) data.forms["nom_sg"] = {args[1] .. "i"} data.forms["nom_sg_def"] = {args[1] .. "in"} data.forms["acc_sg"] = {args[1] .. "i"} data.forms["acc_sg_def"] = {args[1] .. "ina"} data.forms["dat_sg"] = {args[1] .. "i"} data.forms["dat_sg_def"] = {args[1] .. "ini"} data.forms["gen_sg"] = {args[1] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. "arinnar"} end, plural = function(args, data) data.forms["nom_pl"] = {args[1] .. "ar"} data.forms["nom_pl_def"] = {args[1] .. "arnar"} data.forms["acc_pl"] = {args[1] .. "ar"} data.forms["acc_pl_def"] = {args[1] .. "arnar"} data.forms["dat_pl"] = {args[1] .. "um"} data.forms["dat_pl_def"] = {args[1] .. "unum"} data.forms["gen_pl"] = {args[1] .. "a"} data.forms["gen_pl_def"] = {args[1] .. "anna"} end } setmetatable(decl["f32"], {__call = function(self, args, data) data.decl_type = "f32" self.singular(args, data) self.plural(args, data) end }) decl["f32-p"] = { params = { [1] = {}, }, } setmetatable(decl["f32-p"], {__call = function(self, args, data) decl["f32"].plural(args, data) data.decl_type = "f32p" data.info = " (plural only)" data.defective = "p" end }) decl["f33"] = { params = { [1] = {}, }, singular = function(args, data) data.forms["nom_sg"] = {args[1]} data.forms["nom_sg_def"] = {args[1] .. "n"} data.forms["acc_sg"] = {args[1]} data.forms["acc_sg_def"] = {args[1] .. "na"} data.forms["dat_sg"] = {args[1]} data.forms["dat_sg_def"] = {args[1] .. "ni"} data.forms["gen_sg"] = {args[1]} data.forms["gen_sg_def"] = {args[1] .. "nnar"} end, plural = function(args, data) data.forms["nom_pl"] = {args[1] .. "r"} data.forms["nom_pl_def"] = {args[1] .. "rnar"} data.forms["acc_pl"] = {args[1] .. "r"} data.forms["acc_pl_def"] = {args[1] .. "rnar"} --data.forms["dat_pl"] = {args[1] .. "um"} --data.forms["dat_pl_def"] = {args[1] .. "unum"} --data.forms["gen_pl"] = {args[1] .. "a"} --data.forms["gen_pl_def"] = {args[1] .. "anna"} end } setmetatable(decl["f33"], {__call = function(self, args, data) data.decl_type = "f33" data.info = " (defective)" self.singular(args, data) self.plural(args, data) end }) decl["f33-s"] = { params = { [1] = {}, }, } setmetatable(decl["f33-s"], {__call = function(self, args, data) decl["f33"].singular(args, data) data.decl_type = "f33s" data.info = " (singular only)" data.defective = "s" end }) decl["f34"] = { params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, }, } setmetatable(decl["f34"], {__call = function(self, args, data) decl["f3"](args, data) data.decl_type = "f34" data.forms["dat_pl"] = {args[1] .. args[4] .. args[3] .. "um"} data.forms["dat_pl_def"] = {args[1] .. args[4] .. args[3] .. "unum"} data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ar"} data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "arinnar"} end }) return decl ef3iwnmabxp3l02dkqjtxv6amh337gu မဝ်ဂျူ:fo-noun/data-f/documentation 828 296883 399101 2026-07-18T01:51:50Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|fo}} </includeonly>" 399101 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|fo}} </includeonly> 7jqqm39jiasxu2kjt8gz113ayw4obbj 399102 399101 2026-07-18T01:52:14Z 咽頭べさ 33 咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[မဝ်ဂျူ:fo-noun/data-f/doc]] ဇရေင် [[မဝ်ဂျူ:fo-noun/data-f/documentation]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင် 399101 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|fo}} </includeonly> 7jqqm39jiasxu2kjt8gz113ayw4obbj ကဏ္ဍ:မဝ်ဂျူဖာရဝ်သဳဂမၠိုၚ် 14 296884 399103 2026-07-18T01:54:01Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဖာရဝ်သဳ|ဖာရဝ်သဳ]] » '''မဝ်ဂျူ..." 399103 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာဖာရဝ်သဳ|ဖာရဝ်သဳ]] » '''မဝ်ဂျူဂမၠိုၚ်''' :[[:ကဏ္ဍ:မဝ်ဂျူဂမၠိုၚ်|မဝ်ဂျူ]]ဘာသာဖာရဝ်သဳ၊ မနွံကဵုလုပ်အဝေါၚ်ကုဒ် Lua နကဵုမကၠောန်ဗဒှ် ကဵု မစဳရေၚ်ယဵုဒုၚ်သ္ပမာန်ဂမၠိုၚ်။ [[ကဏ္ဍ:ဘာသာဖာရဝ်သဳ]][[ကဏ္ဍ:မဝ်ဂျူဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဖ]] 1l8ag93mlevnkidwt206zlu6furg8ib ကဏ္ဍ:မဝ်ဂျူပွမပြံၚ်လှာဲဖာရဝ်သဳဂမၠိုၚ် 14 296885 399104 2026-07-18T01:55:53Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:မဝ်ဂျူဖာရဝ်သဳဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ဖာရဝ်သဳအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဖ]]" 399104 wikitext text/x-wiki [[ကဏ္ဍ:မဝ်ဂျူဖာရဝ်သဳဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်ဖာရဝ်သဳအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဖ]] 9n13abcjvlpj083sekdgg1acl7vte6k ကဏ္ဍ:မဝ်ဂျူဒေတာဖာရဝ်သဳဂမၠိုၚ် 14 296886 399105 2026-07-18T01:57:45Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:မဝ်ဂျူဖာရဝ်သဳဂမၠိုၚ်|စ]][[ကဏ္ဍ:မဝ်ဂျူစရၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဖ]]" 399105 wikitext text/x-wiki [[ကဏ္ဍ:မဝ်ဂျူဖာရဝ်သဳဂမၠိုၚ်|စ]][[ကဏ္ဍ:မဝ်ဂျူစရၚ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဖ]] a1zibaylpng327q9t1gtjtnmh0lca10 မဝ်ဂျူ:fo-noun/documentation 828 296887 399106 2026-07-18T02:00:55Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|fo}} </includeonly>" 399106 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|fo}} </includeonly> 7jqqm39jiasxu2kjt8gz113ayw4obbj 399107 399106 2026-07-18T02:01:19Z 咽頭べさ 33 咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[မဝ်ဂျူ:fo-noun/doc]] ဇရေင် [[မဝ်ဂျူ:fo-noun/documentation]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင် 399106 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|fo}} </includeonly> 7jqqm39jiasxu2kjt8gz113ayw4obbj မဝ်ဂျူ:fo-noun/table/documentation 828 296888 399109 2026-07-18T02:08:49Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|fo}} </includeonly>" 399109 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|fo}} </includeonly> 7jqqm39jiasxu2kjt8gz113ayw4obbj 399110 399109 2026-07-18T02:09:33Z 咽頭べさ 33 咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[မဝ်ဂျူ:fo-noun/table/doc]] ဇရေင် [[မဝ်ဂျူ:fo-noun/table/documentation]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင် 399109 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|fo}} </includeonly> 7jqqm39jiasxu2kjt8gz113ayw4obbj ထာမ်ပလိက်:fo-decl-noun-f34/documentation 10 296889 399111 2026-07-18T02:12:46Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်ဖာရဝ်သဳအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်]] </includeonly>" 399111 wikitext text/x-wiki {{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်ဖာရဝ်သဳအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်]] </includeonly> p6j0me6m44f6jkpfj8f083knksqazc9 ကဏ္ဍ:ထာမ်ပလိက်ဖာရဝ်သဳအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ် 14 296890 399112 2026-07-18T02:13:36Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်ဖာရဝ်သဳအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဖ]]" 399112 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်ဖာရဝ်သဳအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|ဖ]] a2b5566p0vcrdf8uj7q42e6pesth3vm ထာမ်ပလိက်:osx-decl-noun-i-f 10 296891 399113 2026-07-18T02:15:47Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:osx-decl-noun|show|decl=i-f}}<!-- --><noinclude>{{documentation}}</noinclude>" 399113 wikitext text/x-wiki {{#invoke:osx-decl-noun|show|decl=i-f}}<!-- --><noinclude>{{documentation}}</noinclude> 7tbbsfzfom4vo7wuq9f4z0vqjupu8v7 မဝ်ဂျူ:osx-decl-noun 828 296892 399114 2026-07-18T02:35:53Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "local export = {} local m_links = require("Module:links") local m_utils = require("Module:utilities") local lang = require("Module:languages").getByCode("osx") local decl_data = {} decl_data["a-f"] = { params = { [1] = {}, }, } setmetatable(decl_data["a-f"], {__call = function(self, args, data) data.decl_type = "ဣတ္တိလိၚ်တံအရေဝ်-(အ/a)" data.forms["nom_sg"] = {args[1] .. "a..." 399114 Scribunto text/plain local export = {} local m_links = require("Module:links") local m_utils = require("Module:utilities") local lang = require("Module:languages").getByCode("osx") local decl_data = {} decl_data["a-f"] = { params = { [1] = {}, }, } setmetatable(decl_data["a-f"], {__call = function(self, args, data) data.decl_type = "ဣတ္တိလိၚ်တံအရေဝ်-(အ/a)" data.forms["nom_sg"] = {args[1] .. "a"} data.forms["acc_sg"] = {args[1] .. "a"} data.forms["gen_sg"] = {args[1] .. "ō"} data.forms["dat_sg"] = {args[1] .. "u"} data.forms["nom_pl"] = {args[1] .. "a"} data.forms["acc_pl"] = {args[1] .. "a"} data.forms["gen_pl"] = {args[1] .. "anō"} data.forms["dat_pl"] = {args[1] .. "um"} -- table.insert(data.categories, "Old Saxon a-stem nouns") end }) decl_data["a-f-v"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["a-f-v"], {__call = function(self, args, data) data.decl_type = "ဣတ္တိလိၚ်တံအရေဝ်-(အ/a)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[2] .. "ō"} data.forms["dat_sg"] = {args[2] .. "u"} data.forms["nom_pl"] = {args[2] .. "a"} data.forms["acc_pl"] = {args[2] .. "a"} data.forms["gen_pl"] = {args[2] .. "anō"} data.forms["dat_pl"] = {args[2] .. "um"} -- table.insert(data.categories, "Old Saxon a-stem nouns") end }) decl_data["a-m"] = { params = { [1] = {}, }, } setmetatable(decl_data["a-m"], {__call = function(self, args, data) data.decl_type = "ပုလ္လိၚ်တံအရေဝ်-(အ/a)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[1] .. "es"} data.forms["dat_sg"] = {args[1] .. "e"} data.forms["nom_pl"] = {args[1] .. "os"} data.forms["acc_pl"] = {args[1] .. "os"} data.forms["gen_pl"] = {args[1] .. "ō"} data.forms["dat_pl"] = {args[1] .. "um"} -- table.insert(data.categories, "Old Saxon a-stem nouns") end }) decl_data["a-m-v"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["a-m-v"], {__call = function(self, args, data) data.decl_type = "ပုလ္လိၚ်တံအရေဝ်-(အ/a)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[2] .. "es"} data.forms["dat_sg"] = {args[2] .. "e"} data.forms["nom_pl"] = {args[2] .. "os"} data.forms["acc_pl"] = {args[2] .. "os"} data.forms["gen_pl"] = {args[2] .. "ō"} data.forms["dat_pl"] = {args[2] .. "um"} -- table.insert(data.categories, "Old Saxon a-stem nouns") end }) decl_data["a-n"] = { params = { [1] = {}, }, } setmetatable(decl_data["a-n"], {__call = function(self, args, data) decl_data["a-m"](args, data) data.decl_type = "နပုလ္လိၚ်တံအရေဝ်-(အ/a)" data.forms["nom_pl"] = {args[1]} data.forms["acc_pl"] = {args[1]} data.forms["dat_pl"] = {args[1] .. "un"} end }) decl_data["a-n1"] = { params = { [1] = {}, }, } setmetatable(decl_data["a-n1"], {__call = function(self, args, data) decl_data["a-m"](args, data) data.decl_type = "နပုလ္လိၚ်တံအရေဝ်-(အ/a)" data.forms["nom_pl"] = {args[1] .. "u"} data.forms["acc_pl"] = {args[1] .. "u"} end }) decl_data["a-n1-1"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["a-n1-1"], {__call = function(self, args, data) decl_data["a-m-v"](args, data) data.decl_type = "နပုလ္လိၚ်တံအရေဝ်-(အ/a)" data.forms["nom_pl"] = {args[2] .. "u"} data.forms["acc_pl"] = {args[2] .. "u"} end }) decl_data["a-n2"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["a-n2"], {__call = function(self, args, data) decl_data["a-m-v"](args, data) data.decl_type = "နပုလ္လိၚ်တံအရေဝ်-(အ/a)" data.forms["nom_pl"] = {args[1]} data.forms["acc_pl"] = {args[1]} end }) decl_data["i-f"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["i-f"], {__call = function(self, args, data) data.decl_type = "ဣတ္တိလိၚ်တံအရေဝ်-(ဣ/i)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[2] .. "i"} data.forms["dat_sg"] = {args[2] .. "i"} data.forms["nom_pl"] = {args[2] .. "i"} data.forms["acc_pl"] = {args[2] .. "i"} data.forms["gen_pl"] = {args[2] .. "iō"} data.forms["dat_pl"] = {args[2] .. "ium"} -- table.insert(data.categories, "Old Saxon i-stem nouns") end }) decl_data["i-f2"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["i-f2"], {__call = function(self, args, data) decl_data["i-f"](args, data) data.forms["gen_pl"] = {args[1] .. "iō"} data.forms["dat_pl"] = {args[1] .. "ium"} end }) decl_data["i-m"] = { params = { [1] = {}, [2] = {}, ["mutstem"] = {}, }, } setmetatable(decl_data["i-m"], {__call = function(self, args, data) data.decl_type = "ပုလ္လိၚ်တံအရေဝ်-(ဣ/i)" data.forms["nom_sg"] = {args.mutstem or args[1]} data.forms["acc_sg"] = {args.mutstem or args[1]} data.forms["gen_sg"] = {args[1] .. "ies"} data.forms["dat_sg"] = {args[1] .. "ie"} data.forms["nom_pl"] = {args[2]} data.forms["acc_pl"] = {args[2]} data.forms["gen_pl"] = {args[1] .. "iō"} data.forms["dat_pl"] = {args[1] .. "ium"} -- table.insert(data.categories, "Old Saxon i-stem nouns") end }) decl_data["i-m1"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["i-m1"], {__call = function(self, args, data) data.decl_type = "ပုလ္လိၚ်တံအရေဝ်-(ဣ/i)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[1] .. "es"} data.forms["dat_sg"] = {args[1] .. "e"} data.forms["nom_pl"] = {args[2] .. "i"} data.forms["acc_pl"] = {args[2] .. "i"} data.forms["gen_pl"] = {args[1] .. "iō"} data.forms["dat_pl"] = {args[1] .. "ium"} -- table.insert(data.categories, "Old Saxon i-stem nouns") end }) decl_data["ja-m"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["ja-m"], {__call = function(self, args, data) data.decl_type = "ပုလ္လိၚ်တံအရေဝ်-(ဇ/n)" data.forms["nom_sg"] = {args[1] .. "i"} data.forms["acc_sg"] = {args[1] .. "i"} data.forms["gen_sg"] = {args[1] .. "ies"} data.forms["dat_sg"] = {args[1] .. "ie"} if not args.nopl then data.forms["nom_pl"] = {args[1] .. "ios"} data.forms["acc_pl"] = {args[1] .. "ios"} data.forms["gen_pl"] = {args[1] .. "iō"} data.forms["dat_pl"] = {args[1] .. "ium"} end -- table.insert(data.categories, "Old Saxon ja-stem nouns") end }) decl_data["ja-n"] = { params = { [1] = {}, }, } setmetatable(decl_data["ja-n"], {__call = function(self, args, data) decl_data["ja-m"](args, data) data.decl_type = "နပုလ္လိၚ်တံအရေဝ်-(ဇ/n)" if not args.nopl then data.forms["nom_pl"] = {args[1] .. "i"} data.forms["acc_pl"] = {args[1] .. "i"} end end }) decl_data["ja-n2"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["ja-n2"], {__call = function(self, args, data) data.decl_type = "နပုလ္လိၚ်တံအရေဝ်-(ဇ/n)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[2] .. "ies"} data.forms["dat_sg"] = {args[2] .. "ie"} data.forms["nom_pl"] = {args[1]} data.forms["acc_pl"] = {args[1]} data.forms["gen_pl"] = {args[2] .. "iō"} data.forms["dat_pl"] = {args[2] .. "ium"} -- table.insert(data.categories, "Old Saxon ja-stem nouns") end }) decl_data["n-m"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["n-m"], {__call = function(self, args, data) data.decl_type = "ပုလ္လိၚ်တံအရေဝ်-(န်/n)" data.forms["nom_sg"] = {args[1] .. "o"} data.forms["acc_sg"] = {args[1] .. "on", args[1] .. "an"} data.forms["gen_sg"] = {args[1] .. "en", args[1] .. "an", args[1] .. "on" } data.forms["dat_sg"] = {args[1] .. "en", args[1] .. "an", args[1] .. "on" } if not args.nopl then data.forms["nom_pl"] = {args[1] .. "on", args[1] .. "un", args[1] .. "an"} data.forms["acc_pl"] = {args[1] .. "on", args[1] .. "un", args[1] .. "an"} data.forms["gen_pl"] = {args[1] .. "ono"} data.forms["dat_pl"] = {args[1] .. "un", args[1] .. "on"} end -- table.insert(data.categories, "Old Saxon n-stem nouns") end }) decl_data["n-n"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["n-n"], {__call = function(self, args, data) decl_data["n-m"](args, data) data.decl_type = "နပုလ္လိၚ်တံအရေဝ်-(န်/n)" data.forms["nom_sg"] = {args[1] .. "a"} data.forms["acc_sg"] = {args[1] .. "a"} end }) decl_data["n-f"] = { params = { [1] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["n-f"], {__call = function(self, args, data) decl_data["n-m"](args, data) data.decl_type = "ဣတ္တိလိၚ်တံအရေဝ်-(န်/n)" data.forms["nom_sg"] = {args[1] .. "a"} data.forms["acc_sg"] = {args[1] .. "un", args[1] .. "an", args[1] .. "on" } data.forms["gen_sg"] = {args[1] .. "un", args[1] .. "an", args[1] .. "on" } data.forms["dat_sg"] = {args[1] .. "un", args[1] .. "an", args[1] .. "on" } data.forms["nom_pl"] = {args[1] .. "un", args[1] .. "an", args[1] .. "on" } data.forms["acc_pl"] = {args[1] .. "un", args[1] .. "an", args[1] .. "on" } data.forms["dat_pl"] = {args[1] .. "un", args[1] .. "an", args[1] .. "on" } end }) decl_data["nd"] = { params = { [1] = {}, }, } setmetatable(decl_data["nd"], {__call = function(self, args, data) data.decl_type = "တံအရေဝ်-(န္ဒ်/nd)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[1] .. "es"} data.forms["dat_sg"] = {args[1] .. "e"} data.forms["nom_pl"] = {args[1]} data.forms["acc_pl"] = {args[1]} data.forms["gen_pl"] = {args[1] .. "ō"} data.forms["dat_pl"] = {args[1] .. "um"} -- table.insert(data.categories, "Old Saxon nd-stem nouns") end }) decl_data["o-f"] = { params = { [1] = {}, [2] = {}, ["nopl"] = {}, }, } setmetatable(decl_data["o-f"], {__call = function(self, args, data) data.decl_type = "ဣတ္တိလိၚ်တံအရေဝ်-(ဥူ/ō)" data.forms["nom_sg"] = {args[2] or (args[1] .. "a")} data.forms["acc_sg"] = {args[2] or (args[1] .. "a")} data.forms["gen_sg"] = {args[1] .. "a", args[1] .. "u", args[1] .. "o"} data.forms["dat_sg"] = {args[1] .. "u", args[1] .. "o", args[1] .. "a"} if not args.nopl then data.forms["nom_pl"] = {args[1] .. "a"} data.forms["acc_pl"] = {args[1] .. "a"} data.forms["gen_pl"] = {args[1] .. "ono"} data.forms["dat_pl"] = {args[1] .. "on", args[1] .. "um", args[1] .. "un"} end -- table.insert(data.categories, "Old Saxon ō-stem nouns") end }) decl_data["r-n"] = { params = { [1] = {}, }, } setmetatable(decl_data["r-n"], {__call = function(self, args, data) data.decl_type = "တံအရေဝ်-(ရ/r)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[1]} data.forms["dat_sg"] = {args[1]} data.forms["nom_pl"] = {args.mutstem or args[1]} data.forms["acc_pl"] = {args.mutstem or args[1]} data.forms["gen_pl"] = {(args.mutstem2 or args[1]) .. "ō"} data.forms["dat_pl"] = {(args.mutstem2 or args[1]) .. "um"} -- table.insert(data.categories, "Old Saxon r-stem nouns") end }) decl_data["u-f"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["u-f"], {__call = function(self, args, data) data.decl_type = "ဣတ္တိလိၚ်တံအရေဝ်-(ဥ/u)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[2] .. "i"} data.forms["dat_sg"] = {args[2] .. "i"} data.forms["nom_pl"] = {args[2] .. "i"} data.forms["acc_pl"] = {args[2] .. "i"} data.forms["gen_pl"] = {args[1] .. "o"} data.forms["dat_pl"] = {args[1] .. "um"} -- table.insert(data.categories, "Old Saxon u-stem nouns") end }) decl_data["u-m"] = { params = { [1] = {}, }, } setmetatable(decl_data["u-m"], {__call = function(self, args, data) data.decl_type = "ပုလ္လိၚ်တံအရေဝ်-(ဥ/u)" data.forms["nom_sg"] = {args[1] .. "u"} data.forms["acc_sg"] = {args[1] .. "u"} data.forms["gen_sg"] = {args[1] .. "ies", args[1] .. "eas"} data.forms["dat_sg"] = {args[1] .. "o", args[1] .. "ie", args[1] .. "i", args[1] .. "e"} data.forms["nom_pl"] = {args[1] .. "i"} data.forms["acc_pl"] = {args[1] .. "i"} data.forms["gen_pl"] = {args[1] .. "io", args[1] .. "o" } data.forms["dat_pl"] = {args[1] .. "un", args[1] .. "iun"} -- table.insert(data.categories, "Old Saxon u-stem nouns") end }) decl_data["u-n"] = { params = { [1] = {}, }, } setmetatable(decl_data["u-n"], {__call = function(self, args, data) data.decl_type = "နပုလ္လိၚ်တံအရေဝ်-(ဥ/u)" data.forms["nom_sg"] = {args[1] .. "u", args[1] .. "o"} data.forms["acc_sg"] = {args[1] .. "u", args[1] .. "o"} data.forms["gen_sg"] = {args[1] .. "es", args[1] .. "as"} data.forms["dat_sg"] = {args[1] .. "e"} data.forms["ins_sg"] = {args[1] .. "o"} -- table.insert(data.categories, "Old Saxon u-stem nouns") end }) decl_data["wa-m"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["wa-m"], {__call = function(self, args, data) data.decl_type = "ပုလ္လိၚ်တံအရေဝ်-(ဝ/wa)" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {args[2] .. "wes"} data.forms["dat_sg"] = {args[2] .. "we"} data.forms["nom_pl"] = {args[2] .. "wos"} data.forms["acc_pl"] = {args[2] .. "wos"} data.forms["gen_pl"] = {args[2] .. "wō"} data.forms["dat_pl"] = {args[2] .. "wum"} -- table.insert(data.categories, "Old Saxon wa-stem nouns") end }) decl_data["wa-n"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["wa-n"], {__call = function(self, args, data) decl_data["wa-m"](args, data) data.decl_type = "နပုလ္လိၚ်တံအရေဝ်-(ဝ/wa)" data.forms["nom_pl"] = {args[1]} data.forms["acc_pl"] = {args[1]} end }) decl_data["z-n"] = { params = { [1] = {}, [2] = {}, }, } setmetatable(decl_data["z-n"], {__call = function(self, args, data) local a2 = args[2] or args[1] data.decl_type = "z-stem" data.forms["nom_sg"] = {args[1]} data.forms["acc_sg"] = {args[1]} data.forms["gen_sg"] = {a2 .. "es"} data.forms["dat_sg"] = {a2 .. "e"} data.forms["nom_pl"] = {a2 .. "iru"} data.forms["acc_pl"] = {a2 .. "iru"} data.forms["gen_pl"] = {a2 .. "irō"} data.forms["dat_pl"] = {a2 .. "irum"} -- table.insert(data.categories, "Old Saxon z-stem nouns") end }) -- The main entry point for automatic declension. function export.show(frame) local parent_args = frame:getParent().args local decl_type = (frame.args["decl"] or parent_args["decl"]) or "a-m" if not decl_data[decl_type] then error("Unknown declension '" .. decl_type .. "'") end local data = {forms = {}, categories = {}} data.head = parent_args["head"] or nil local args = require("Module:parameters").process(parent_args, decl_data[decl_type].params, true) -- Override for templates if not args[1] then setmetatable(args, {__index = function(self, key) return "{{{" .. key .. "}}}" end }) end -- Generate the forms if parent_args.irr then -- table.insert(data.categories, "Old Saxon irregular nouns") if decl_data.irregular[parent_args.irr] then decl_data.irregular[parent_args.irr](data) else decl_data[decl_type](args, data) end else decl_data[decl_type](args, data) end -- Make the table return make_table(data) end -- The main entry point for manual declension. function export.show_manual(frame) local parent_args = frame:getParent().args local params = { [1] = {}, [2] = {}, [3] = {}, [4] = {}, [5] = {}, [6] = {}, [7] = {}, [8] = {}, [9] = {}, ["head"] = {}, -- currently ignored } local data = {forms = {}, categories = {}} local args = require("Module:parameters").process(parent_args, params) local function split(arg) return arg and mw.text.split(arg, "%s*,%s*") or nil end data.forms.nom_sg = split(args[1]) data.forms.nom_pl = split(args[2]) data.forms.acc_sg = split(args[3]) data.forms.acc_pl = split(args[4]) data.forms.gen_sg = split(args[5]) data.forms.gen_pl = split(args[6]) data.forms.dat_sg = split(args[7]) data.forms.dat_pl = split(args[8]) data.forms.ins_sg = split(args[9]) data.decl_type = "irregular" -- Make the table return make_table(data) end function make_table(data) local function show_form(form) if not form then return "—" end local ret = {} for key, subform in ipairs(form) do if mw.title.getCurrentTitle().nsText == "ဗီုပြၚ်သိုၚ်တၟိ" and subform ~= "—" then subform = "*" .. subform end table.insert(ret, m_links.full_link({lang = lang, term = subform})) end return table.concat(ret, ", ") end local function repl(param) if param == "decl_type" then return data.decl_type else return show_form(data.forms[param]) end end local wikicode = mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-top', args = { title = "''{{{nom_sg}}}'' ({{{decl_type}}})", palette = 'yellow', tall = 'yes', } } .. [=[ |- ! ! ကိုန်ဨကဝုစ် ! ကိုန်ဗဟုဝစ် |- ! မဒုၚ်ယၟု | {{{nom_sg}}} | {{{nom_pl}}} |- ! ကမ္မကာရက | {{{acc_sg}}} | {{{acc_pl}}} |- ! ဗဳဇဂကူ | {{{gen_sg}}} | {{{gen_pl}}} |- ! ပြကမ္မကာရက | {{{dat_sg}}} | {{{dat_pl}}} |- ! တိၚ်တိုက်ကပေါတ်ကွိၚ်ကွိုက် | {{{ins_sg}}} | {{{ins_pl}}} ]=] .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' } return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. m_utils.format_categories(data.categories, lang) end return export opbwzet0k4j23z145fnywg917qj7wny မဝ်ဂျူ:osx-decl-noun/documentation 828 296893 399115 2026-07-18T02:37:24Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|osx}} </includeonly>" 399115 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|osx}} </includeonly> la7dayblkm7l4h93rk9zz8vlly6p63i 399116 399115 2026-07-18T02:37:52Z 咽頭べさ 33 咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[မဝ်ဂျူ:osx-decl-noun/doc]] ဇရေင် [[မဝ်ဂျူ:osx-decl-noun/documentation]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင် 399115 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> {{module cat|osx}} </includeonly> la7dayblkm7l4h93rk9zz8vlly6p63i ကဏ္ဍ:မဝ်ဂျူသာတ်သိုန်တြေံဂမၠိုၚ် 14 296894 399117 2026-07-18T02:39:45Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » :ကဏ္ဍ:ဘာသာသာတ်သိုန်တြေံ|သာတ်သိုန်တ..." 399117 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာသာတ်သိုန်တြေံ|သာတ်သိုန်တြေံ]] » '''မဝ်ဂျူဂမၠိုၚ်''' :[[:ကဏ္ဍ:မဝ်ဂျူဂမၠိုၚ်|မဝ်ဂျူ]]ဘာသာသာတ်သိုန်တြေံ၊ မနွံကဵုလုပ်အဝေါၚ်ကုဒ် Lua နကဵုမကၠောန်ဗဒှ် ကဵု မစဳရေၚ်ယဵုဒုၚ်သ္ပမာန်ဂမၠိုၚ်။ [[ကဏ္ဍ:ဘာသာသာတ်သိုန်တြေံ]][[ကဏ္ဍ:မဝ်ဂျူဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]] hifmhe6bg0wfxbi9zpirvh9joc5f8xh ကဏ္ဍ:မဝ်ဂျူပွမပြံၚ်လှာဲသာတ်သိုန်တြေံဂမၠိုၚ် 14 296895 399118 2026-07-18T02:41:09Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:မဝ်ဂျူသာတ်သိုန်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]]ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမ..." 399118 wikitext text/x-wiki [[ကဏ္ဍ:မဝ်ဂျူသာတ်သိုန်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:မဝ်ဂျူဗီုအပြံၚ်အလှာဲဝေါဟာဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]] 0tvzbiusvak5ned17t7uz3oz0b6p01s ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ် 14 296896 399119 2026-07-18T02:42:49Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]]" 399119 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]] crzq2st6zcudgg3phtov48sqc9vwws3 ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံဂမၠိုၚ် 14 296897 399120 2026-07-18T02:43:52Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ဘာသာသာတ်သိုန်တြေံ]][[ကဏ္ဍ:ထာမ်ပလိက်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]]" 399120 wikitext text/x-wiki [[ကဏ္ဍ:ဘာသာသာတ်သိုန်တြေံ]][[ကဏ္ဍ:ထာမ်ပလိက်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]] oevdt54j6quvlqfafs59cnt991smqxq ထာမ်ပလိက်:osx-decl-noun-i-f/documentation 10 296898 399121 2026-07-18T02:46:01Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်]]" 399121 wikitext text/x-wiki {{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်]] kqwzip8o7m44z2btw1glxe38rhk2zqd ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ် 14 296899 399122 2026-07-18T02:47:03Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]]" 399122 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်သာတ်သိုန်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|သ]] 69el2y90vrgpza8gjmc9m7ah5qwi0t2 ထာမ်ပလိက်:sv-infl-noun-c-er 10 296900 399123 2026-07-18T02:48:37Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:sv-nouns|show|c-er}}<noinclude>{{documentation}}</noinclude>" 399123 wikitext text/x-wiki {{#invoke:sv-nouns|show|c-er}}<noinclude>{{documentation}}</noinclude> fu9tr5k1auydgffc6wegg7qja9bp6cg ထာမ်ပလိက်:sv-infl-noun-c-er/documentation 10 296901 399124 2026-07-18T02:49:54Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} ==Usage== On the page for '''[[minut]]''' * <tt><nowiki>{{sv-infl-noun-c-er}}</nowiki></tt> On the page for '''[[filosofi]]''' * <tt><nowiki>{{sv-infl-noun-c-er|ien=yes}}</nowiki></tt> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်သွဳဒေန်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|c-er]] </includeonly>" 399124 wikitext text/x-wiki {{documentation subpage}} ==Usage== On the page for '''[[minut]]''' * <tt><nowiki>{{sv-infl-noun-c-er}}</nowiki></tt> On the page for '''[[filosofi]]''' * <tt><nowiki>{{sv-infl-noun-c-er|ien=yes}}</nowiki></tt> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်သွဳဒေန်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|c-er]] </includeonly> a379f298imgolrzfm54oinkma7u08kb kraptr 0 296902 399125 2026-07-18T02:53:03Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==နဳနိုတ်တြေံ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ{{der|non|gem-pro|*kraftuz}} ===နာမ်=== {{non-noun|m}} # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ ====ပရေၚ်ကၠောံ==== {{non-decl-m-a|krapt|krǫpt}} ===ပွံၚ်နဲတၞဟ်=== * {{alt|non|krǫptr}} ===မဒုၚ်လွဳစ=== * {{desc|is|kraftur}} * {{desc|fo|kraft..." 399125 wikitext text/x-wiki ==နဳနိုတ်တြေံ== ===နိရုတ်=== ဝေါဟာကၠုၚ်နူ{{der|non|gem-pro|*kraftuz}} ===နာမ်=== {{non-noun|m}} # ဇြဟတ်ဇၟူ၊ ဇြဟတ်။ ====ပရေၚ်ကၠောံ==== {{non-decl-m-a|krapt|krǫpt}} ===ပွံၚ်နဲတၞဟ်=== * {{alt|non|krǫptr}} ===မဒုၚ်လွဳစ=== * {{desc|is|kraftur}} * {{desc|fo|kraft|kraftur}} * {{desc|no|-}} {{l|nb|kraft}} * {{desc|ovd|krapt}} * {{desctree|gmq-osw|krapter}} * {{desc|da|kraft}} 21l86u8a663jwf9o776cx1ilr43ppgu krǫptr 0 296903 399126 2026-07-18T02:53:58Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "==နဳနိုတ်တြေံ== ===နာမ်=== {{non-noun|m}} # {{alt form|non|kraptr}}" 399126 wikitext text/x-wiki ==နဳနိုတ်တြေံ== ===နာမ်=== {{non-noun|m}} # {{alt form|non|kraptr}} axgu8udvqox479eqaamdiqkudor07xh ထာမ်ပလိက်:non-decl-m-a 10 296904 399127 2026-07-18T02:55:32Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{non-decl-blank-{{{form|full}}}{{#if:{{{indef|}}}|-indef}} | title = {{{title|''{{pagename}}''}}} | stem = strong ''a''-stem | g = masculine | nsi = {{{nsi|{{{ns|{{{1}}}r}}}}}} | asi = {{{asi|{{{as|{{{1}}}}}}}}} | dsi = {{{dsi|{{{ds|{{{3|{{{1}}}}}}i}}}}}} | gsi = {{{gsi|{{{gs|{{{1}}}s}}}}}} | nsd = {{{nsd|{{{ns|{{{1}}}r}}}inn}}} | asd = {{{asd|{{{as|{{{..." 399127 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{non-decl-blank-{{{form|full}}}{{#if:{{{indef|}}}|-indef}} | title = {{{title|''{{pagename}}''}}} | stem = strong ''a''-stem | g = masculine | nsi = {{{nsi|{{{ns|{{{1}}}r}}}}}} | asi = {{{asi|{{{as|{{{1}}}}}}}}} | dsi = {{{dsi|{{{ds|{{{3|{{{1}}}}}}i}}}}}} | gsi = {{{gsi|{{{gs|{{{1}}}s}}}}}} | nsd = {{{nsd|{{{ns|{{{1}}}r}}}inn}}} | asd = {{{asd|{{{as|{{{1}}}}}}inn}}} | dsd = {{{dsd|{{{ds|{{{3|{{{1}}}}}}i}}}num}}} | gsd = {{{gsd|{{{gs|{{{1}}}s}}}ins}}} | npi = {{{npi|{{{np|{{{3|{{{1}}}}}}ar}}}}}} | api = {{{api|{{{ap|{{{3|{{{1}}}}}}a}}}}}} | dpi = {{{dpi|{{{dp|{{{2|{{{3|{{{1}}}}}}}}}um}}}}}} | gpi = {{{gpi|{{{gp|{{{3|{{{1}}}}}}a}}}}}} | npd = {{{npd|{{{np|{{{3|{{{1}}}}}}ar}}}nir}}} | apd = {{{apd|{{{ap|{{{3|{{{1}}}}}}a}}}na}}} | dpd = {{{dpd|{{{dp|{{{2|{{{3|{{{1}}}}}}}}}u}}}num}}} | gpd = {{{gpd|{{{gp|{{{3|{{{1}}}}}}a}}}nna}}} | notes = {{{notes|}}} }}<noinclude>{{documentation}}</noinclude> kx3dn7lwcpv6e09aft9qko1c3jgm6ne ထာမ်ပလိက်:non-decl-m-a/documentation 10 296905 399128 2026-07-18T02:57:01Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{also|Template:non-decl-m-an|Template:non-decl-n-a}} __NOTOC__ ==Usage== This template should be used with enties of Old Norse strong ''a''-stem masculine nouns, except for ''ja''-stem and ''wa''-stem masculine nouns, see [[Template:non-decl-m-ja]] and [[Template:non-decl-m-wa]] respectively. ===Parameters=== This template uses three unnamed templates, as described below: :'''<code>1</cod..." 399128 wikitext text/x-wiki {{documentation subpage}} {{also|Template:non-decl-m-an|Template:non-decl-n-a}} __NOTOC__ ==Usage== This template should be used with enties of Old Norse strong ''a''-stem masculine nouns, except for ''ja''-stem and ''wa''-stem masculine nouns, see [[Template:non-decl-m-ja]] and [[Template:non-decl-m-wa]] respectively. ===Parameters=== This template uses three unnamed templates, as described below: :'''<code>1</code>''' ('''''required''''') the stem of the noun. :'''<code>2</code>''' ('''required if applicable''') the (contracted) stem of the noun with u-umlaut. :'''<code>3</code>''' ('''required if applicable''') the contracted stem of the noun. :'''<code>form</code>''' Is used if the noun is inflected either only in the singular or only in the plural. If so, <code>form=sing</code> or <code>form=plur</code>. :'''<code>title</code>''' Is used if the box should bear another name than the pagename. ====Standard parameters==== {{top4}} * <code>ns</code> nominative singular ** <code>nsi</code> …indefinite ** <code>nsd</code> …definite * <code>np</code> nominative plural ** <code>npi</code> …indefinite ** <code>npd</code> …definite * <code>as</code> accusative singular ** <code>asi</code> …indefinite ** <code>asd</code> …definite * <code>ap</code> accusative plural ** <code>api</code> …indefinite ** <code>apd</code> …definite * <code>ds</code> dative singular ** <code>dsi</code> …indefinite ** <code>dsd</code> …definite * <code>dp</code> dative plural ** <code>dpi</code> …indefinite ** <code>dpd</code> …definite * <code>gs</code> genitive singular ** <code>gsi</code> …indefinite ** <code>gsd</code> …definite * <code>gp</code> genitive plural ** <code>gpi</code> …indefinite ** <code>gpd</code> …definite {{bottom}} ==Examples== '''( 1 )''' The word '''{{m|non|armr||arm}}''' has the stem ''arm'' (<code>1=arm</code>), which becomes ''ǫrm'' (<code>2=ǫrm</code>) with u-umlaut. {{non-decl-m-a|title=armr|arm|ǫrm}} ---- '''( 2 )''' The word '''{{m|non|hamarr||hammer}}''' has the stem ''hamar'', which becomes ''hǫmr'' with u-umlaut and contraction. Contracted without u-umlaut, the stem is ''hamr''. Therefore: <code>1=hamar</code>, <code>2=hǫmr</code> and <code>3=hamr</code>. {{non-decl-m-a|title=hamarr|hamar|hǫmr|hamr}} ---- ==See Also== * [[Template:non-decl-m-ja]] for strong ''ja''-stem masculine nouns. * [[Template:non-decl-m-wa]] for strong ''wa''-stem masculine nouns. <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်|m-a]] </includeonly> 4bljmi7ipp856zuwwqzv06e4v9rvaq4 ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ် 14 296906 399129 2026-07-18T02:58:10Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|န]]" 399129 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|န]] jr50mjja2qpqiy5dqkv3zxiqlnh0rrh ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဂမၠိုၚ် 14 296907 399130 2026-07-18T02:59:44Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|န]]" 399130 wikitext text/x-wiki [[ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|န]] 0m5davkductyy5wdq4mpy080cx5zp1d ထာမ်ပလိက်:non-decl-blank-full 10 296908 399131 2026-07-18T03:03:09Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{inflection-table-top|palette=blue|title=မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{m-self|non||{{{title}}}}} {{#if:{{{stem|}}}|({{{stem}}})}}}} ! rowspan=2 | {{{g|}}} ! colspan=2 | ကိုန်ဨကဝုစ် ! colspan=2 | ကိုန်ဗဟုဝစ် |- ! class="secondary" | ဟွံချိုတ်ပၠိုတ် ! class="secondary" | ချိုတ်ပၠိုတ် ! clas..." 399131 wikitext text/x-wiki {{inflection-table-top|palette=blue|title=မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{m-self|non||{{{title}}}}} {{#if:{{{stem|}}}|({{{stem}}})}}}} ! rowspan=2 | {{{g|}}} ! colspan=2 | ကိုန်ဨကဝုစ် ! colspan=2 | ကိုန်ဗဟုဝစ် |- ! class="secondary" | ဟွံချိုတ်ပၠိုတ် ! class="secondary" | ချိုတ်ပၠိုတ် ! class="secondary" | ဟွံချိုတ်ပၠိုတ် ! class="secondary" | ချိုတ်ပၠိုတ် |- ! မဒုၚ်ယၟု | {{non-decl-cell|{{{nsi}}}|nsi}} | {{non-decl-cell|{{{nsd}}}|nsd}} | {{non-decl-cell|{{{npi}}}|npi}} | {{non-decl-cell|{{{npd}}}|npd}} |- ! ကမ္မကာရက | {{non-decl-cell|{{{asi}}}|asi}} | {{non-decl-cell|{{{asd}}}|asd}} | {{non-decl-cell|{{{api}}}|api}} | {{non-decl-cell|{{{apd}}}|apd}} |- ! ပြကမ္မကာရက | {{non-decl-cell|{{{dsi}}}|dsi}} | {{non-decl-cell|{{{dsd}}}|dsd}} | {{non-decl-cell|{{{dpi}}}|dpi}} | {{non-decl-cell|{{{dpd}}}|dpd}} |- ! ဗဳဇဂကူ | {{non-decl-cell|{{{gsi}}}|gsi}} | {{non-decl-cell|{{{gsd}}}|gsd}} | {{non-decl-cell|{{{gpi}}}|gpi}} | {{non-decl-cell|{{{gpd}}}|gpd}} {{inflection-table-bottom|notes={{#if:{{{notes|}}}|{{{notes}}}|}}}}<noinclude>{{documentation}}</noinclude> jlalul7obzpwfab2gq0lhcbpmpqnq1l ထာမ်ပလိက်:non-decl-blank-full/documentation 10 296909 399132 2026-07-18T03:04:21Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်| blank-full]] </includeonly>" 399132 wikitext text/x-wiki {{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်| blank-full]] </includeonly> m2gk7bvsxtvk2ir12fyq7lsqyw9gzwr ထာမ်ပလိက်:non-decl-cell 10 296910 399133 2026-07-18T03:05:08Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:non-cell|create}}<noinclude>{{documentation}}</noinclude>" 399133 wikitext text/x-wiki {{#invoke:non-cell|create}}<noinclude>{{documentation}}</noinclude> qa3o998j8oo07qb86wt4u587hnikfht မဝ်ဂျူ:non-cell 828 296911 399134 2026-07-18T03:06:09Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "local m_links = require("Module:links") local lang = require("Module:languages").getByCode("non") local export = {} local accel_forms = { --NOUNS nsi = "nom|s", nsd = "def|nom|s", npi = "nom|p", npd = "def|nom|p", asi = "acc|s", asd = "def|acc|s", api = "acc|p", apd = "def|acc|p", dsi = "dat|s", dsd = "def|dat|s", dpi = "dat|p", dpd = "def|dat|p", gsi = "gen|s", gsd = "def|gen|s", gpi = "gen|p", gpd..." 399134 Scribunto text/plain local m_links = require("Module:links") local lang = require("Module:languages").getByCode("non") local export = {} local accel_forms = { --NOUNS nsi = "nom|s", nsd = "def|nom|s", npi = "nom|p", npd = "def|nom|p", asi = "acc|s", asd = "def|acc|s", api = "acc|p", apd = "def|acc|p", dsi = "dat|s", dsd = "def|dat|s", dpi = "dat|p", dpd = "def|dat|p", gsi = "gen|s", gsd = "def|gen|s", gpi = "gen|p", gpd = "def|gen|p", --ADJECTIVES nsm = "m|nom|s", --strong nom. sg. nsf = "f|nom|s", nsn = "n|nom|s", asm = "m|acc|s", --strong acc. sg. asf = "f|acc|s", asn = "n|acc|s", gsm = "m|gen|s", --strong gen. sg. gsf = "f|gen|s", gsn = "n|gen|s", dsm = "m|dat|s", --strong dat. sg. dsf = "f|dat|s", dsn = "n|dat|s", npm = "m|nom|p", --strong nom. pl. npf = "f|nom|p", npn = "n|nom|p", apm = "m|acc|p", --strong acc. pl. apf = "f|acc|p", apn = "n|acc|p", gp = "m//f//n|gen|p", --strong gen. pl. dp = "m//f//n|dat|p", --VERBS -- Active -- No active infinitve is included since it is the lemma form. pres_part = "act|pres|part", past_part = "act|past|part", pres_ind_1sg = "1|s|pres|act|ind", pres_ind_2sg = "2|s|pres|act|ind", pres_ind_3sg = "3|s|pres|act|ind", pres_ind_1pl = "1|p|pres|act|ind", pres_ind_2pl = "2|p|pres|act|ind", pres_ind_3pl = "3|p|pres|act|ind", past_ind_1sg = "1|s|past|act|ind", past_ind_2sg = "2|s|past|act|ind", past_ind_3sg = "3|s|past|act|ind", past_ind_1pl = "1|p|past|act|ind", past_ind_2pl = "2|p|past|act|ind", past_ind_3pl = "3|p|past|act|ind", pres_sub_1sg = "1|s|pres|act|sub", pres_sub_2sg = "2|s|pres|act|sub", pres_sub_3sg = "3|s|pres|act|sub", pres_sub_1pl = "1|p|pres|act|sub", pres_sub_2pl = "2|p|pres|act|sub", pres_sub_3pl = "3|p|pres|act|sub", past_sub_1sg = "1|s|past|act|sub", past_sub_2sg = "2|s|past|act|sub", past_sub_3sg = "3|s|past|act|sub", past_sub_1pl = "1|p|past|act|sub", past_sub_2pl = "2|p|past|act|sub", past_sub_3pl = "3|p|past|act|sub", impr_2sg = "2|s|act|imp", impr_1pl = "1|p|act|imp", impr_2pl = "2|p|act|imp", -- Mediopassive mp_infinitive = "mp|inf", mp_pres_part = "mp|pres|part", mp_past_part = "mp|past|part", mp_pres_ind_1sg = "1|s|pres|mp|ind", mp_pres_ind_2sg = "2|s|pres|mp|ind", mp_pres_ind_3sg = "3|s|pres|mp|ind", mp_pres_ind_1pl = "1|p|pres|mp|ind", mp_pres_ind_2pl = "2|p|pres|mp|ind", mp_pres_ind_3pl = "3|p|pres|mp|ind", mp_past_ind_1sg = "1|s|past|mp|ind", mp_past_ind_2sg = "2|s|past|mp|ind", mp_past_ind_3sg = "3|s|past|mp|ind", mp_past_ind_1pl = "1|p|past|mp|ind", mp_past_ind_2pl = "2|p|past|mp|ind", mp_past_ind_3pl = "3|p|past|mp|ind", mp_pres_sub_1sg = "1|s|pres|mp|sub", mp_pres_sub_2sg = "2|s|pres|mp|sub", mp_pres_sub_3sg = "3|s|pres|mp|sub", mp_pres_sub_1pl = "1|p|pres|mp|sub", mp_pres_sub_2pl = "2|p|pres|mp|sub", mp_pres_sub_3pl = "3|p|pres|mp|sub", mp_past_sub_1sg = "1|s|past|mp|sub", mp_past_sub_2sg = "2|s|past|mp|sub", mp_past_sub_3sg = "3|s|past|mp|sub", mp_past_sub_1pl = "1|p|past|mp|sub", mp_past_sub_2pl = "2|p|past|mp|sub", mp_past_sub_3pl = "3|p|past|mp|sub", mp_impr_2sg = "2|s|mp|imp", mp_impr_1pl = "1|p|mp|imp", mp_impr_2pl = "2|p|mp|imp" } local mode_prefix = { --this is prefixed to the index value in accel_forms mpass = "mp_" } local mode_prepend = { --on the other hand, this is prefixed to the accelerated text itself wk = "weak|", str = "strong|", comp = "comparative|", wk_sup = "weak|superlative|", str_sup = "strong|superlative|" } function export.create(frame) local args = frame:getParent().args local links = {} if not args[1] or args[1] == "" then return "―" else local accel_form = args[2] local accel if accel_form then local mode = args[3] if mode and mode_prefix[mode] then accel_form = mode_prefix[mode] .. accel_form end if accel_forms[accel_form] then if mode and mode_prepend[mode] then accel_form = mode_prepend[mode] .. accel_forms[accel_form] else accel_form = accel_forms[accel_form] end end accel = {form = accel_form} end local words = mw.text.split(args[1], "%s*,%s*") if words then for i,j in ipairs(words) do table.insert(links, m_links.full_link({lang = lang, term = j, accel = accel})) end end end return table.concat(links, ", ") end return export jauxyakgr2u4kg9m7yprnfpvwvrxc2n မဝ်ဂျူ:non-cell/documentation 828 296912 399135 2026-07-18T03:08:19Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> [[ကဏ္ဍ:မဝ်ဂျူနဳနိုတ်တြေံဂမၠိုၚ်]] </includeonly>" 399135 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> [[ကဏ္ဍ:မဝ်ဂျူနဳနိုတ်တြေံဂမၠိုၚ်]] </includeonly> er8y488qdt3qhkcp02lwyrd3t93y3dm 399136 399135 2026-07-18T03:08:37Z 咽頭べさ 33 咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[မဝ်ဂျူ:non-cell/doc]] ဇရေင် [[မဝ်ဂျူ:non-cell/documentation]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင် 399135 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> <includeonly> [[ကဏ္ဍ:မဝ်ဂျူနဳနိုတ်တြေံဂမၠိုၚ်]] </includeonly> er8y488qdt3qhkcp02lwyrd3t93y3dm ကဏ္ဍ:မဝ်ဂျူနဳနိုတ်တြေံဂမၠိုၚ် 14 296913 399137 2026-07-18T03:10:23Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာနဳနိုတ်တြေံ|နဳနိုတ်တြေံ]]..." 399137 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာနဳနိုတ်တြေံ|နဳနိုတ်တြေံ]] » '''မဝ်ဂျူဂမၠိုၚ်''' :[[:ကဏ္ဍ:မဝ်ဂျူဂမၠိုၚ်|မဝ်ဂျူ]]ဘာသာနဳနိုတ်တြေံ၊ မနွံကဵုလုပ်အဝေါၚ်ကုဒ် Lua နကဵုမကၠောန်ဗဒှ် ကဵု မစဳရေၚ်ယဵုဒုၚ်သ္ပမာန်ဂမၠိုၚ်။ [[ကဏ္ဍ:ဘာသာနဳနိုတ်တြေံဂ]][[ကဏ္ဍ:မဝ်ဂျူဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|န]] 56cvr4jlpronp9l8ivaxmykvua5mtft 399138 399137 2026-07-18T03:10:41Z 咽頭べさ 33 399138 wikitext text/x-wiki [[:ကဏ္ဍ:ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်|ဒၞာဲလုပ်အဝေါၚ်ကဵုပၟိက်]] » [[:ကဏ္ဍ:အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်|အရေဝ်ဘာသာအိုတ်သီုဂမၠိုၚ်]] » [[:ကဏ္ဍ:ဘာသာနဳနိုတ်တြေံ|နဳနိုတ်တြေံ]] » '''မဝ်ဂျူဂမၠိုၚ်''' :[[:ကဏ္ဍ:မဝ်ဂျူဂမၠိုၚ်|မဝ်ဂျူ]]ဘာသာနဳနိုတ်တြေံ၊ မနွံကဵုလုပ်အဝေါၚ်ကုဒ် Lua နကဵုမကၠောန်ဗဒှ် ကဵု မစဳရေၚ်ယဵုဒုၚ်သ္ပမာန်ဂမၠိုၚ်။ [[ကဏ္ဍ:ဘာသာနဳနိုတ်တြေံ]][[ကဏ္ဍ:မဝ်ဂျူဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|န]] hdynb2qtnhi3gb3bnkafjauwc5v1fqu ထာမ်ပလိက်:non-decl-cell/documentation 10 296914 399139 2026-07-18T03:12:35Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်| cell]] </includeonly>" 399139 wikitext text/x-wiki {{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်နဳနိုတ်တြေံအပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဂမၠိုၚ်| cell]] </includeonly> 5mkhq3h9w8b3s6kuiasagvqj36p9sjl ထာမ်ပလိက်:m-self/documentation 10 296915 399141 2026-07-18T03:14:59Z 咽頭べさ 33 ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}}{{uses lua|Module:links/templates}} {{#switch:{{PAGENAME}}|link={{shortcut|Template:l}}|mention={{shortcut|Template:m}}}} This template generates a link to an entry in a given language. It links to a specific language-section on the target page, and applies language-specific formatting. It can also show a number of annotations after the linked term. There are several linking templates: * {{te..." 399141 wikitext text/x-wiki {{documentation subpage}}{{uses lua|Module:links/templates}} {{#switch:{{PAGENAME}}|link={{shortcut|Template:l}}|mention={{shortcut|Template:m}}}} This template generates a link to an entry in a given language. It links to a specific language-section on the target page, and applies language-specific formatting. It can also show a number of annotations after the linked term. There are several linking templates: * {{temp|link}} (shortcut {{temp|l}}). Use this template outside running text, in sections that list entries, such as “[[Wiktionary:Synonyms|Synonyms]]”, “[[Wiktionary:Related terms|Related terms]]”{{,}} and “[[Wiktionary:Descendants|Descendants]]”. * {{temp|mention}} (shortcut {{temp|m}}). Use this template when a particular term is [[mention]]ed ([[w:use–mention distinction|not ''used'']]) within running English text, particularly in “[[Wiktionary:Etymology|Etymology]]” and “[[Wiktionary:Usage notes|Usage notes]]” sections, and occasionally in definitions. * {{temp|l-self}}. Use this template in inflection tables and other templates that list multiple terms. It works the same as {{temp|link}}, but when it links to the same page it is placed on, the link turns bold rather than becoming a link. This mimics the MediaWiki software's behaviour when linking to the same page, but has the full language support of {{temp|link}}. * {{temp|m-self}}. Use this template in templates that mention multiple terms in running text. It displays like {{temp|mention}}, but works the same as {{temp|l-self}} when linked to the current page. * {{temp|ll}}. This template creates a link, but does not add any additional formatting or annotations. There is at the moment no consensus on whether it should be used in entries or not. All of these templates create a link to a language's section of an entry, or to a language-specific sense id created by the template {{temp|senseid}} if the {{para|id}} parameter is used. If the second parameter of {{temp|l}}, {{temp|m}}, {{temp|l-self}}{{,}} or {{temp|m-self}} contains a wikilink (<code><nowiki>[[entryname|text]]</nowiki></code> or <code><nowiki>[[entryname]]</nowiki></code>), then this link will be transformed into a link to the language's section of the entry. For instance, <code><nowiki>the [[word]]</nowiki></code> will be transformed into <code><nowiki>the [[word#English|word]]</nowiki></code> and <code><nowiki>these [[word|words]]</nowiki></code> will be transformed into <code><nowiki>these [[word#English|words]]</nowiki></code>, if the language code supplied to the template is <code>en</code>. The annotations &ndash; transliteration, translation, literal translation{{,}} and part of speech &ndash; are displayed by {{temp|l}}, {{temp|m}}, {{temp|l-self}}{{,}} or {{temp|m-self}} in parentheses after the link. {{temp|ll}} does not support any of these annotations. See also [[Wiktionary:Style guide#Styling templates]] for a list of all the various styling templates with examples. This template uses [[Module:links]] as a back-end, so it supports all the features and bugs of that module. Please see its documentation for more details. ==Parameters== The template takes one required positional parameter and several optional parameters. Note that either the second or third positional parameter should be given, although technically neither is required. ; {{para|1|req=1}} : The language code (see [[Wiktionary:Languages]]) for the language that the term is in. All Wiktionary language codes are supported, including those for constructed and reconstructed languages. ; {{para|2|opt=1}} : The page name to be linked to. The template will automatically remove diacritics and punctuation from the page title, according to the <code>entry_name</code> setting in [[Module:languages]], but will keep them in the displayed text. :* Add {{cd|:}} in front of a page name to link to the page as-is, without any diacritic stripping. :* To link to a reconstructed term, such as {{m+|gem-pro|*dagaz}}, add {{cd|*}} in front of the term. This automatically converts the link to be in the {{cd|Reconstruction}} namespace. :* To link to a mainspace term in a reconstructed language (i.e. a language that is unattested or mostly unattested and which is normally required to put its lemmas in the {{cd|Reconstruction}} namespace), add {{cd|!!}} in front of the term. An example of such a term is {{m+|gmw-pro|!!ᚲᚨᛒᚨ|tr=kaba|ts=kamba}}, which should be linked as {{tl|l|gmw-pro|!!ᚲᚨᛒᚨ|tr=kaba|ts=kamba}} or similar. (Proto-West Germanic is a reconstructed language with a single attested term written in Runic script, normally used for the related Proto-Norse language.) :* For scripts which do not use capitalisation (e.g. Devanagari, Han, Mongolian, etc.), a letter of an automatic transliteration can be capitalised by putting {{cd|^}} before the corresponding character in the term. For example, {{tl|l|zh|^西方}} gives {{l|zh|^西方}}. Please note that this should be used instead of giving a capitalised manual transliteration. :* Unsupported titles (see [[Special:PrefixIndex/Unsupported titles]]) can be linked to, by adding the displayed title, without the <code>Unsupported titles/</code> prefix: for instance, {{temp|m|mul|:}} &rarr; {{m|mul|:}} links to [[Unsupported titles/Colon]]. This feature is made possible by the list found at [[Module:links/data]]. To add new unsupported titles, follow the directions in the module. ; {{para|3|opt=1}} : Alternative text to display as the link title, if different from the page name. Please do not use this only for adding diacritics or punctuation to the word, as the template can automatically remove these. See above. ; {{para|t}} or {{para|4|opt=1}} : A gloss or short translation of the word. <small>The parameter {{para|gloss}} is deprecated for this purpose.</small> ; {{para|sc|opt=1}} : The script code (see [[Wiktionary:Scripts]]) for the script that the term is written in. When no code is given, the template will try to detect the script based on the characters in the term and the scripts in the language's data table (see {{section link|Module:languages#Language:findBestScript}}). In most cases, it will succeed. If it fails, the code <code>None</code> will be used. ; {{para|tr|opt=1}} : Transliteration for non-Latin-script words. When no transliteration is given, the template will try to add a default transliteration when possible. For certain languages, automated transliteration will override the value of this parameter. Use <code>tr=-</code> if you don't want a transliteration to be automatically generated (you shouldn't really ever do this in an entry). ; {{para|ts|opt=1}} : Transcription for non-Latin-script words whose transliteration is markedly different from the actual pronunciation. Should not be used for IPA pronunciations. ; {{para|pos|opt=1}} : A part of speech indication for the term. :* If the value is one of the abbreviations listed in [[Template:head#Part of speech]] (such as {{cd|a}} or {{cd|adj}} for ''adjective'', {{cd|n}} for ''noun'', {{cd|prepphr}} for ''prepositional phrase'', etc.), it will be displayed in the expanded (canonical) form. :* If the value is those same abbreviations followed by an {{cd|f}} (e.g. {{cd|af}} or {{cd|adjf}} for ''adjective form'', or {{cd|nf}} for ''noun form''), it will be displayed in the expanded (canonical) form followed by the word ''form''. :* If the value is a spelled-out part of speech followed by an {{cd|f}} (e.g. {{cd|nounf}} for ''noun form'', {{cd|verbf}} for ''verb form'' or {{cd|proper nounf}} for ''proper noun form''), it will be displayed as the part of speech followed by the word ''form''. This only happens for recognized lemma parts of speech (specifically the singular equivalents of the plural lemma parts of speech listed in {{lua|data.lemmas}} in [[Module:headword/data]]), not for arbitrary words ending in {{cd|f}}. :* Anything else is displayed as-is. ; {{para|ng|opt=1}} : Arbitrary non-gloss explanatory text. This is displayed as-is, in upright text, not inside of quotes. It is recommended to use this in preference to {{para|pos}} for any sort of explanatory text other than a grammatical description. ; {{para|g|opt=1}} : Gender/number specification(s) for the term, if necessary. Separate multiple specifications with a comma (with no space following). You can use inline modifiers {{cd|<l:...>}}, {{cd|<ll:...>}}, {{cd|<q:...>}}, {{cd|<qq:...>}} or {{cd|<ref:...>}} to add labels, qualifiers and/or references to individual gender-number specifications. See examples below, and see [[Module:gender and number]] for the format used. <small>Alternatively, additional gender/number specs can be given in {{para|g2}}, {{para|g3}}, etc., but this is deprecated.</small> ; {{para|lit|opt=1}} : A literal translation for the term. ; {{para|id|opt=1}} : An etymology or sense id for the term, which links to anchors on the page set by the {{temp|etymid}} or {{temp|senseid}} templates. ; {{para|accel-form|opt=1}} : Specifies an accelerated creation tag to be used by the [[WT:ACCEL]] gadget, to automatically generate an entry for a non-lemma form when the link is clicked. For information about acceleration tags, see [[WT:ACCEL#Acceleration tags]]. You should only provide this parameter when using the linking template as part of a headword-line or inflection-table template. Don't use it directly in entries. If the acceleration tag contains a vertical bar <code><nowiki>|</nowiki></code>, use {{temp|!}} instead. ; {{para|accel-translit|opt=1}} : Specifies a manual transliteration of the non-lemma form for use with accelerated creation of entries; see [[WT:ACCEL]] and {{para|accel-form}} above. The value of this parameter goes into param {{para|tr}} of the call to {{temp|head}} in the accelerated entry. You only need to specify this for languages that use a non-Latin script, and only when the auto-generated transliteration is insufficient, incorrect or nonexistent. ; {{para|accel-lemma|opt=1}} : Specifies the lemma corresponding to the non-lemma form for use with accelerated creation of entries; see [[WT:ACCEL]] and {{para|accel-form}} above. The value of this parameter goes into param {{para|2}} of the call to {{temp|inflection of}} in the accelerated entry. It defaults to the name of the current page, and only needs to be specified when the lemma contains additional diacritics that are stripped in order to generate the pagename (as in Latin, Russian, Ancient Greek, Old English, etc.). ; {{para|accel-lemma-translit|opt=1}} : Specifies a manual transliteration of the lemma corresponding to the non-lemma form for use with accelerated creation of entries; see [[WT:ACCEL]] and {{para|accel-form}} above. The value of this parameter goes into param {{para|tr}} of the call to {{temp|inflection of}} in the accelerated entry. You only need to specify this for languages that use a non-Latin script, and only when the auto-generated transliteration is insufficient, incorrect or nonexistent. ; {{para|accel-gender|opt=1}} : Specifies the gender of the non-lemma form for use with accelerated creation of entries; see [[WT:ACCEL]] and {{para|accel-form}} above. The value of this parameter goes into param {{para|g}} of the call to {{temp|head}} in the accelerated entry. You should only rarely specify this. ; {{para|accel-nostore|1}} : For use with accelerated creation of entries. Place this on links that appear in the collapsed state of collapsible tables; see [[WT:ACCEL]]. ==Examples== {|class="wikitable" ! Wikitext !! Output !! Comment |- | {{demo2c|<nowiki>{{l|cs|háček}}</nowiki>}} | Simple example. |- | {{demo2c|<nowiki>{{l|en|go|went}}</nowiki>}} | Showing alternative text; links to [[go]]. |- | {{demo2c|<nowiki>{{l|en|[[God]] be [[with]] [[you]]}}</nowiki>}} | With wikilinks in input; links individual words [[God]], [[with]] and [[you]]. |- | {{demo2c|<nowiki>{{l|la|exemplī grātiā}}</nowiki>}} | Removal of diacritics; links to {{l|la|exempli gratia}}. |- | {{demo2c|<nowiki>{{l|ine-pro|*bʰréh₂tēr}}</nowiki>}} | Reconstructed words; links to [[Reconstruction:Proto-Indo-European/bʰréh₂tēr]]. |- | {{demo2c|<nowiki>{{l|la|similis|t=like}}</nowiki>|fmt=0}} ''or'' {{demo2c|<nowiki>{{l|la|similis||like}}</nowiki>}} | Translation. |- | {{demo2c|<nowiki>{{l|ru|ру́сский||Russian|g=m}}</nowiki>}} | Miscellaneous / with many options. |- | {{demo2c|<nowiki>{{l|ca|amor|g=m,f<l:<<archaic>> or <<poetic>>>}}</nowiki>}} | Multiple genders with inline modifier label modifying the second gender. |- | {{demo2c|<nowiki>{{l-self|ang|{{{dat_pl_f}}}|accel-form=dat{{!}}f{{!}}p|accel-lemma={{{nom_sg_m}}}}}</nowiki>}} | Use of accelerators (in an inflection-table entry). |} ==Wikicode== {{temp|l}}, {{temp|m}}, {{temp|l-self}}{{,}} or {{temp|m-self}} all add HTML tags in addition to creating a link. {{temp|l|en|word}} outputs the wikicode {{code|html|2=<span class="Latn" lang="en">[[word#English|word]]</span>}}, and {{temp|m|en|word}} outputs {{code|html|2=<i class="Latn mention" lang="en">[[word#English|word]]</i>}}. {{temp|l-self}} and {{temp|m-self}} do the same, except they don't create a link if the page being linked to is the same as the current page. This HTML is applied by [[Module:script utilities]]; for more, see [[Module:script utilities/documentation#tag text]]. ==Customization== The outcome of [[Wiktionary:Votes/2007-10/style for mentioned terms]] determined the default style for terms mentioned with the {{temp|mention}}/{{temp|m}} template. The preliminary default for Latin-script (i.e. Roman script, not just Latin-language) terms and phrases is italics. Readers can easily toggle the output from italics to bold by selecting “'''Show other Latin (Roman) script mentions in bold'''” from [[WT:PREFS]]. Alternatively, or for more advanced customization, readers can add styles to their style sheets as described in [[WT:CUSTOM]]: *For plain format (e.g.: From <span style='font-style:normal'>[[mot#French|mot]]</span> + ...): *: <code>.mention-Latn { font-style: normal }</code> * For bold format (e.g.: From <span style='font-weight:bold'>[[mot#French|mot]]</span> + ...): *: <code>.mention-Latn { font-weight: bold; font-style: normal }</code> * For italicized format (e.g.: From <span style='font-style:italic'>[[mot#French|mot]]</span> + ...): *: <code>.mention-Latn { font-style: italic }</code> Further, the default style of the subsequent English translation glosses is in double quotes (pending a vote to approve this template). Readers can easily change the output to single quotes by selecting “'''Show English glosses for mentioned terms in single quotes'''” from [[WT:PREFS]]. ==See also== * {{temp|m+}} – to create a link like {{temp|m}} but with the language name * {{temp|user}} – for mentioning ''users'' * {{temp|mention-gloss}} ({{temp|m-g}}) – to create quotation marks (for glosses or translations) that are formatted with the same HTML code as used by {{temp|link}} or {{temp|mention}} * {{temp|zh-l}} – a similar template specialized for Chinese * {{temp|ltc-l}} – a similar template specialized for Middle Chinese * {{temp|ja-l}} – a similar template specialized for Japanese * {{temp|ko-l}} – a similar template specialized for Korean * {{temp|fa-l}} – a similar template specialized for Persian * {{temp|th-l}} – a similar template specialized for Thai * {{temp|vi-l}} – a similar template specialized for Vietnamese * {{temp|section link}} – to link to a section of a page ==Language-specific subtemplates== There are high performance versions of this template for several languages. All of them take two parameters: the word and the alternative text. Some may support transliteration also, but they should not support any other parameters for speed reasons. Using any of these subtemplates is sometimes necessary for pages that have many links, since they are faster. For normal use, there is no need for this, and the regular {{temp|l}} should be used instead. {{Special:PrefixIndex/{{#titleparts:Template:l|1|1}}/}} {{Special:PrefixIndex/{{#titleparts:{{FULLPAGENAME}}|1|1}}/}} ==TemplateData== {{TemplateData header}} <templatedata> { "params": { "1": { "label": "language code", "description": "The language code (see Wiktionary:Languages) for the language that the term is in. All languages are supported, including constructed and reconstructed ones.", "type": "string", "required": true, "example": "en" }, "2": { "type": "wiki-page-name", "label": "entry to link", "description": "The page name to be linked to", "example": "house", "required": true }, "3": { "label": "displayed text", "description": "Alternative text to display as the link title, if different from the page name", "type": "string", "suggested": true }, "4": { "aliases": [ "t", "gloss" ], "label": "gloss", "description": "A gloss or short translation of the term", "type": "string", "suggested": true }, "lit": { "label": "literal translation", "description": "A literal translation of the term", "type": "string" }, "id": { "label": "sense ID", "description": "A sense ID for the term, which links to anchors on the page set by the {{senseid}} template.", "type": "string", "example": "Q20502" }, "sc": { "label": "script code", "description": "(optional) The script code (see [[Wiktionary:Scripts]]) for the script that the term is written in. The template can usually figure this out itself, so this is rarely needed. When no code is given, the template will try to detect the script based on the characters of the word, and if it fails to detect the script, the code <code>None</code> will be used.", "type": "string", "example": "Latn" }, "pos": { "label": "part of speech", "description": "A part of speech indication for the term", "type": "string", "example": "noun", "suggested": true }, "tr": { "label": "transliteration", "description": "Transliteration for non-Latin-script words. When no transliteration is given, the template will try to add a default transliteration when possible. For certain languages, automated transliteration will override the value of this parameter. Use <code>tr=-</code> if you don't want a transliteration to be automatically generated (you shouldn't really ever do this in an entry).", "type": "string", "suggested": true }, "g": { "label": "gender and number", "description": "Gender and number; see [[Module:gender and number]] for details.", "type": "string" } }, "description": "This template generates a link to an entry in a given language. It links to a specific language-section on the target page, and applies language-specific formatting. It can also show a number of annotations after the linked term.", "format": "inline" } </templatedata> <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်မနွံဒၟံၚ်အပ္ဍဲလေန်ဂမၠိုၚ်|l]] </includeonly> 4ggmdtf67jx8mshz0oj7pm0spgxt0dr